本页面介绍了 Cloud Data Fusion 中的访问权限控制选项。
您可以通过以下方式控制对 Cloud Data Fusion 中资源的访问权限:
如需控制对 控制平面 操作(例如通过 Google Cloud 控制台、 Google Cloud CLI 和 REST 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 服务账号
Cloud Data Fusion 服务账号是一个 Google 代管式服务代理,可以在流水线设计时访问客户资源。启用 Cloud Data Fusion API 时,此服务代理会自动添加到项目中。它用于项目中的所有实例。
服务代理负责以下事项:
在流水线设计期间与其他服务(例如 Cloud Storage、BigQuery 或 Datastream)通信。
通过预配 Managed Service for Apache Spark 集群并提交流水线作业来启用执行。
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 | 关联的服务:
|
请参阅 Cloud Data Fusion API Service Agent 权限。 |
Compute Engine 默认服务帐号或自定义服务帐号
Compute Engine 服务帐号是 Cloud Data Fusion 用于部署和运行访问其他 Google Cloud 资源的默认账号。默认情况下,它会挂接到 Managed Service for Apache Spark 集群虚拟机,以使 Cloud Data Fusion 在流水线运行期间能够访问 Managed Service for Apache Spark 资源。
您可以在创建 Cloud Data Fusion 实例时,或通过在 Cloud Data Fusion 网页界面中创建新的计算配置文件,选择要附加到 Managed Service for Apache Spark 集群的自定义服务帐号。
如需了解详情,请参阅 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 |
服务账号用户角色
在运行流水线时启动 Managed Service for Apache Spark 集群的项目中的默认服务账号或用户管理型服务账号上,向 Cloud Data Fusion 服务账号授予服务账号用户角色 (roles/iam.serviceAccountUser)。
如需了解详情,请参阅授予服务帐号。
Dataproc Worker 角色
如需在 Managed Service for Apache Spark 集群上运行作业,请向 Cloud Data Fusion 流水线使用的默认服务账号或用户管理型服务账号授予 Dataproc Worker 角色 (roles/dataproc.worker)。
用户的角色
如需在 Cloud Data Fusion 中触发任何操作,您(主账号)必须拥有足够的权限。各个权限会分组到角色中,您可以向该主账号授予角色。
如果未启用 RBAC,或者您使用的是不支持 RBAC 的 Cloud Data Fusion 版本,则具有任何 Cloud Data Fusion IAM 角色的用户都可以完全访问 Cloud Data Fusion 网页界面。Admin 角色仅允许用户管理实例,例如 Create、Update、Upgrade 和 Delete 操作。
根据正文在 Cloud Data Fusion 中需要的权限,向其授予以下角色。
| 角色 | 说明 | 权限 |
|---|---|---|
Cloud Data Fusion Admin (roles/datafusion.admin) |
拥有 Viewer 的所有权限,以及创建、更新和删除 Cloud Data Fusion 实例的权限。 |
|
Cloud Data Fusion Viewer (roles/datafusion.viewer) |
|
|
在设计时访问其他项目中的资源
本部分介绍了在设计 时对与 Cloud Data Fusion 实例位于不同 Google Cloud 项目中的资源的访问权限控制。
在 Cloud Data Fusion 网页界面中设计流水线时,您可能会使用 Wrangler 或 Preview 等函数,这些函数会访问其他项目中的资源。
以下部分介绍了如何确定环境中的服务帐号,然后授予适当的权限。
确定环境的服务帐号
服务帐号名称为 Cloud Data Fusion 服务账号,此服务代理的主账号
为
service-CUSTOMER_PROJECT_NUMBER@gcp-sa-datafusion.iam.gserviceaccount.com。
授予访问其他项目中的资源的权限
如需授予允许访问各种资源的角色,请按以下步骤操作:
- 在目标资源所在的项目中,将
Cloud Data Fusion 服务账号 (
service-CUSTOMER_PROJECT_NUMBER@gcp-sa-datafusion.iam.gserviceaccount.com) 添加为主账号。 - 在目标资源所在的项目中,向目标资源上的 Cloud Data Fusion 服务账号授予角色。
授予角色后,您可以在设计时访问其他项目中的资源,就像访问实例所在项目中的资源一样。
在执行时访问其他项目中的资源
本部分介绍了在执行时对与 Cloud Data Fusion 实例位于不同 项目 Google Cloud 中的资源的访问权限控制。
在执行时,您可以在 Managed Service for Apache Spark 集群上执行流水线,该集群可能会访问其他项目中的资源。默认情况下,Managed Service for Apache Spark 集群本身会在与 Cloud Data Fusion 实例相同的项目中启动,但您可以使用其他项目中的集群。
如需访问其他 Google Cloud 项目中的资源,请按以下 步骤操作:
- 确定项目的服务帐号。
- 在资源所在的项目中,向 Compute Engine 默认服务帐号授予 IAM 角色,使其能够访问其他项目中的资源。
确定 Compute Engine 服务帐号
如需详细了解 Compute Engine 服务帐号,请参阅 Cloud Data Fusion 中的 IAM 简介。
授予 IAM 访问其他项目中的资源的权限
Compute Engine 默认服务帐号需要具有访问其他项目中的资源的权限。这些角色和权限可能会因您要访问的资源而异。
如需访问资源,请按以下步骤操作:
- 授予角色和权限,并在目标资源所在的项目中将 Compute Engine 服务账号指定为主账号。
- 添加适当的角色以访问资源。
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 |
| 在控制台中访问 Cloud Data Fusion 的 实例 页面 Google Cloud | datafusion.instances.list |
| 访问实例的详情 页面 | datafusion.instances.get |
| 创建新实例 | datafusion.instances.create |
| 更新标签和高级选项以自定义实例 | datafusion.instances.update |
| 删除实例 | datafusion.instances.delete |
后续步骤
- 详细了解多个项目之间的访问权限控制。