【问题标题】:Custom Roles for BigQuery DatasetsBigQuery 数据集的自定义角色
【发布时间】:2019-08-06 14:00:57
【问题描述】:

是否可以(以编程方式或通过 UI)将自定义角色分配给 BigQuery 数据集?我们希望在项目中拥有更细粒度的访问控制,但我找不到任何迹象表明它们受支持或不受支持。 BigQuery 中的“共享数据集”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】:

*最后更新

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

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

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

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

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

CompanyProject 是一个包含dataset1dataset2 的项目。 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 到数据集。

【讨论】:

  • 我认为这个问题专门针对 BigQuery 中的自定义角色(而不是关于预定义角色)。你能在这里详细说明Custom Roles吗?
  • 是的,没错。虽然我很欣赏这里的答案,但我特别询问如何在数据集级别应用自定义角色,文档中的任何地方都没有描述。您提供的链接 here 严重不足(谷歌的错不是你的)来描述如何在 bigquery 中应用这些,或者这是否可能。我在创建角色时没有遇到任何问题。
  • 谢谢@Pentium10 - 现在说得通了。老实说,我对自己感到困惑,因为无法找到如何让它发挥作用,所以我想我可能会遗漏一些东西
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2012-04-24
  • 2018-07-27
  • 1970-01-01
  • 1970-01-01
  • 2015-01-09
  • 2020-09-05
  • 1970-01-01
相关资源
最近更新 更多