使用 IAM 进行访问权限控制

本页面介绍 Cloud Data Fusion 中的访问权限控制选项。

您可以通过以下方式控制对 Cloud Data Fusion 中资源的访问权限:

  • 控制对控制平面操作(例如创建和更新)的访问权限 通过 Google Cloud 控制台管理实例 Google Cloud CLIREST API,用于 Identity and Access Management (IAM),如本页所述。

  • 授予对 Google Cloud 数据服务(例如 BigQuery 或 Cloud Storage 到运行流水线的服务账号,使用 IAM。

  • 控制在 实例,称为 数据平面 使用基于角色的访问权限控制 (RBAC)。

有关本课程中涉及的架构和资源 Cloud Data Fusion 访问权限控制,请参阅 网络。 如需了解如何授予角色和权限,请参阅 管理对项目、文件夹和组织的访问权限

Cloud Data Fusion 中的 IAM 简介

通过向 Google Cloud 项目中的服务账号和其他主体授予 IAM 角色和权限,您可以控制对 Cloud Data Fusion 功能的访问权限。

向用户账号授予精确的访问权限,以便他们能够使用 Cloud Data Fusion 网页界面,使用 RBAC

默认情况下,Cloud Data Fusion 使用以下服务账号:

Cloud Data Fusion Service Account

Cloud Data Fusion 服务账号是由 Google 代管式服务代理 可在设计流水线时访问客户资源的组织。此服务代理 启用 Cloud Data Fusion API。它用于项目中的所有实例。

服务代理有以下责任:

  • 与其他服务(例如 Cloud Storage)通信, 在流水线设计期间使用 BigQuery 或 Datastream。

  • 通过预配 Dataproc 集群和启用执行 如何提交流水线作业

Cloud Data Fusion 服务账号的角色

默认情况下,Cloud Data Fusion 服务账号只有 Cloud Data Fusion API Service Agent 角色 (roles/datafusion.serviceAgent).

此服务代理的主账号名称为 service-CUSTOMER_PROJECT_NUMBER@gcp-sa-datafusion.iam.gserviceaccount.com

以下默认资源与 Cloud Data Fusion API 相关联 Service Agent 角色。

角色 资源 权限
Cloud Data Fusion API Service Agent 关联的服务:
  • BigQuery
  • Bigtable
  • Compute Engine
  • Dataproc
  • Cloud DNS
  • Firebase
  • Cloud Monitoring
  • 网络连接
  • 网络安全集成
  • Network Services API
  • 组织政策
  • Recommender API
  • Cloud Resource Manager API
  • Service Networking
  • 服务用途
  • Spanner
  • Cloud Storage
  • Cloud Service Mesh
请参阅 Cloud Data Fusion API 服务代理 权限

Compute Engine 默认服务账号或自定义服务账号

Compute Engine 服务账号是 Cloud Data Fusion 用于部署和运行访问其他 Google Cloud 资源的作业的默认账号。默认情况下,它会挂接到 Dataproc 集群虚拟机,以便 Cloud Data Fusion 在流水线运行期间访问 Dataproc 资源。

您可以在创建 Cloud Data Fusion 实例时选择要附加到 Dataproc 集群的自定义服务账号,也可以在 Cloud Data Fusion 网页界面中创建新的计算配置文件。

如需了解详情,请参阅 Cloud Data Fusion 中的服务账号

Compute Engine 服务账号的角色

默认情况下,在运行作业时访问资源(例如来源和接收器) 流水线,Cloud Data Fusion 使用 Compute Engine 默认服务账号

您可以为 Cloud Data Fusion 实例设置用户管理的自定义服务账号,并向此账号授予角色。之后 可以在创建新实例时选择此服务账号。

Cloud Data Fusion Runner 角色

在包含 Cloud Data Fusion 实例的项目中,这两个默认值 和用户管理的自定义服务账号,授予 Cloud Data Fusion Runner 角色 (datafusion.runner)。

角色 说明 权限
Data Fusion Runner (datafusion.runner) 让 Compute Engine 服务账号 Cloud Data Fusion 服务, 租户项目 datafusion.instances.runtime

服务账号用户角色

在您运行流水线时启动 Dataproc 集群的项目中的默认服务账号或用户管理的服务账号中,向 Cloud Data Fusion 服务账号授予 Service Account User 角色 (roles/iam.serviceAccountUser)。

如需了解详情,请参阅授予服务账号权限

Dataproc Worker 角色

要在 Dataproc 集群上运行作业,请向 Dataproc 工作器授予 角色 (roles/dataproc.worker) 分配给默认服务或用户管理的服务 Cloud Data Fusion 流水线使用的账号。

用户的角色

要触发 Cloud Data Fusion 中的任何操作,您(主账号)必须 您都拥有足够的权限各项权限会划分为不同的角色 向该主账号授予角色。

如果未启用 RBAC,或者您使用的是符合 不支持 RBAC,即拥有任何 Cloud Data Fusion IAM 的用户 拥有 Cloud Data Fusion Web 的完整访问权限 界面。Admin 角色仅允许用户管理实例,如 CreateUpdateUpgradeDelete 操作。

根据主账号在 Cloud Data Fusion 中需要的权限,向其授予以下角色。

角色 说明 权限
Cloud Data Fusion Admin (roles/datafusion.admin) 所有查看者权限,外加创建、更新和删除的权限 Cloud Data Fusion 实例。
  • datafusion.instances.get
  • datafusion.instances.list
  • datafusion.instances.create
  • datafusion.instances.delete
  • datafusion.instances.update
  • datafusion.operations.get
  • datafusion.operations.list
  • datafusion.operations.cancel
  • resourcemanager.projects.get
  • resourcemanager.projects.list
Cloud Data Fusion 查看者 (roles/datafusion.viewer)
  • 可以在以下位置查看项目的 Cloud Data Fusion 实例: Google Cloud 控制台。
  • 无法创建、更新或删除 Cloud Data Fusion 实例。
  • datafusion.instances.get
  • datafusion.instances.list
  • datafusion.operations.get
  • datafusion.operations.list
  • resourcemanager.projects.get
  • resourcemanager.projects.list

在设计时访问其他项目中的资源

本部分介绍了对在设计时位于与 Cloud Data Fusion 实例不同的 Google Cloud 项目中的资源的访问权限控制。

在 Cloud Data Fusion Web 中设计流水线时 可以使用 Wrangler 或 Preview 等函数, 访问其他项目中的资源。

以下各部分介绍了如何在 然后授予适当的权限

确定您的环境的服务账号

服务账号名称为 Cloud Data Fusion 服务账号和主账号 是 service-CUSTOMER_PROJECT_NUMBER@gcp-sa-datafusion.iam.gserviceaccount.com

授予访问其他项目中的资源的权限

要授予可授予访问各种资源的权限的角色,请按照下列步骤操作: 具体步骤:

  1. 在包含目标资源的项目中,将 Cloud Data Fusion 服务账号 (service-CUSTOMER_PROJECT_NUMBER@gcp-sa-datafusion.iam.gserviceaccount.com) 添加为主账号。
  2. 向目标上的 Cloud Data Fusion 服务账号授予角色 目标资源所在项目中的资源。

授予角色后,您可以通过以下网址访问其他项目中的资源: 与访问项目内资源时相同的方式 实例的位置。

在执行时访问其他项目中的资源

本部分介绍了对在执行时位于与 Cloud Data Fusion 实例位于不同 Google Cloud 项目中的资源的访问权限控制。

在执行时,您可以在 Dataproc 集群上执行流水线,该集群可能会访问其他项目中的资源。默认情况下, Dataproc 集群本身在 使用 Cloud Data Fusion 实例中的集群 项目。

如需访问其他 Google Cloud 项目中的资源,请按以下说明操作 步骤:

  1. 确定项目的服务账号。
  2. 在资源所在的项目中,授予 IAM 角色 访问 Compute Engine 默认服务账号 另一个项目中的资源。

确定 Compute Engine 服务账号

如需详细了解 Compute Engine 服务账号,请参阅 Cloud Data Fusion 中的 IAM 简介

向 IAM 授予对其他项目中资源的访问权限

Compute Engine 默认服务账号需要具备以下权限: 访问另一个项目中的资源。这些角色和权限可能会因您要访问的资源而异。

如需访问这些资源,请按以下步骤操作:

  1. 授予角色和权限,并在目标资源所在的项目中将您的 Compute Engine 服务账号指定为主体。
  2. 添加适当的角色以访问该资源。

Cloud Data Fusion API 权限

执行 Cloud Data Fusion API 需要具备以下权限。

API 调用 权限
instances.create datafusion.instances.create
instances.delete datafusion.instances.delete
instances.list datafusion.instances.list
instances.get datafusion.instances.get
instances.update datafusion.instances.update
operations.cancel datafusion.operations.cancel
operations.list datafusion.operations.list
operations.get datafusion.operations.get

执行常见任务的权限

Cloud Data Fusion 中的常见任务需要以下权限:

任务 权限
访问 Cloud Data Fusion 网页界面 datafusion.instances.get
在 Google Cloud 控制台中打开 Cloud Data Fusion 的实例页面 datafusion.instances.list
访问实例的详情页面 datafusion.instances.get
创建新实例 datafusion.instances.create
更新标签和高级选项以自定义实例 datafusion.instances.update
删除实例 datafusion.instances.delete

后续步骤