是否可以(以编程方式或通过UI)为BigQuery数据集分配自定义角色?我们希望在项目中具有更细粒度的访问控制,但我找不到任何支持这些控件的指示,或者它们不受支持。 "共享数据集" UI n BigQuery没有提供明确的方法来指定哪些角色可以访问。
这是迄今为止我能做的最好的,但它会引发关于entity_id的错误
for dataset in datasets:
dataset_ref = bigquery.Dataset(dataset, frankie_client)
entry = bigquery.AccessGrant(
role='projects/xxxxxx/roles/custom_role1',
entity_type='specialGroup',
entity_id='projects/xxxxxx/roles/custom_role1')
assert entry not in dataset_ref.access_grants
entries = list(dataset_ref.access_grants)
entries.append(entry)
dataset_ref.access_grants = entries
dataset = dataset_ref.update() # API request
assert entry in dataset.access_entries
顺便说一句,谷歌的API非常不稳定且文档记录很差......如果有人知道如何做到这一点,我将不胜感激。
答案 0 :(得分:1)
*最后更新。
有一个很长的文档页面描述了所有角色,并讨论了自定义角色。
https://cloud.google.com/bigquery/docs/access-control
我认为您错过的是您需要在数据集上应用组。如果你正确地设置了组,你可以做很多灵活的事情。
查看链接页面中的示例场景部分。这解释了你的用例。
对数据集中数据的读写权限
CompanyProject
是一个包含dataset1
和dataset2
的项目。 AnalystGroup1
是一组仅在dataset1
上工作的数据科学家,AnalystGroup2
是仅适用于dataset2
的群组。数据科学家应该只能访问他们使用的数据集,并且不应该运行查询。
对数据集的完全访问
CompanyProject:dataset1
将AnalystGroup1
添加到预定义角色bigquery.dataOwner
。CompanyProject:dataset2
将AnalystGroup2
添加到预定义角色bigquery.dataOwner
。除了预定义的角色,BigQuery还支持自定义角色。有关更多信息,请参阅Cloud IAM文档中的Creating and Managing Custom Roles。
要添加更多内容,在IAM page中,您可以更轻松地看到已分配用户的角色。您创建的自定义角色分组在自定义标签下。
<强>更新强>
我的documentation之后issue ticket已得到改善。
注意:目前,您无法将自定义角色应用于数据集。更多 有关数据集访问控制的信息,请参阅Assigning access controls 到数据集。