本页介绍了以下用例:在将数据从 Cloud Storage 迁移到 BigQuery 时,您可以在命名空间级别控制对 Google Cloud 资源的访问权限。
默认情况下,为了控制对 Google Cloud 资源的访问权限,Cloud Data Fusion 中的命名空间会使用 Cloud Data Fusion API Service Agent。
为了更好地实现数据隔离,您可以将自定义 IAM 服务账号(称为“每个命名空间的服务账号”)与每个命名空间相关联。借助自定义 IAM 服务账号(不同命名空间的服务账号可能不同),您可以控制命名空间之间对 Google Cloud 资源的访问权限,以便在 Cloud Data Fusion 中执行流水线设计时操作(例如流水线预览、Wrangler 和流水线验证)。
如需了解详情,请参阅使用命名空间服务账号进行访问权限控制。
场景
在此用例中,营销部门使用 Cloud Data Fusion 将数据从 Cloud Storage 迁移到 BigQuery。
营销部门有三个团队:A、B 和 C。 您的目标是建立一种结构化的方法,通过分别与每个团队(A、B 和 C)对应的 Cloud Data Fusion 命名空间来控制 Cloud Storage 中的数据访问权限。
解决方案
以下步骤展示了如何控制对 Google Cloud 资源的访问权限 命名空间服务账号,以防止集群之间 不同团队的数据存储区
将 Identity and Access Management 服务账号关联到每个命名空间
在命名空间中为每个团队配置一个 IAM 服务账号 (请参阅 配置命名空间服务账号):
为 Team A 添加自定义服务账号(例如
team-a@pipeline-design-time-project.iam.gserviceaccount.com
),以设置访问权限控制。针对团队 B 和团队 C 重复配置步骤,使用类似的自定义服务账号设置访问控制。
限制对 Cloud Storage 存储分区的访问权限
通过授予适当的权限来限制对 Cloud Storage 存储桶的访问权限:
- 为 IAM 服务账号授予
storage.buckets.list
权限,需要此权限才能列出项目中的 Cloud Storage 存储分区。 如需了解详情,请参阅 列出存储分区。 向 IAM 服务账号授予访问特定存储桶中对象的权限。
例如,授予 Storage Object Viewer 该角色分配给与 存储桶
team_a1
上的命名空间team_A
。借助此权限,Team A 可以在隔离的设计时间环境中查看和列出该存储桶中的对象和托管文件夹及其元数据。
在相应命名空间中创建 Cloud Storage 连接
在每个团队的命名空间中创建 Cloud Storage 连接:
在 Google Cloud 控制台中,前往 Cloud Data Fusion 实例页面,然后在 Cloud Data Fusion 网页界面中打开一个实例。
依次点击系统管理员 > 配置 > 命名空间。
点击要使用的命名空间,例如 Team A 的命名空间。
点击连接标签页,然后点击添加连接。
选择 GCS 并配置连接。
为每个命名空间创建一个 Cloud Storage 连接,方法是 重复前面的步骤。然后,每个团队都可以与该资源的隔离副本进行交互,以执行其设计时操作。
验证每个命名空间的设计时隔离
团队 A 可以在设计时通过访问 Cloud Storage 来验证隔离 存储分区的各命名空间中:
在 Google Cloud 控制台中,前往 Cloud Data Fusion 实例页面,然后在 Cloud Data Fusion 网页界面中打开一个实例。
点击系统管理员 > 配置 > 命名空间。
选择一个命名空间,例如 Team A 命名空间
team_A
。点击 > Wrangler。
菜单点击 GCS。
在存储桶列表中,点击
team_a1
存储桶。您可以查看存储分区列表,因为团队 A 命名空间
storage.buckets.list
权限。点击存储桶后,即可查看其中的内容,因为团队 A 具有 Storage Object Viewer 角色。
返回存储桶列表,然后点击
team_b1
或team_c1
存储桶。由于您使用 Team A 的命名空间服务账号为其隔离了此设计时资源,因此访问权限受到限制。
后续步骤
- 详细了解 Cloud Data Fusion 中的安全功能。