用例:对其他项目中的 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 APIDataproc APICloud Dataproc Control APICloud DNS APICloud OS Login APIPub/Sub APICompute Engine APIContainer Filesystem APIContainer Registry APIService Account Credentials APIIdentity and Access Management APIGoogle Kubernetes Engine API 启用 Cloud Data Fusion API 后,系统会自动将以下服务账号添加到您的项目中: 
          Google API 服务代理Compute Engine Service AgentKubernetes Engine Service AgentGoogle Container Registry Service AgentGoogle Cloud Dataproc Service AgentCloud KMS Service AgentCloud Pub/Sub Service Account | 对于此用例,请在包含 Dataproc 项目的项目中启用以下 API: 
 
          Compute Engine APIDataproc 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。"],[],[]]