BigQuery数据集的自定义角色

时间:2017-12-13 23:44:16

标签: security google-bigquery google-cloud-platform

是否可以(以编程方式或通过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非常不稳定且文档记录很差......如果有人知道如何做到这一点,我将不胜感激。

1 个答案:

答案 0 :(得分: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   到数据集。