2

我有几个将分析事件写入 BigQuery 数据集的客户项目。设置是这样组织的:

1) 每个 GCP 项目都有自己的一组 GCP 资源,其中一些资源使用 BigQuery 插入 API 报告分析。

2) 有一个“主分析”项目,它以标准化表的形式从不同项目中获取所有数据(所有项目都以相同的数据格式编写)。

我在“主要分析”中创建了一个自定义 IAM 角色,具有执行行插入操作所需的权限:

bigquery.datasets.get
bigquery.tables.get
bigquery.tables.updateData

对于每个客户项目,我都创建了一个具有上述角色的唯一服务帐户。这允许任何项目中的每个资源都可以验证和插入行(但不能创建/删除表)。

问题:我真正想做的是将服务帐户限制为仅写入接收所有数据的特定数据集。上述 IAM 角色允许服务帐户列出“主要分析”项目中的所有数据集/表并插入其中。

如果我使用数据集权限- 将服务帐户电子邮件作为用户添加到数据集 ACL - 那么它必须是WRITER数据集角色,这将允许服务帐户在数据集中创建和删除过于广泛的表。

将 IAM 角色与数据集权限组合会产生一个联合,因此更广泛的WRITER权限对更窄的 IAM 角色生效。

无论如何,我可以配置角色/权限以允许每个服务帐户插入并仅插入特定数据集?

4

1 回答 1

1

您可以从自定义 IAM 角色中删除bigquery.datasets.get 权限,以便他们无法列出所有数据集,然后在数据集的权限中将READER角色授予WRITER该特定数据集的用户,而不是授予用户。

于 2019-01-03T16:24:46.420 回答