用例:对其他项目中的 Dataproc 集群进行访问权限控制
  
      
    
  
  
  
  
  
    
  
  
    
    
    
    
  
本页介绍了在其他项目中部署和运行使用 Dataproc 集群的流水线时如何管理访问权限。 Google Cloud 
场景
默认情况下,在Google Cloud 项目中启动 Cloud Data Fusion 实例时,它会使用同一项目中的 Dataproc 集群部署和运行流水线。不过,贵组织可能要求您在其他项目中使用集群。对于此用例,您必须管理项目之间的访问权限。以下页面介绍了如何更改基准(默认)配置并应用适当的访问权限控制。
准备工作
如需了解此使用情形中的解决方案,您需要了解以下背景信息:
假设和范围
此用例具有以下要求:
解决方案
此解决方案比较基准架构和特定于用例的架构和配置。
架构
以下图表比较了在以下两种情况下用于创建 Cloud Data Fusion 实例和运行流水线的项目架构:在同一个项目中使用集群(基准);通过租户项目 VPC 在其他项目中使用集群。
基准架构
下图显示了项目的基准架构:

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

配置
以下部分将基准配置与通过默认的租户项目 VPC 在其他项目中使用 Dataproc 集群的特定于用例的配置进行了比较。
在以下用例说明中,客户项目是 Cloud Data Fusion 实例的运行位置,Dataproc 项目是启动 Dataproc 集群的位置。
租户项目 VPC 和实例
  
    | 基准 | 
    使用场景 | 
  
  
    在上图的基准架构中,租户项目包含以下组件:
     
      - 自动创建的默认 VPC。
 
      - Cloud Data Fusion 实例的实际部署。
 
      
      | 
    此用例无需进行额外配置。 | 
  
客户项目
  
    | 基准 | 
    使用场景 | 
  
  
    | 您可以在 Google Cloud 项目中部署和运行流水线。
     默认情况下,当您运行流水线时,Dataproc 集群会在此项目中启动。 | 
    在此用例中,您需要管理两个项目。在本页中,客户项目是指 Cloud Data Fusion 实例的运行位置。 Dataproc 项目是指 Dataproc 集群的启动位置。 | 
  
客户 VPC
  
    | 基准 | 
    使用场景 | 
  
  
    从您(客户)的角度来看,Cloud Data Fusion 在逻辑上位于客户 VPC 中。  
     要点: 您可以在项目的“VPC 网络”页面中找到客户 VPC 的详细信息。
      
        前往“VPC 网络”页面  | 
    此用例无需进行额外配置。 | 
  
Cloud Data Fusion 子网
  
    | 基准 | 
    使用场景 | 
  
  
    从您(客户)的角度来看,Cloud Data Fusion 在逻辑上位于此子网中。  
     要点 :此子网的区域与租户项目中的 Cloud Data Fusion 实例的位置相同。
     | 
    此用例无需进行额外配置。 | 
  
Dataproc 子网
  
    | 基准 | 
    使用场景 | 
  
  
    您运行流水线时 Dataproc 集群的启动子网。  
     要点总结: 
      
        - 对于此基准配置,Dataproc 将在与 Cloud Data Fusion 实例相同的子网中运行。
 
        - Cloud Data Fusion 会在与 Cloud Data Fusion 实例和子网位于同一区域的位置找到子网。如果此区域中只有一个子网,则这两个子网是相同的。
 
        - Dataproc 子网必须具有专用 Google 访问通道。
 
       
     | 
    这是在您运行流水线时启动 Dataproc 集群的新子网。  
     要点总结: 
      
        - 对于此新子网,将“专用 Google 访问通道”设置为开启。
 
        - Dataproc 子网不必与 Cloud Data Fusion 实例位于同一位置。
 
       
     | 
  
来源和接收器
  
    | 基准 | 
    使用场景 | 
  
  
    数据提取的来源和数据加载的接收器,例如 BigQuery 来源和接收器。  
     要点总结: 
      
        - 提取和加载数据的作业必须在与数据集相同的位置处理,否则会导致错误。
 
        
     | 
    本页面上针对具体用例的访问权限控制配置适用于 BigQuery 源和接收器。 | 
  
Cloud Storage
  
    | 基准 | 
    使用场景 | 
  
  
    客户项目中的存储分区,用于在 Cloud Data Fusion 和 Dataproc 之间传输文件。  
     要点总结: 
      
        - 您可以通过 Cloud Data Fusion 网站界面中的临时集群的计算配置文件设置指定此存储分区。
 
        - 对于批处理和实时流水线或复制作业:如果您未在计算配置中指定存储分区,Cloud Data Fusion 会在与实例相同的项目中创建一个存储分区来存储数据。
 
        - 即使对于静态 Dataproc 集群,在此基准配置中,存储分区也是由 Cloud Data Fusion 创建的,并且不同于 Dataproc 暂存存储分区和临时存储分区。
 
        - Cloud Data Fusion API 服务代理具有在包含 Cloud Data Fusion 实例的项目中创建此存储分区的内置权限。
 
       
     | 
    此用例无需进行额外配置。 | 
  
