添加roles/bigquery.jobs.create角色报错,求Unix Shell下的解决办法
解决方案
roles/bigquery.jobs.create这个预定义角色无法在项目IAM层级绑定,因为它的适用资源不是项目,而是BigQuery作业本身。要实现提交BigQuery查询的需求,可采用以下两种Unix Shell可行方案:
方案1:使用包含目标权限的预定义项目级角色
roles/bigquery.user预定义角色包含bigquery.jobs.create权限,且支持在项目层级绑定,直接执行以下命令:
gcloud projects add-iam-policy-binding 你的项目ID \ --member="user:你的邮箱@域名.com" \ --role="roles/bigquery.user"
(如果是服务账号,把user:换成serviceAccount:,格式为serviceAccount:你的服务账号@你的项目ID.iam.gserviceaccount.com)
方案2:创建仅包含目标权限的自定义角色
如果只需要bigquery.jobs.create这一个权限,可自定义角色后绑定:
- 创建角色配置文件
bigquery-job-creator.yaml:
title: "BigQuery作业创建者" description: "授予创建BigQuery作业的权限" includedPermissions: - bigquery.jobs.create
- 在项目中创建该自定义角色:
gcloud iam roles create bigquery.jobCreator \ --project=你的项目ID \ --file=bigquery-job-creator.yaml
- 绑定自定义角色到目标身份:
gcloud projects add-iam-policy-binding 你的项目ID \ --member="user:你的邮箱@域名.com" \ --role="projects/你的项目ID/roles/bigquery.jobCreator"
补充:如果需要访问数据集/表数据
如果你的查询需要读取特定数据集或表的数据,还需在数据集层级添加数据访问权限,用bq CLI执行:
bq add-iam-policy-binding 你的项目ID:你的数据集名称 \ --member="user:你的邮箱@域名.com" \ --role="roles/bigquery.dataViewer"
内容的提问来源于stack exchange,提问作者Mr.TK
相关产品推荐
相关产品推荐

