我已使用 GCP UI 为特定项目设置了一个服务帐号Project X
。之内Project X
有3个数据集:
Dataset 1
Dataset 2
Dataset 3
如果我分配角色BigQuery Admin
to Project X
目前所有 3 个数据集都继承了这一点。
目前,所有这些数据集都继承分配给项目级别服务帐户的权限。有没有办法修改服务帐户的权限,使其只能访问指定的数据集?例如允许访问Dataset 1
但不是Dataset 2
or Dataset 3
.
这种类型的配置可能吗?
我尝试在用户界面中添加一个条件,但是当我使用Name
资源类型并将值设置为等于Dataset 1
我无法访问任何数据集 - 可能该值不正确。或者数据集不是有效的名称资源。
UPDATE
添加一些关于我在发布之前已经尝试过的内容的更多细节,以及关于我正在做的事情的更多细节。
对于我的特定用例,我尝试执行 SQL 查询以及通过 API(使用 Python)修改 BigQuery 中的表。
Case A:我创建了一个具有以下角色的服务帐户“BigQuery 管理员”.
此角色将传播到项目内的所有数据集 - 该属性是继承的,我无法从任何数据集中删除此服务帐户角色。
在本例中,我能够使用 Python API 查询所有数据集和表 - 正如您所期望的那样。
Case B:我创建一个服务帐户无默认角色.
不会传播任何角色,我可以通过单击将角色分配给特定数据集“共享数据集”UI 中的选项来分配“BigQuery 管理员”对他们的作用。
在这种情况下,我无法查询任何数据集或表,如果我尝试,则会收到以下错误:
*Forbidden: 403 POST https://bigquery.googleapis.com/bq/projects/project-x/jobs: Access Denied: Project X: User does not have bigquery.jobs.create permission in project Project X.*
即使需要权限(bigquery.jobs.create
在这种情况下)存在我想要的数据集,我无法查询数据,因为看起来bigquery.jobs.create
使用 API 还需要项目级别的许可。