来源和接收器使用的临时存储分区
  
    | 基准 | 
    使用场景 | 
  
  
    插件为来源和接收器创建的临时存储分区,例如 BigQuery 接收器插件发起的加载作业。
       
     要点总结: 
      
        - 您可以在配置源和接收器插件属性时定义这些存储分区。
 
        - 如果您未定义存储分区,系统会在运行 Dataproc 的项目中创建一个存储分区。
 
        - 如果数据集是多区域数据集,则存储分区会在同一范围内创建。
 
        - 如果您在插件配置中定义了存储分区,则存储分区所在的区域必须与数据集所在的区域一致。
 
        - 如果您未在插件配置中定义存储分区,系统会在流水线完成时删除为您创建的存储分区。
 
       
     | 
    对于此使用情形,存储分区可以在任何项目中创建。 | 
  
作为插件数据源或接收器的存储分区
  
    | 基准 | 
    使用场景 | 
  
  
    | 客户存储分区,您可以在插件(例如 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 角色 (roles/datafusion.serviceAgent)。 
      
     要点总结: 
      
        - 该角色包含与实例在同一项目中的服务(例如 BigQuery 和 Dataproc)的权限。如需了解所有受支持的服务,请参阅角色详情。
 
        - Cloud Data Fusion 服务账号会执行以下操作:
          
            - 数据平面(流水线设计和执行)与其他服务的通信(例如,在设计时与 Cloud Storage、BigQuery 和 Datastream 通信)。
 
            - 预配 Dataproc 集群。
 
            
        - 如果您要从 Oracle 源进行复制,则还必须向此服务账号授予作业所在项目中的 Datastream Admin 和 Storage Admin 角色。本页未介绍复制用例。
 
        
     | 
    对于此用例,请向 Dataproc 项目中的服务账号授予 Cloud Data Fusion API Service Agent 角色。然后,在该项目中授予以下角色: 
       
         - Compute Network User 角色
 
         - Dataproc Editor 角色
 
       
     | 
  
IAM:Dataproc 服务账号
  
    | 基准 | 
    使用场景 | 
  
  
    用于在 Dataproc 集群中将流水线作为作业运行的服务账号。默认情况下,它是 Compute Engine 服务账号。  
     可选:在基准配置中,您可以将默认服务账号更改为同一项目中的其他服务账号。向新服务账号授予以下 IAM 角色: 
      
        - Cloud Data Fusion Runner 角色。借助此角色,Dataproc 可以与 Cloud Data Fusion API 通信。
 
        - Dataproc Worker 角色。此角色可让作业在 Dataproc 集群上运行。
 
       
     要点总结: 
      
        - 必须向新服务的 API Agent 服务账号授予 Dataproc 服务账号上的“服务账号用户”角色,以便服务 API Agent 可以使用该账号启动 Dataproc 集群。
 
       
     | 
    此使用情形示例假定您使用的是 Dataproc 项目的默认 Compute Engine 服务账号 (PROJECT_NUMBER-compute@developer.gserviceaccount.com)。  
     向 Dataproc 项目中的默认 Compute Engine 服务账号授予以下角色。 
      
        
          - Dataproc Worker 角色
 
          - Storage Admin 角色(或至少具有 `storage.buckets.create` 权限),以便 Dataproc 为 BigQuery 创建临时存储分区。
 
          - BigQuery Job User 角色。此角色可让 Dataproc 创建加载作业。默认情况下,作业会在 Dataproc 项目中创建。
 
           - BigQuery Dataset Editor 角色。借助此角色,Dataproc 可以在加载数据时创建数据集。
 
         
      向 Dataproc 项目的默认 Compute Engine 服务账号中的 Cloud Data Fusion 服务账号授予 Service Account User 角色。此操作必须在 Dataproc 项目中执行。 
      将 Dataproc 项目的默认 Compute Engine 服务账号添加到 Cloud Data Fusion 项目。
       此外,还需授予以下角色: 
        
          - Storage Object Viewer 角色,用于从 Cloud Data Fusion 使用方存储分区检索与流水线作业相关的工件。
 
          - Cloud Data Fusion Runner 角色,以便 Dataproc 集群在运行时与 Cloud Data Fusion 通信。
 
         
     | 
  
API
  
    | 基准 | 
    使用场景 | 
  
  
    启用 Cloud Data Fusion API 后,系统还会启用以下 API。如需详细了解这些 API,请前往项目的“API 和服务”页面。 
        前往“API 和服务”页面
         
        
          - Cloud Autoscaling API
 
          - Dataproc API
 
          - Cloud Dataproc Control API
 
          - Cloud DNS API
 
          - Cloud OS Login API
 
          - Pub/Sub API
 
          - Compute Engine API
 
          - Container Filesystem API
 
          - Container Registry API
 
          - Service Account Credentials API
 
          - Identity and Access Management API
 
          - Google Kubernetes Engine API
 
         
        
        启用 Cloud Data Fusion API 后,系统会自动将以下服务账号添加到您的项目中: 
        
          - Google API 服务代理
 
          - Compute Engine Service Agent
 
          - Kubernetes Engine Service Agent
 
          - Google Container Registry Service Agent
 
          - Google Cloud Dataproc Service Agent
 
          - Cloud KMS Service Agent
 
          - Cloud Pub/Sub Service Account
 
         
     | 
    对于此用例,请在包含 Dataproc 项目的项目中启用以下 API: 
        
          - Compute Engine API
 
          - Dataproc API(此项目中可能已启用)。启用 Dataproc API 后,系统会自动启用 Dataproc Control API。
 
          - Resource Manager API。
 
         
    | 
  
加密密钥
  
    | 基准 | 
    使用场景 | 
  
  
    在基准配置中,加密密钥可以是 Google 管理的加密密钥或 CMEK
      
      
     要点总结: 
     如果您使用 CMEK,基准配置需要满足以下要求: 
      
        - 密钥必须是区域性密钥,且必须在与 Cloud Data Fusion 实例位于同一区域中创建。
 
        - 在创建密钥的项目中,在密钥级别(而不是在 Google Cloud 控制台的 IAM 页面中)向以下服务账号授予 Cloud KMS CryptoKey Encrypter/Decrypter 角色:
         
          - Cloud Data Fusion API 服务账号
 
          - Dataproc 服务账号,默认是 Compute Engine Service Agent (
service-PROJECT_NUMBER@compute-system.iam.gserviceaccount.com) 
          - Google Cloud Dataproc Service Agent
           (
service-PROJECT_NUMBER@dataproc-accounts.iam.gserviceaccount.com) 
          - Cloud Storage Service Agent
           (
service-PROJECT_NUMBER@gs-project-accounts.iam.gserviceaccount.com) 
          
         
        
       根据流水线中使用的服务(例如 BigQuery 或 Cloud Storage),您还必须向服务账号授予 Cloud KMS CryptoKey Encrypter/Decrypter 角色: 
       
        - BigQuery 服务账号 (
bq-PROJECT_NUMBER@bigquery-encryption.iam.gserviceaccount.com) 
        - Pub/Sub 服务账号 (
service-PROJECT_NUMBER@gcp-sa-pubsub.iam.gserviceaccount.com) 
        - Spanner 服务账号 (
service-PROJECT_NUMBER@gcp-sa-spanner.iam.gserviceaccount.com) 
        
     | 
    
       如果您不使用 CMEK,则无需针对此用例进行任何其他更改。 
      如果您使用 CMEK,则必须在创建密钥的项目中,在密钥级别向以下服务账号提供 Cloud KMS CryptoKey Encrypter/Decrypter 角色: 
      
        - Cloud Storage Service Agent
        (
service-PROJECT_NUMBER@gs-project-accounts.iam.gserviceaccount.com) 
       
      根据流水线中使用的服务(例如 BigQuery 或 Cloud Storage),您还必须在密钥级别向其他服务账号授予 Cloud KMS CryptoKey Encrypter/Decrypter 角色。例如: 
      
        - BigQuery 服务账号 (
bq-PROJECT_NUMBER@bigquery-encryption.iam.gserviceaccount.com) 
        - Pub/Sub 服务账号 (
service-PROJECT_NUMBER@gcp-sa-pubsub.iam.gserviceaccount.com) 
        - Spanner 服务账号 (
service-PROJECT_NUMBER@gcp-sa-spanner.iam.gserviceaccount.com) 
       
     | 
  
进行这些特定于用例的配置后,您的数据流水线就可以开始在其他项目中的集群上运行了。
后续步骤
  
  
  
  
    
  
  
 
  
    
    
      
       
         
  
       
    
    
  
  
  如未另行说明,那么本页面中的内容已根据知识共享署名 4.0 许可获得了许可,并且代码示例已根据 Apache 2.0 许可获得了许可。有关详情,请参阅 Google 开发者网站政策。Java 是 Oracle 和/或其关联公司的注册商标。
  最后更新时间 (UTC):2025-10-19。
  
  
    
    
    
      
  
    
  
  
    
      [[["易于理解","easyToUnderstand","thumb-up"],["解决了我的问题","solvedMyProblem","thumb-up"],["其他","otherUp","thumb-up"]],[["很难理解","hardToUnderstand","thumb-down"],["信息或示例代码不正确","incorrectInformationOrSampleCode","thumb-down"],["没有我需要的信息/示例","missingTheInformationSamplesINeed","thumb-down"],["翻译问题","translationIssue","thumb-down"],["其他","otherDown","thumb-down"]],["最后更新时间 (UTC):2025-10-19。"],[],[]]