本页面介绍如何在部署和运行在其他 Google Cloud 项目中使用 Dataproc 集群的流水线时管理访问权限控制。
情况
默认情况下,在 Google Cloud 项目中启动 Cloud Data Fusion 实例时,该实例使用同一项目中的 Dataproc 集群部署和运行流水线。但是,您的组织可能要求您使用其他项目中的集群。对于此使用场景,您必须管理项目之间的访问权限。以下页面介绍了如何更改基准(默认)配置并应用适当的访问权限控制。
准备工作
如需了解此使用场景中的解决方案,您需要以下背景信息:
- 熟悉 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 在其他项目中使用 Dataproc 集群。
在以下用例说明中,客户项目是运行 Cloud Data Fusion 实例的位置,Dataproc 项目是启动 Dataproc 集群的位置。
租户项目 VPC 和实例
基准 | 使用场景 |
---|---|
在上述基准架构图中,租户项目包含以下组件:
|
此用例不需要额外配置。 |
客户项目
基准 | 使用场景 |
---|---|
Google Cloud 项目是您部署和运行流水线的位置。默认情况下,当您运行流水线时,系统会在此项目中启动 Dataproc 集群。 | 在此用例中,您管理两个项目。在本页面上,客户项目是指运行 Cloud Data Fusion 实例的位置。 Dataproc 项目是指 Dataproc 集群启动的位置。 |
客户 VPC
基准 | 使用场景 |
---|---|
从您(客户的)角度来看,客户 VPC 是 Cloud Data Fusion 在逻辑上所处的位置。 要点总结: 您可以在项目的“VPC 网络”页面中找到客户 VPC 详细信息。 |
此用例不需要额外配置。 |
Cloud Data Fusion 子网
基准 | 使用场景 |
---|---|
从您(客户的)角度来看,该子网在逻辑上是 Cloud Data Fusion 的逻辑位置。 要点 :此子网的区域与租户项目中 Cloud Data Fusion 实例的位置相同。 |
此用例不需要额外配置。 |
Dataproc 子网
基准 | 使用场景 |
---|---|
运行流水线时启动 Dataproc 集群的子网。 重点小结:
|
这是一个新子网,当您运行流水线时,系统会在该子网中启动 Dataproc 集群。 重点小结:
|
来源和接收器
基准 | 使用场景 |
---|---|
提取数据的来源和加载数据的接收器,例如 BigQuery 来源和接收器。 要点总结:
|
此页面上特定于用例的访问权限控制配置适用于 BigQuery 来源和接收器。 |
Cloud Storage
基准 | 使用场景 |
---|---|
客户项目中的存储桶,有助于在 Cloud Data Fusion 和 Dataproc 之间传输文件。 重点小结:
|
此用例不需要额外配置。 |
来源和接收器使用的临时存储分区
基准 | 使用场景 |
---|---|
由插件为您的来源和接收器创建的临时存储分区,例如由 BigQuery 接收器插件启动的加载作业。 重点小结:
|
对于此使用场景,您可以在任何项目中创建存储桶。 |
作为插件数据来源或接收器的存储分区
基准 | 使用场景 |
---|---|
客户存储分区,您在插件(例如 Cloud Storage 插件和 FTP 到 Cloud Storage 插件)的配置中指定。 | 此用例不需要额外配置。 |
IAM:Cloud Data Fusion API 服务代理
基准 | 使用场景 |
---|---|
启用 Cloud Data Fusion API 后,系统会自动将 Cloud Data Fusion API Service Agent 角色 ( 重点小结:
|
对于此使用场景,请向 Dataproc 项目中的服务帐号授予 Cloud Data Fusion API Service Agent 角色。然后授予该项目中的以下角色:
|
IAM:Dataproc 服务帐号
基准 | 使用场景 |
---|---|
用于在 Dataproc 集群中将流水线作为作业运行的服务帐号。默认情况下,它是 Compute Engine 服务帐号。 可选:在基准配置中,您可以将默认服务帐号更改为同一项目中的另一个服务帐号。请向新服务帐号授予以下 IAM 角色:
|
此使用场景示例假设您使用 Dataproc 项目的默认 Compute Engine 服务帐号 ( 向 Dataproc 项目中的默认 Compute Engine 服务账号授予以下角色。
将 Service Account User 角色授予 Dataproc 项目默认 Compute Engine 服务帐号上的 Cloud Data Fusion 服务帐号。此操作必须在 Dataproc 项目中执行。 将 Dataproc 项目的默认 Compute Engine 服务帐号添加到 Cloud Data Fusion 项目中。此外,请授予以下角色:
|
API
基准 | 使用场景 |
---|---|
启用 Cloud Data Fusion API 时,以下 API 也会一并启用。如需详细了解这些 API,请转到项目中的“API 和服务”页面。
启用 Cloud Data Fusion API 后,系统会自动将以下服务帐号添加到您的项目中:
|
对于此使用场景,请在包含 Dataproc 项目的项目中启用以下 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 基本和预定义角色参考文档。