本页介绍了在另一个 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)。
解决方案
此解决方案比较了基准架构和特定用例的架构与配置。
架构
以下图表比较了在同一项目(基准)和通过租户项目 VPC 在不同项目中创建 Cloud Data Fusion 实例并运行流水线的项目架构。
基准架构
此图显示了项目的基准架构:

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

配置
以下各部分将比较基准配置与使用默认租户项目 VPC 在不同项目中通过托管式 Apache Spark 集群使用托管式 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 到 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 项目中执行。 将受管服务(适用于 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 基本角色和预定义角色参考文档。