用于插入特定 BigQuery 数据集的 IAM 自定义角色
IAM Custom Role for Inserting to Specific BigQuery Dataset
我有几个将分析事件写入 BigQuery 数据集的客户项目。设置是这样组织的:
1) 每个 GCP 项目都有自己的一组 GCP 资源,其中一些资源使用 BigQuery 插入报告分析 API。
2) 有一个 "Main Analytics" 项目以标准化 table 的方式从不同项目中获取所有数据(所有项目都以相同的数据格式写入)。
我在 "Main Analytics" 中创建了一个自定义 IAM 角色,具有执行行插入操作所需的权限:
bigquery.datasets.get
bigquery.tables.get
bigquery.tables.updateData
对于每个客户项目,我都创建了一个具有上述角色的唯一服务帐户。这允许任何项目中的每个资源进行身份验证和插入行(但不是 create/delete tables)。
问题:我真正想做的是将服务帐户限制为只写入一个包含所有数据的特定数据集。上述 IAM 角色允许服务帐户列出 "Main Analytics" 项目中的所有 datasets/tables 并插入其中。
如果我使用 dataset permissions - 将服务帐户电子邮件作为用户添加到数据集 ACL - 那么它必须是 WRITER
数据集角色,这将允许服务帐户创建和删除tables 在太宽泛的数据集中。
将 IAM 角色与数据集权限结合起来形成联合,因此更广泛的 WRITER
权限对更窄的 IAM 角色生效。
无论如何,我可以配置 roles/permissions 以允许每个服务帐户插入和仅插入到特定数据集?
您可以从自定义 IAM 角色中删除 bigquery.datasets.get
权限,这样他们就无法列出所有数据集,然后在数据集的权限中赋予 READER
角色而不是 WRITER
给该特定数据集的用户。
我有几个将分析事件写入 BigQuery 数据集的客户项目。设置是这样组织的:
1) 每个 GCP 项目都有自己的一组 GCP 资源,其中一些资源使用 BigQuery 插入报告分析 API。
2) 有一个 "Main Analytics" 项目以标准化 table 的方式从不同项目中获取所有数据(所有项目都以相同的数据格式写入)。
我在 "Main Analytics" 中创建了一个自定义 IAM 角色,具有执行行插入操作所需的权限:
bigquery.datasets.get
bigquery.tables.get
bigquery.tables.updateData
对于每个客户项目,我都创建了一个具有上述角色的唯一服务帐户。这允许任何项目中的每个资源进行身份验证和插入行(但不是 create/delete tables)。
问题:我真正想做的是将服务帐户限制为只写入一个包含所有数据的特定数据集。上述 IAM 角色允许服务帐户列出 "Main Analytics" 项目中的所有 datasets/tables 并插入其中。
如果我使用 dataset permissions - 将服务帐户电子邮件作为用户添加到数据集 ACL - 那么它必须是 WRITER
数据集角色,这将允许服务帐户创建和删除tables 在太宽泛的数据集中。
将 IAM 角色与数据集权限结合起来形成联合,因此更广泛的 WRITER
权限对更窄的 IAM 角色生效。
无论如何,我可以配置 roles/permissions 以允许每个服务帐户插入和仅插入到特定数据集?
您可以从自定义 IAM 角色中删除 bigquery.datasets.get
权限,这样他们就无法列出所有数据集,然后在数据集的权限中赋予 READER
角色而不是 WRITER
给该特定数据集的用户。