【问题标题】:BigQuery - Inerheritance of PermissionsBigQuery - 权限继承
【发布时间】:2022-09-23 03:03:51
【问题描述】:

TL;博士

我们正在寻找一种让服务帐户从多个其他服务帐户继承 BQ 读取权限的方法。模仿只适用于一个。

场景

我们公司遵循data mesh 方法,我们的产品团队负责将他们的数据集成到 BigQuery 中。产品所有者也被认为是数据的所有者。因此,由产品所有者决定授予谁访问数据的权限。

在分析团队中,我们通常在 BigQuery 查询中组合来自多个源系统的数据。我们的 ETL 进程在 kubernetes 集群上运行,每个进程都使用一个单独的服务帐户。这为我们提供了细粒度的访问控制,因为每个进程对数据的访问仅限于他们真正需要的那些对象。这种设计还有助于我们进行调试和成本控制。另一方面,这会导致源端出现问题:

问题

每次我们设计一个新的流程时,我们都需要向数据所有者索取许可。他们已经同意我们的健康级别的产品团队/系统可以访问他们的数据,因此这个授权过程非常繁琐,并且使数据所有者感到困惑。

我们希望每个拥有必要 BQ 读取权限的源对象只有一个“代理”服务帐户。然后将设置进程的服务帐户以从它们需要访问的那些 BQ 源的代理服务帐户继承权限。

使用impersonation 仅在它只是一个源系统时才有帮助,但我们的查询经常使用多个源系统。

使用 Google 网上论坛无济于事

我们讨论了一个解决方案,在该解决方案中,我们为要读取的每个源系统设置了一个 google 组。 BigQuery Data Reader 角色将分配给该组。反过来,需要这些权限的服务帐户将被添加到该组中。但是,公司政策不允许将服务帐户添加到 google 组。此外,我们的产品团队不能自己管理(创建)google 组,因此这种方法缺乏灵活性。

实施粗粒度方法

一种方法是使用更粗粒度的访问控制,即仅对所有 ETL 流程使用一个服务帐户。我们可以将进程名称作为标签添加到查询中,以涵盖调试和成本控制部分。但是,如果可能的话,我们更喜欢一种方法,其中进程只能访问尽可能少的数据对象。

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


    【解决方案1】:

    你没有简单的解决方案。

    数据治理已到位,以控制数据的质量、来源和访问。要求他们访问数据是正常的。

    特殊组可以访问所有数据源(在向每个数据网格实例的数据管理团队提出请求后)。

    但是,不允许使用具有服务帐户的组。

    我看到的唯一解决方案是使用在所有数据网格实例上授权的服务帐户,然后您模拟它来访问所有源。

    它对于可追溯性来说并不是最完美的,但我没有看到任何其他好的解决方案。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2020-06-03
      • 2010-12-04
      • 2013-07-18
      • 2015-12-05
      • 2014-09-21
      • 2021-01-17
      • 2012-09-03
      相关资源
      最近更新 更多