使用 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)。如需了解详情,请参阅 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 Connectivity
  • Network Service Integration Manager
  • Network Services API
  • Organization Policy
  • Recommender API
  • Cloud Resource Manager API
  • Service Networking
  • 服务用途
  • Spanner
  • Cloud Storage
  • Traffic Director
请参阅 Cloud Data Fusion API Service Agent 权限

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

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

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

如需了解详情,请参阅 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 集群上运行作业,请向 Cloud Data Fusion 流水线使用的默认服务帐号或用户代管式服务帐号授予 Dataproc Worker 角色 (roles/dataproc.worker)。

用户的角色

如需触发 Cloud Data Fusion 中的任何操作,您(主帐号)必须具有足够的权限。各个权限按角色分组,您向该主账号授予各种角色。

如果未启用 RBAC,或者您使用的是不支持 RBAC 的 Cloud Data Fusion 版本,则具有任何 Cloud Data Fusion IAM 角色的用户都拥有对 Cloud Data Fusion 网页界面的完整访问权限。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 Viewer (roles/datafusion.viewer)
  • 可以在 Google Cloud 控制台中查看项目的 Cloud Data Fusion 实例。
  • 无法创建、更新或删除 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 网页界面中设计流水线时,您可能会使用 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. 在具有资源的项目中,向 Compute Engine 默认服务帐号授予 IAM 角色,使其能够访问其他项目中的资源。

确定 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

后续步骤