BigQuery数据集的自定义角色

问题描述 投票:1回答:1

是否可以(以编程方式或通过UI)为BigQuery数据集分配自定义角色?我们希望在项目中具有更细粒度的访问控制,但我找不到任何支持这些控件的指示,或者它们不受支持。 Big share的“共享数据集”UI没有提供明确的方法来指定哪些角色可以访问。

这是迄今为止我能做的最好的,但它会抛出有关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非常不稳定,文档记录很差....如果有人知道如何做到这一点,将不胜感激。

security google-bigquery google-cloud-platform
1个回答
1
投票

*最后更新。

有一个很长的文档页面描述了所有角色,并讨论了自定义角色。

https://cloud.google.com/bigquery/docs/access-control

我想你错过的是你需要在数据集上应用一个组。如果你正确地设置了组,你可以做很多灵活的事情。

查看链接页面中的示例场景部分。这有你的用例解释。

对数据集中数据的读写访问权限

CompanyProject是一个包括dataset1dataset2的项目。 AnalystGroup1是一组数据科学家,他们只在dataset1工作,AnalystGroup2是一个只在dataset2工作的团体。数据科学家应该只能访问他们所处理的数据集,并且不应该能够运行查询。

完全访问数据集

  • 在数据集上CompanyProject:dataset1AnalystGroup1添加到预定义角色bigquery.dataOwner
  • 在数据集上CompanyProject:dataset2AnalystGroup2添加到预定义角色bigquery.dataOwner

除了预定义的角色,BigQuery还支持自定义角色。有关更多信息,请参阅Cloud IAM文档中的Creating and Managing Custom Roles

要在IAM page中添加更多内容,您可以更轻松地看到已分配用户的角色。您创建的自定义角色分组在“自定义”标签下。

enter image description here

更新

在我的documentation之后,issue ticket得到了改善。

注意:目前,您无法将自定义角色应用于数据集。有关数据集访问控制的更多信息,请参阅Assigning access controls到数据集。

© www.soinside.com 2019 - 2024. All rights reserved.