服务帐户是否需要与它将查询的数据集在同一项目中的 BQ 作业用户角色?

Does service account need BQ job user role in the same project as datasets it will query?

我的 GCP 专家告诉我,我的 SA 只需要在我要查询的数据集所在的项目中具有数据查看者角色,只要它在任何其他项目中具有作业用户角色,查询作业就应该可以工作。

但是当我 运行 查询时我得到这个错误:

google.api_core.exceptions.Forbidden:403 POST https://bigquery.googleapis.com/bigquery/v2/projects/...:访问被拒绝:项目...:用户在项目中没有 bigquery.jobs.create 权限....

那么 SA 是否需要数据集所在的完全相同的项目中的 BQ 作业用户角色?

为了避免您遇到的错误,必须具有 bigquery.jobs.create 权限,如您在错误中所见。您有两个选择:

1.- Create a custom 具有此类权限的角色。

2.- Add BigQuery 作业用户或 BigQuery 用户角色。他们都拥有您需要的 bigquery.jobs.create 权限。

您的 GCP 专家是正确的!

as long as it has job user role in any other project ...

您只需要确保您是 运行 来自该 SA 具有工作用户角色的项目中的工作。此项目将支付 运行 个作业

的费用