Dataproc Serverless 服务账号

本文档介绍了如何查看和管理 Identity and Access Management 服务账号角色。Dataproc Serverless 批处理工作负载或交互式会话作为 Compute Engine 默认服务账号运行,除非您在提交批处理工作负载创建会话创建会话运行时模板时指定自定义服务账号。

所需的 Dataproc Worker 角色

Dataproc Serverless 工作负载服务账号必须具有 Identity and Access Management Dataproc Worker 角色。Dataproc Serverless 使用的 Compute Engine 默认服务账号 (project_number[email protected]) 默认具有此角色。如果您为批处理工作负载、会话或会话模板指定了自己的服务账号,则必须向该服务账号授予 Dataproc Worker 角色。如需执行其他操作(例如对 BigQuery 读写数据),可能还需要具备其他角色。

查看和管理 IAM 服务账号角色

如需查看和管理向 Dataproc Serverless 工作负载服务账号授予的角色,请执行以下操作:

  1. 在 Google Cloud 控制台中,前往 IAM 页面。

    转到 IAM

  2. 点击包括 Google 提供的角色授权

  3. 查看为工作负载服务账号列出的角色。下图显示了为 Dataproc Serverless 在默认情况下用作工作负载服务账号的 Compute Engine 默认服务账号 (project_number[email protected]) 列出的必需的 Dataproc Worker 角色。

  4. 您可以点击服务账号行上显示的铅笔图标,以授予或移除服务账号角色

跨项目服务账号

您可以提交使用与批处理工作负载项目(提交批处理作业的项目)不同的项目中的服务账号的 Dataproc Serverless 批处理工作负载。在本部分中,服务账号所在的项目称为 service account project,提交批处理作业的项目称为 batch project

为什么要使用跨项目服务账号运行批处理工作负载?一个可能的原因是,如果其他项目中的服务账号已分配了IAM 角色,这些角色可提供对该项目中资源的精细访问权限。

设置步骤

  1. 在服务账号项目中:

    1. 允许跨项目关联服务账号

    2. Enable the Dataproc API.

      Enable the API

    3. 向您的电子邮件账号(创建集群的用户)授予适用于服务账号项目的 Service Account User 角色,或者向服务账号项目中的服务账号授予该角色,以实现更精细的控制。

      如需了解详情,请参阅管理对项目、文件夹和组织的访问权限,以便在项目级别授予角色,并参阅管理对服务账号的访问权限,以便在服务账号级别授予角色。

      gcloud CLI 示例:

      以下示例命令会在项目级别向用户授予 Service Account User 角色:

      gcloud projects add-iam-policy-binding SERVICE_ACCOUNT_PROJECT_ID \
          --member=USER_EMAIL \
          --role="roles/iam.serviceAccountUser"
      

      注意:

      • USER_EMAIL:提供您的用户账号电子邮件地址,格式为:user:[email protected]

      以下示例命令会在服务账号级别向用户授予 Service Account User 角色:

      gcloud iam service-accounts add-iam-policy-binding VM_SERVICE_ACCOUNT_EMAIL \
          --member=USER_EMAIL \
          --role="roles/iam.serviceAccountUser"
      

      注意:

      • USER_EMAIL:提供您的用户账号电子邮件地址,格式为:user:[email protected]
    4. 向服务账号授予适用于批处理项目的 Dataproc Worker 角色。

      gcloud CLI 示例:

      gcloud projects add-iam-policy-binding BATCH_PROJECT_ID \
          --member=serviceAccount:SERVICE_ACCOUNT_NAME@SERVICE_ACCOUNT_PROJECT_ID.iam.gserviceaccount.com \
          --role="roles/dataproc.worker"
      
  2. 在批处理项目中:

    1. Dataproc 服务代理服务账号授予适用于服务账号项目的 Service Account User 角色和 Service Account Token Creator 角色,或者向服务账号项目中的服务账号授予这些角色,以实现更精细的控制。通过执行此操作,您使批处理项目中的 Dataproc 服务代理服务账号可以为服务账号项目中的服务账号创建令牌。

      如需了解详情,请参阅管理对项目、文件夹和组织的访问权限,以便在项目级别授予角色,并参阅管理对服务账号的访问权限,以便在服务账号级别授予角色。

      gcloud CLI 示例:

      以下命令会在项目级别向批处理项目中的 Dataproc 服务代理服务账号授予 Service Account User 角色和 Service Account Token Creator 角色:

      gcloud projects add-iam-policy-binding SERVICE_ACCOUNT_PROJECT_ID \
          --member=serviceAccount:service-BATCH_PROJECT_NUMBER@dataproc-accounts.iam.gserviceaccount.com \
          --role="roles/iam.serviceAccountUser"
      
      gcloud projects add-iam-policy-binding SERVICE_ACCOUNT_PROJECT_ID \
          --member=serviceAccount:service-BATCH_PROJECT_NUMBER@dataproc-accounts.iam.gserviceaccount.com \
          --role="roles/iam.serviceAccountTokenCreator"
      

      以下示例命令会在服务账号级别向批处理项目中的 Dataproc Service Agent 服务账号授予 Service Account User 角色和 Service Account Token Creator 角色:

      gcloud iam service-accounts add-iam-policy-binding VM_SERVICE_ACCOUNT_EMAIL \
          --member=serviceAccount:service-BATCH_PROJECT_NUMBER@dataproc-accounts.iam.gserviceaccount.com \
          --role="roles/iam.serviceAccountUser"
      
      gcloud iam service-accounts add-iam-policy-binding VM_SERVICE_ACCOUNT_EMAIL \
          --member=serviceAccount:service-BATCH_PROJECT_NUMBER@dataproc-accounts.iam.gserviceaccount.com \
          --role="roles/iam.serviceAccountTokenCreator"
      
    2. 向批处理项目中的 Compute Engine Service Agent 服务账号授予适用于服务账号项目的 Service Account Token Creator 角色,或者向服务账号项目中的服务账号授予该角色,以实现更精细的控制。通过执行此操作,您使批处理项目中的 Compute Engine Service Agent 服务账号有能力为服务账号项目中的服务账号创建令牌。

      如需了解详情,请参阅管理对项目、文件夹和组织的访问权限,以便在项目级别授予角色,并参阅管理对服务账号的访问权限,以便在服务账号级别授予角色。

      gcloud CLI 示例:

      以下示例命令会在项目级别为批处理项目中的 Compute Engine Service Agent 服务账号授予 Service Account Token Creator 角色:

      gcloud projects add-iam-policy-binding SERVICE_ACCOUNT_PROJECT_ID \
          --member=serviceAccount:service-BATCH_PROJECT_NUMBER@compute-system.iam.gserviceaccount.com \
          --role="roles/iam.serviceAccountTokenCreator"
      

      以下示例命令会在服务账号级别向集群项目中的 Compute Engine Service Agent 服务账号授予 Service Account Token Creator 角色:

      gcloud iam service-accounts add-iam-policy-binding VM_SERVICE_ACCOUNT_EMAIL \
          --member=serviceAccount:service-BATCH_PROJECT_NUMBER@compute-system.iam.gserviceaccount.com \
          --role="roles/iam.serviceAccountTokenCreator"
      

提交批处理工作负载

完成设置步骤后,您可以提交批处理工作负载。 请务必在服务账号项目中指定要用于批处理工作负载的服务账号。