使用场景:使用命名空间服务账号进行访问权限控制

本页介绍了以下用例:在将数据从 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。

显示 Cloud Storage 源、Wrangler 转换和 BigQuery 接收器的数据流水线。

营销部门有三个团队:A、B 和 C。 您的目标是建立一种结构化的方法,通过分别与每个团队(A、B 和 C)对应的 Cloud Data Fusion 命名空间来控制 Cloud Storage 中的数据访问权限。

解决方案

以下步骤展示了如何控制对 Google Cloud 资源的访问权限 命名空间服务账号,以防止集群之间 不同团队的数据存储区

将 Identity and Access Management 服务账号关联到每个命名空间

在命名空间中为每个团队配置一个 IAM 服务账号 (请参阅 配置命名空间服务账号):

  1. 为 Team A 添加自定义服务账号(例如 team-a@pipeline-design-time-project.iam.gserviceaccount.com),以设置访问权限控制。

    为团队 A 配置服务账号。
    图 1:为 Team A 添加自定义服务账号。
  2. 针对团队 B 和团队 C 重复配置步骤,使用类似的自定义服务账号设置访问控制。

限制对 Cloud Storage 存储分区的访问权限

通过授予适当的权限来限制对 Cloud Storage 存储桶的访问权限:

  1. 为 IAM 服务账号授予 storage.buckets.list 权限,需要此权限才能列出项目中的 Cloud Storage 存储分区。 如需了解详情,请参阅 列出存储分区
  2. 向 IAM 服务账号授予访问特定存储桶中对象的权限。

    例如,授予 Storage Object Viewer 该角色分配给与 存储桶 team_a1 上的命名空间 team_A。借助此权限,Team A 可以在隔离的设计时间环境中查看和列出该存储桶中的对象和托管文件夹及其元数据。

    在“存储分区详情”页面上授予该角色。
    图 2:在 Cloud Storage 存储分区中 页面上,将团队添加为主账号,并分配 Storage Object User 角色。

在相应命名空间中创建 Cloud Storage 连接

在每个团队的命名空间中创建 Cloud Storage 连接:

  1. 在 Google Cloud 控制台中,前往 Cloud Data Fusion 实例页面,然后在 Cloud Data Fusion 网页界面中打开一个实例。

    转到实例

  2. 依次点击系统管理员 > 配置 > 命名空间

  3. 点击要使用的命名空间,例如 Team A 的命名空间。

  4. 点击连接标签页,然后点击添加连接

  5. 选择 GCS 并配置连接。

    在 Cloud Data Fusion 中创建 Cloud Storage 连接
    图 3:配置 Cloud Storage 命名空间
  6. 为每个命名空间创建一个 Cloud Storage 连接,方法是 重复前面的步骤。然后,每个团队都可以与该资源的隔离副本进行交互,以执行其设计时操作。

验证每个命名空间的设计时隔离

团队 A 可以在设计时通过访问 Cloud Storage 来验证隔离 存储分区的各命名空间中:

  1. 在 Google Cloud 控制台中,前往 Cloud Data Fusion 实例页面,然后在 Cloud Data Fusion 网页界面中打开一个实例。

    转到实例

  2. 点击系统管理员 > 配置 > 命名空间

  3. 选择一个命名空间,例如 Team A 命名空间 team_A

  4. 点击 菜单 > Wrangler

  5. 点击 GCS

  6. 在存储桶列表中,点击 team_a1 存储桶。

    • 您可以查看存储分区列表,因为团队 A 命名空间 storage.buckets.list 权限。

    • 点击存储桶后,即可查看其中的内容,因为团队 A 具有 Storage Object Viewer 角色。

    验证团队 A 的 Cloud Storage 连接。 验证 Team A 是否可以访问这些存储桶。
    图 4 和图 5:检查 Team A 是否可以访问相应的存储桶。
  7. 返回存储桶列表,然后点击 team_b1team_c1 存储桶。由于您使用 Team A 的命名空间服务账号为其隔离了此设计时资源,因此访问权限受到限制。

    验证 Team A 无法访问受限资源。
    图 6:检查 Team A 是否无法访问 Team B 和 Team C 的存储桶。

后续步骤

  • 详细了解 Cloud Data Fusion 中的安全功能。