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

本页面介绍了以下用例:在将数据从 Cloud Storage 迁移到 BigQuery 时,您可以在命名空间级别控制对 Google Cloud 资源的访问权限。

为了控制对 Google Cloud 资源的访问权限,Cloud Data Fusion 中的命名空间默认使用 Cloud Data Fusion API Service Agent

为了更好地实现数据隔离,您可以将自定义 IAM 服务帐号(称为“每个命名空间服务帐号”)与每个命名空间关联。通过自定义 IAM 服务帐号(其因命名空间而异),您可以控制对 Cloud Data Fusion 中的流水线设计时操作(例如流水线预览、Wrangler 和流水线验证)之间命名空间之间的 Google Cloud 资源的访问权限。

如需了解详情,请参阅使用命名空间服务帐号进行访问权限控制

情况

在此使用场景中,您的营销部门使用 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. 通过为团队 A 添加自定义服务帐号(例如 team-a@pipeline-design-time-project.iam.gserviceaccount.com)来设置访问权限控制。

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

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

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

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

    例如,将 Storage Object Viewer 角色授予与存储桶 team_a1 上的命名空间 team_A 关联的 IAM 服务帐号。此权限允许团队 A 在隔离的设计时环境中查看和列出该存储桶中的对象、托管文件夹及其元数据。

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

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

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

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

    转到实例

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

  3. 点击您要使用的命名空间,例如团队 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. 选择命名空间,例如团队 A 的命名空间 team_A

  4. 依次点击 菜单 > Wrangler

  5. 点击 GCS

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

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

    • 点击该存储桶时,您可以查看其内容,因为团队 A 命名空间具有 Storage Object Viewer 角色。

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

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

后续步骤

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