用于插入特定BigQuery数据集的IAM自定义角色



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

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

2) 有一个"主分析"项目,它将不同项目的所有数据都放在一个标准化的表中(所有项目都以相同的数据格式编写)。

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

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

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

问题:我真正想做的是限制服务帐户只能写入一个特定的数据集,该数据集可以获取所有数据。上述IAM角色允许服务帐户列出"主分析"项目中的所有数据集/表,并插入其中。

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

将IAM角色与数据集权限相结合会导致并集,因此较宽的WRITER权限会比较窄的IAM角色生效。

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

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

最新更新