本页介绍了在部署和运行使用其他 Google Cloud 项目中的 Managed Service for Apache Spark 集群的流水线时,如何管理访问权限控制。
场景
默认情况下,当在Google Cloud 项目中启动 Cloud Data Fusion 实例时,该实例会使用同一项目中的 Managed Service for Apache Spark 集群来部署和运行流水线。不过,您的组织可能要求您使用其他项目中的集群。对于此使用情形,您必须管理项目之间的访问权限。以下页面介绍了如何更改基准(默认)配置并应用适当的访问权限控制。
准备工作
如需了解此使用情形中的解决方案,您需要了解以下背景信息:
- 熟悉基本的 Cloud Data Fusion 概念
- 熟悉 Cloud Data Fusion 的 Identity and Access Management (IAM)
- 熟悉 Cloud Data Fusion 网络
假设和范围
此用例具有以下要求:
- 专用 Cloud Data Fusion 实例。 出于安全考虑,组织可能会要求您使用此类实例。
- BigQuery 源和接收器。
- 使用 IAM 进行访问权限控制,而不是基于角色的访问权限控制 (RBAC)。
解决方案
此解决方案会比较基准架构与特定用例的架构和配置。
架构
以下图表比较了在以下情况下创建 Cloud Data Fusion 实例和运行流水线的项目架构:使用同一项目中的集群(基准)以及通过租户项目 VPC 使用不同项目中的集群。
基准架构
此图显示了项目的基准架构:

对于基准配置,您将创建一个私有 Cloud Data Fusion 实例并运行一条没有额外自定义的流水线:
- 您使用内置的计算配置文件
- 来源和接收器与实例位于同一项目中
- 未向任何服务账号授予其他角色
如需详细了解租户项目和客户项目,请参阅网络。
用例架构
此图显示了在另一个项目中使用集群时的项目架构:

