Google BigQuery:授予服务帐户权限以仅在某些特定数据集中创建作业
Google BigQuery: grant service account permissions to create jobs in only some specific datasets
问题: 我在 BigQuery 中有一个项目,其中存储了我的所有数据。在这个项目中,我创建了多个包含不同视图的数据集。现在我想使用不同的服务帐户通过 grafana 查询包含不同视图的不同数据集(如果重要的话)。这些用户应该只能查询为他们准备的视图(以及特定数据集)。
我尝试了什么: 我在数据集级别(以及项目级别的 BigQuery Meatadata Viewer)授予了 BigQuery 用户、查看者或编辑权限(我尝试了所有这些权限) .当我查询视图时,收到错误:
User does not have bigquery.jobs.create permission in project xy
。
问题:我不清楚在项目级别授予bigquery.jobs.create
权限是否会允许用户查询所有数据集,而不是只查询我想要的数据集他可以访问。
有什么方法可以让用户只在单个数据集上创建作业吗?
我们遇到了同样的问题,解决方法是创建自定义角色并将自定义角色分配给特定数据集。
您可以将 bigquery.user
角色授予特定数据集,如 this guide. The bigquery.user
role contains the bigquery.jobs.create permission as well as other basic permissions related to querying datasets. You can check the full list of permissions for this role in this list.
中所示
如上所述,您还可以按照 this piece of documentation.
创建仅具有您想要的确切权限的自定义角色
2021 年 10 月更新
我刚刚看到这个问题当时对我来说确实没有答案,但仍然有很多观点。我相信自从我提出这个问题后,可能性发生了一些变化,所以这就是我现在的处理方式:
- 我在项目级别为相应的服务帐户赋予
roles/bigquery.jobUser
角色。这通常允许它创建作业,但是由于我没有授予任何其他权限,它还不能查询数据。
- 然后我在数据集级别赋予角色
roles/bigquery.dataViewer
。这使得服务帐户可以查询 仅 我授予权限的数据集。
- 也可以在 table 级别上授予
roles/bigquery.dataViewer
,这将限制对 仅 特定 table 的访问权限。
如果您希望服务帐户不仅可以查询(查看)数据,还可以插入或更改数据,例如,将 roles/bigquery.dataViewer
替换为具有必要权限的角色(或分配该角色另外)。
如何授予权限:
问题: 我在 BigQuery 中有一个项目,其中存储了我的所有数据。在这个项目中,我创建了多个包含不同视图的数据集。现在我想使用不同的服务帐户通过 grafana 查询包含不同视图的不同数据集(如果重要的话)。这些用户应该只能查询为他们准备的视图(以及特定数据集)。
我尝试了什么: 我在数据集级别(以及项目级别的 BigQuery Meatadata Viewer)授予了 BigQuery 用户、查看者或编辑权限(我尝试了所有这些权限) .当我查询视图时,收到错误:
User does not have bigquery.jobs.create permission in project xy
。
问题:我不清楚在项目级别授予bigquery.jobs.create
权限是否会允许用户查询所有数据集,而不是只查询我想要的数据集他可以访问。
有什么方法可以让用户只在单个数据集上创建作业吗?
我们遇到了同样的问题,解决方法是创建自定义角色并将自定义角色分配给特定数据集。
您可以将 bigquery.user
角色授予特定数据集,如 this guide. The bigquery.user
role contains the bigquery.jobs.create permission as well as other basic permissions related to querying datasets. You can check the full list of permissions for this role in this list.
如上所述,您还可以按照 this piece of documentation.
创建仅具有您想要的确切权限的自定义角色2021 年 10 月更新
我刚刚看到这个问题当时对我来说确实没有答案,但仍然有很多观点。我相信自从我提出这个问题后,可能性发生了一些变化,所以这就是我现在的处理方式:
- 我在项目级别为相应的服务帐户赋予
roles/bigquery.jobUser
角色。这通常允许它创建作业,但是由于我没有授予任何其他权限,它还不能查询数据。 - 然后我在数据集级别赋予角色
roles/bigquery.dataViewer
。这使得服务帐户可以查询 仅 我授予权限的数据集。 - 也可以在 table 级别上授予
roles/bigquery.dataViewer
,这将限制对 仅 特定 table 的访问权限。
如果您希望服务帐户不仅可以查询(查看)数据,还可以插入或更改数据,例如,将 roles/bigquery.dataViewer
替换为具有必要权限的角色(或分配该角色另外)。
如何授予权限: