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

时间:2019-01-02 13:39:31

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

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

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

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

我已在“ Main Analytics”中创建了一个自定义IAM角色,并具有执行行插入操作所需的权限:

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

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

问题:我真正想做的是限制服务帐户只写到获取所有数据的特定数据集。上述IAM角色允许服务帐户列出“ Main Analytics”项目中的所有数据集/表,并将其插入其中。

如果我使用dataset permissions-将服务帐户电子邮件作为用户添加到数据集ACL-那么它将必须是WRITER数据集角色,这将允许服务帐户在其中创建和删除表数据集太宽了。

将IAM角色与数据集权限结合使用会产生并集,因此,较宽的WRITER权限将对较窄的IAM角色生效。

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

1 个答案:

答案 0 :(得分:0)

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