配置
以下各部分将比较基准配置与特定用例配置,以便通过默认的租户项目 VPC 在不同项目中使用 Managed Service for Apache Spark 集群。
在以下使用情形说明中,客户项目是指 Cloud Data Fusion 实例的运行位置,而 Managed Service for Apache Spark 项目是指 Managed Service for Apache Spark 集群的启动位置。
租户项目 VPC 和实例
| 基准 | 使用场景 |
|---|---|
在上述基准架构图中,租户项目包含以下组件:
|
对于此使用情形,无需进行其他配置。 |
客户项目
| 基准 | 使用场景 |
|---|---|
| 您的 Google Cloud 项目是您部署和运行流水线的地方。 默认情况下,当您运行流水线时,系统会在该项目中启动 Managed Service for Apache Spark 集群。 | 在此使用情形中,您需要管理两个项目。在此页面上,客户项目是指 Cloud Data Fusion 实例的运行位置。 Managed Service for Apache Spark 项目是指 Managed Service for Apache Spark 集群的启动位置。 |
客户 VPC
| 基准 | 使用场景 |
|---|---|
从客户的角度来看,客户 VPC 是 Cloud Data Fusion 在逻辑上所处的位置。 要点: 您可以在项目的“VPC 网络”页面中找到客户 VPC 的详细信息。 |
对于此使用情形,无需进行额外配置。 |
Cloud Data Fusion 子网
| 基准 | 使用场景 |
|---|---|
从您(客户)的角度来看,此子网是 Cloud Data Fusion 在逻辑上所处的子网。 要点: 此子网的区域与租户项目中的 Cloud Data Fusion 实例的位置相同。 |
对于此使用情形,无需进行其他配置。 |
Managed Service for Apache Spark 子网
| 基准 | 使用场景 |
|---|---|
运行流水线时启动 Managed Service for Apache Spark 集群的子网。 重点小结:
|
这是一个新的子网,当您运行流水线时,Managed Service for Apache Spark 集群会在此子网中启动。 重点小结:
|
来源和接收器
| 基准 | 使用场景 |
|---|---|
提取数据的来源和加载数据的接收器,例如 BigQuery 来源和接收器。 要点总结:
|
本页上的使用场景特定访问权限控制配置适用于 BigQuery 源和接收器。 |
Cloud Storage
| 基准 | 使用场景 |
|---|---|
客户项目中的存储桶,用于在 Cloud Data Fusion 和 Managed Service for Apache Spark 之间转移文件。 重点小结:
|
对于此使用情形,无需进行额外配置。 |
来源和接收器使用的临时存储桶
| 基准 | 使用场景 |
|---|---|
插件为来源和接收器创建的临时存储桶,例如由 BigQuery 接收器插件启动的加载作业。 重点小结:
|
对于此使用情形,可以在任何项目中创建存储桶。 |
作为插件数据源或数据接收器的存储桶
| 基准 | 使用场景 |
|---|---|
| 客户存储桶,您可以在插件(例如 Cloud Storage 插件和 FTP to Cloud Storage 插件)的配置中指定这些存储桶。 | 对于此使用情形,无需进行额外配置。 |
IAM:Cloud Data Fusion API Service Agent
| 基准 | 使用场景 |
|---|---|
启用 Cloud Data Fusion API 后,系统会自动向
Cloud Data Fusion 服务账号(即主要服务代理)授予 Cloud Data Fusion API Service Agent 角色 ( 重点小结:
|
对于此使用情形,请向 Managed Service for Apache Spark 项目中的服务账号授予 Cloud Data Fusion API Service Agent 角色。然后,在该项目中授予以下角色:
|
IAM:Managed Service for Apache Spark 服务账号
| 基准 | 使用场景 |
|---|---|
用于在 Managed Service for Apache Spark 集群中以作业形式运行流水线的服务账号。默认情况下,它是 Compute Engine 服务账号。 可选:在基准配置中,您可以将默认服务账号更改为同一项目中的其他服务账号。向新服务账号授予以下 IAM 角色:
|
此使用情形示例假设您使用的是 Managed Service for Apache Spark 项目的默认 Compute Engine 服务账号 ( 向 Managed Service for Apache Spark 项目中的默认 Compute Engine 服务账号授予以下角色。
向 Managed Service for Apache Spark 项目的默认 Compute Engine 服务账号上的 Cloud Data Fusion 服务账号授予 Service Account User 角色。此操作必须在 Managed Service for Apache Spark 项目中执行。 将 Managed Service for Apache Spark 项目的默认 Compute Engine 服务账号添加到 Cloud Data Fusion 项目。 另授予以下角色:
|
API
| 基准 | 使用场景 |
|---|---|
启用 Cloud Data Fusion API 后,系统还会启用以下 API。如需详细了解这些 API,请前往项目中的“API 和服务”页面。
启用 Cloud Data Fusion API 后,系统会自动将以下服务账号添加到您的项目中:
|
对于此使用情形,请在包含 Managed Service for Apache Spark 项目的项目中启用以下 API(如果尚未启用):
|
加密密钥
| 基准 | 使用场景 |
|---|---|
在基准配置中,加密密钥可以是 Google 管理的密钥,也可以是 CMEK 重点小结: 如果您使用 CMEK,则基准配置需要满足以下条件:
根据流水线中使用的服务(例如 BigQuery 或 Cloud Storage),还必须向服务账号授予 Cloud KMS CryptoKey Encrypter/Decrypter 角色:
|
如果您不使用 CMEK,则无需为此使用情形进行任何额外更改。 如果您使用 CMEK,则必须在创建密钥的项目中,在密钥级向以下服务账号提供 Cloud KMS CryptoKey Encrypter/Decrypter 角色:
根据流水线中使用的服务(例如 BigQuery 或 Cloud Storage),还必须在密钥级向其他服务账号授予 Cloud KMS CryptoKey Encrypter/Decrypter 角色。例如:
|
完成这些特定于用例的配置后,您的数据流水线就可以开始在其他项目中的集群上运行了。
后续步骤
- 详细了解 Cloud Data Fusion 中的网络。
- 请参阅 IAM 基本角色和预定义角色参考文档。