角色和无服务器 IAM 角色

本指南面向 Spark 开发者、Spark 管理员和 Spark 查看者,介绍了如何获取所需的权限,以便开始使用 Managed Service for Apache Spark 无服务器批量工作负载和互动式会话

角色 他们在组织中的身份 他们需要 IAM 提供哪些功能
Spark 开发者 平台的构建者和使用者。编写和运行 PySpark 及 Spark 作业,在笔记本和会话中进行开发,读取和写入数据集,以及监控和排查工作负载问题。包括数据工程师、数据科学家和开发者。 提交、运行、监控和排查工作负载问题,以及读取和写入作业所涉及的数据的权限。
Spark 管理员 平台所有者和管理员。设置项目、决定工作负载的身份验证方式、引导 Spark 开发者加入项目、管理共享服务账号,以及强制执行组织防护措施和最小权限。也称为平台管理员。 用于授予他人访问权限、配置执行身份(最终用户凭据或共享服务账号)以及管理项目级无服务器资源的权限。
Spark 查看器 平台的观察者和审核者。跟踪作业完成情况、执行历史记录、指标和信息中心,而无需提交或修改工作负载。包括分析师、项目经理、FinOps 和合规审核员。 拥有查看批次、会话、操作和状态信息中心的只读权限。

选择运行时版本

建议的运行时版本取决于工作负载所运行的 Apache Spark 版本。

  • 运行时 3.x(推荐):使用 Spark 4,具有更简单的初始配置和使用流程。默认情况下,工作负载以提交用户身份运行,并使用用户的最终用户凭据 (EUC),这需要向用户授予单个 IAM 角色。管理员可以配置工作负载自定义服务账号,以实现更高级的用法。

  • 运行时 2.x:使用 Spark 3.5,并使用单独的提交者账号和工作负载账号。默认情况下,提交者是用户身份,而 Compute Engine 默认服务账号是工作负载身份。管理员可以配置自定义工作负载服务账号,以实现更精细的访问权限控制。

如需了解详情,请参阅 Managed Service for Apache Spark 运行时版本

特性比较

运行时 3.x 升级了 2.x 组件和功能,并简化了设置:

功能和工作流程 运行时 3.x(推荐) 运行时 2.x
Apache Spark 版本 Spark 4 Spark 3.5(以及更早的 3.x
交互式开发 Spark Connect 会话(行业标准的交互式 Spark 客户端) Jupyter 会话
R 批处理工作负载 sparklyr SparkR 批次
执行身份 最终用户凭证 (EUC)1 服务账号 1
用于作业暂存的存储空间 不需要(内部管理) Cloud Storage 暂存存储桶
日志输出格式 结构化 JSON 格式 (jsonPayload) 纯文本格式 (textPayload)

1 运行时 3.x 默认使用提交者的最终用户凭据 (EUC),除非为工作负载或会话指定了自定义服务账号。除非为工作负载或会话指定了自定义服务账号,否则运行时 2.x 默认使用 Compute Engine 默认服务账号

常见的数据和服务角色

Managed Service for Apache Spark 通常用于从其他Google Cloud 服务读取数据和向其他服务写入数据。本部分列出了与常用服务关联的角色。

  • 运行时 3.x(默认 EUC 身份):向 Spark 开发者(用户或群组)授予角色。
  • 运行时 2.x:向工作负载服务账号(Compute Engine 默认服务账号或自定义工作负载服务账号)授予角色。
服务或 API 角色 用途
Cloud Storage roles/storage.objectViewer
roles/storage.objectAdmin
读取输入数据和暂存的脚本。
写入输出数据。
BigLake 和 Lakehouse 运行时目录 roles/biglake.viewer
roles/biglake.editor
roles/biglake.admin
使用 BigLake REST 目录(Lakehouse REST 目录 [LRC])查询和管理 Apache Iceberg 和 Delta Lake 等开放表格式。
Bigtable roles/bigtable.reader
roles/bigtable.user
读取 Bigtable 表。
读取和写入 Bigtable 数据。
Dataproc Metastore (DPMS) roles/metastore.metadataViewer
roles/metastore.editor
读取 Hive 元数据。
管理元数据架构和表。

DPMS 是旧版 Metastore。我们鼓励客户使用 BigLake Lakehouse REST 目录 (LRC)。

BigQuery 提供了许多精细的 IAM 角色和资源级 ACL。如需了解详情,请参阅 BigQuery IAM 角色和权限

授予角色

以下部分包含有关如何为与设置、提交和监控 Managed Service for Apache Spark 无服务器 3.x 和 2.x 批处理工作负载和交互式会话相关的每种角色授予角色的说明。

运行时 3.x

默认情况下,3.x 工作负载在提交用户的最终用户凭据 (EUC) 下运行。管理员只需向用户授予一个角色,无需使用共享服务账号或临时存储桶。如果需要专用服务身份,管理员可以配置自定义服务账号。

开发者

Spark 开发者(运行时 3.x)

作为 Spark 开发者,您可以使用运行时 3.x 和用户凭据来开发、提交、监控和排查 Spark 工作负载问题,并直接访问数据

  1. 申请无服务器编辑者角色。请让管理员为您授予项目的 roles/dataproc.serverlessEditor

    gcloud projects add-iam-policy-binding PROJECT_ID \
      --member="user:DEVELOPER_EMAIL" \
      --role="roles/dataproc.serverlessEditor"
    

    借助此角色,您可以提交、监控、排查和取消 Spark 批量工作负载以及交互式 Spark Connect 会话。

  2. 获取数据和服务访问权限。由于工作负载以您的身份运行,因此您的身份需要有权访问 Spark 应用所涉及的服务和数据集(请参阅常见的数据和服务角色)。

    例如,向您自己授予对输入 Cloud Storage 存储桶的读取权限:

    gcloud storage buckets add-iam-policy-binding gs://INPUT_BUCKET \
      --member="user:DEVELOPER_EMAIL" \
      --role="roles/storage.objectViewer"
    
  3. 提交测试工作负载。提交测试批处理工作负载以确认您的设置。

    gcloud dataproc batches submit spark \
      --region=REGION \
      --version=3.0 \
      --class=org.apache.spark.examples.SparkPi \
      --jars=file:///usr/lib/spark/examples/jars/spark-examples.jar \
      -- 1000
    

    注意:

    • 如果您是首次以最终用户凭据 (EUC) 提交 3.x 工作负载,系统会提示您进行一次性 OAuth 授权。授予同意权,然后重新提交工作负载。

    • 如果您的项目没有 default VPC 网络,请使用 subnet 标志或字段指定区域子网(请参阅 Managed Service for Apache Spark 无服务器网络配置)。

    • 如需查看有关运行 PySpark 工作负载并跨 Cloud Storage、BigLake 和 BigQuery 配置所需权限的端到端示例,请参阅转换数据并写入 Apache Iceberg 表

自定义工作负载服务账号(运行时 3.x)

如果组织要求工作负载在专用且可审核的身份下运行,而不是使用最终用户凭据,请使用具有运行时 3.x 的自定义服务账号(请参阅 IAM 服务账号最佳实践)。

  1. 获取以自定义服务账号身份运行工作负载的权限。请让您的管理员为您授予自定义服务账号的 roles/iam.serviceAccountUser

    gcloud iam service-accounts add-iam-policy-binding \
      WORKLOAD_SA_EMAIL \
      --member="user:DEVELOPER_EMAIL" \
      --role="roles/iam.serviceAccountUser"
    
  2. 指定自定义服务。

    gcloud dataproc batches submit spark \
      --region=REGION \
      --service-account=WORKLOAD_SA_EMAIL \
      --version=3.0 \
      --class=org.apache.spark.examples.SparkPi \
      --jars=file:///usr/lib/spark/examples/jars/spark-examples.jar \
      -- 1000
    
  3. 授予数据集访问权限。使用自定义服务账号时,请直接向 WORKLOAD_SA_EMAIL 授予数据级角色(请参阅常见的数据和服务角色)。

管理员

Spark 管理员(运行时 3.x)

作为 Spark 管理员,您可以设置项目、决定工作负载的身份验证方式,并向 Spark 开发者授予访问权限。

工作负载会自动使用名为 default 的 VPC 子网。如果您的项目缺少 default 网络或使用自定义 VPC,请参阅 Managed Service for Apache Spark 无服务器网络配置,以设置并指定工作负载和会话的子网。

启用具有最终用户凭据的运行时 3.x(推荐)

这是最小权限、最低维护要求的设置。每个 Spark 开发者都以自己的用户身份运行工作负载;管理员无需设置和管理工作负载服务账号。

  1. 向 Spark 开发者授予 roles/dataproc.serverlessEditor

    gcloud projects add-iam-policy-binding PROJECT_ID \
      --member="user:DEVELOPER_EMAIL" \
      --role="roles/dataproc.serverlessEditor"
    
  2. 向只读查看者授予 roles/dataproc.serverlessViewer

    将此角色授予需要监控作业状态和日志但不提交或修改工作负载的审核员、信息中心使用者和团队成员。

    gcloud projects add-iam-policy-binding PROJECT_ID \
      --member="user:VIEWER_EMAIL" \
      --role="roles/dataproc.serverlessViewer"
    
  3. 确保开发者可以访问数据。

    默认情况下,运行时 3.x 工作负载以提交用户的身份运行。向 Spark 开发者或包含 Spark 开发者的 Google 群组授予数据访问角色,例如 roles/storage.objectViewerroles/storage.objectAdmin(请参阅常见的数据和服务角色)。

启用工作负载自定义服务账号(运行时 3.x)

如果您需要工作负载在专用且可审核的身份下运行,而不是使用最终用户凭据,请使用具有运行时 3.x 的自定义服务账号(请参阅 IAM 服务账号最佳实践)。

  1. 向工作负载自定义服务账号授予 roles/iam.serviceAccountUser

    gcloud iam service-accounts add-iam-policy-binding \
      WORKLOAD_SA_EMAIL \
      --member="user:DEVELOPER_EMAIL" \
      --role="roles/iam.serviceAccountUser"
    
  2. 向工作负载自定义服务账号授予 roles/dataproc.serverlessNode

    此角色允许服务账号管理计算节点池,并在工作负载执行期间与 Spark 应用通信:

    gcloud projects add-iam-policy-binding PROJECT_ID \
      --member="serviceAccount:WORKLOAD_SA_EMAIL" \
      --role="roles/dataproc.serverlessNode"
    
  3. 授予对应用数据的访问权限。

    直接向工作负载服务账号授予数据级角色,以便该账号可以读取和写入应用数据集(请参阅常见的数据和服务角色)。如果您的工作负载使用分阶段脚本或自定义 JAR,还需授予对相应 Cloud Storage 存储桶的读取权限。

启用提交者自定义服务账号(运行时 3.x)

当自动化系统(例如 Managed Service for Apache Airflow、Cloud Scheduler 或 CI/CD 流水线)在没有交互式人工用户的情况下提交工作负载时,请使用提交者自定义服务账号。

  • 在此场景中,提交者服务账号运行启动作业的 gcloud 命令。下面是一个使用 gcloud 的示例:

    gcloud dataproc batches submit spark \
      --service-account=WORKLOAD_SA_EMAIL \
      ...
    
  • 工作负载服务账号在计算节点上运行 Spark 代码,并访问应用数据集。

    1. 向提交者自定义服务账号授予 roles/dataproc.serverlessEditor
    gcloud projects add-iam-policy-binding PROJECT_ID \
      --member="serviceAccount:SUBMITTER_SA_EMAIL" \
      --role="roles/dataproc.serverlessEditor"
    

    如果使用运行时 3.x 并指定提交者自定义服务账号,则需要自定义工作负载服务账号才能运行工作负载;由于没有交互式最终用户,因此运行时无法回退到最终用户凭据 (EUC)。作业必须以指定的工作负载服务账号 (--service-account) 身份运行。

  1. 向工作负载自定义服务账号授予 roles/iam.serviceAccountUser

    gcloud iam service-accounts add-iam-policy-binding \
      WORKLOAD_SA_EMAIL \
      --member="serviceAccount:SUBMITTER_SA_EMAIL" \
      --role="roles/iam.serviceAccountUser"
    
  2. 配置工作负载自定义服务账号。向 WORKLOAD_SA_EMAIL 授予 roles/dataproc.serverlessNode 和应用数据角色。

Spark 管理员角色参考(运行时 3.x)

下表总结了在运行时 3.x 中要授予的角色。

提交者 Workload Identity 授予提交者 授予给工作负载服务账号
最终用户(默认) 最终用户计算 (EUC) roles/dataproc.serverlessEditor(+ 用户的数据角色 (无 - 未使用 SA)
最终用户 自定义 SA 自定义 SA 中的 roles/dataproc.serverlessEditor + roles/iam.serviceAccountUser roles/dataproc.serverlessNode + 数据角色
自定义 SA(自动化) 自定义 SA 自定义 SA 中的 roles/dataproc.serverlessEditor + roles/iam.serviceAccountUser roles/dataproc.serverlessNode + 数据角色

查看者

Spark 查看器(运行时 3.x)

作为 Spark 查看者,您可以查看批处理工作负载、交互式会话、执行指标、日志和状态信息中心,而无需提交或修改工作负载。

请让管理员向您授予 roles/dataproc.serverlessViewer

gcloud projects add-iam-policy-binding PROJECT_ID \
  --member="user:VIEWER_EMAIL" \
  --role="roles/dataproc.serverlessViewer"

此角色可授予只读权限,用于查看无服务器批量工作负载、交互式会话和操作状态。

详细权限

详细权限(运行时 3.x)

本部分列出了与运行时 3.x 关联的 IAM 角色中包含的 IAM 权限。

Serverless Editor 角色 (roles/dataproc.serverlessEditor)

此角色及其权限可提供对运行时 3.x 无服务器批量工作负载和交互式会话的读取和写入权限。

权限 说明
dataproc.batches.create 创建并提交新的批处理工作负载。
dataproc.batches.get 获取批处理工作负载状态和详细信息。
dataproc.batches.list 列出项目或区域中的所有批处理工作负载。
dataproc.batches.delete 删除已完成或已终止的批次。
dataproc.batches.cancel 取消正在运行的批处理工作负载。
dataproc.sessions.create 创建交互式 Spark Connect 会话。
dataproc.sessions.get 获取会话状态和详细信息。
dataproc.sessions.list 列出项目或区域中的所有会话。
dataproc.sessions.delete 删除已终止的会话。
dataproc.sessions.terminate 终止正在运行的交互式会话。
dataproc.operations.get 轮询异步操作状态(gcloud CLI 需要)。

无服务器节点角色 (roles/dataproc.serverlessNode)

为运行时 3.x 自定义工作负载服务账号提供节点池管理和内部 Spark 通信权限。

如果使用具有运行时 3.x 的自定义工作负载服务账号,则需要此角色及其权限。在默认 3.x 最终用户凭据 (EUC) 下运行的工作负载不使用工作负载服务账号。

权限 说明
dataproc.batches.sparkApplicationWrite 用于批处理工作负载的 Spark 应用通信。
dataproc.sessions.sparkApplicationWrite 交互式会话的 Spark 应用通信。
dataprocrm.nodePools.create 创建计算节点池。
dataprocrm.nodePools.delete 删除计算节点池。
dataprocrm.nodePools.resize 动态扩缩节点池。
dataprocrm.nodePools.get 读取节点池状态。
dataprocrm.nodePools.list 列出节点池。
dataprocrm.nodePools.update 更新节点池配置。
dataprocrm.nodePools.deleteNodes 从池中移除特定节点。
dataprocrm.nodes.list 列出池中的节点。
dataprocrm.nodes.delete 在任务完成后删除节点。
dataprocrm.nodes.get 读取节点状态。
dataprocrm.nodes.heartbeat 报告节点健康状况和心跳。
dataprocrm.nodes.mintOAuthToken 为节点操作生成 OAuth 令牌。
dataprocrm.operations.get 检查基础架构操作状态。

Serverless Viewer 角色 (roles/dataproc.serverlessViewer)

如果使用运行时 3.x 和提交者自定义服务账号,则需要此角色及其权限。它们提供对运行时 3.x 无服务器批量工作负载、交互式会话和操作状态的只读访问权限。

权限 说明
dataproc.batches.get 读取批处理工作负载状态和详细信息。
dataproc.batches.list 列出批处理工作负载。
dataproc.sessions.get 读取会话状态和详细信息。
dataproc.sessions.list 列出会话。
dataproc.operations.get 读取操作状态。
dataproc.operations.list 列出操作。

服务账号委托角色 (roles/iam.serviceAccountUser)

允许用户或自动化系统以自定义服务账号身份附加和运行工作负载。工作负载会使用授予该服务账号的权限和资源访问权限来执行,而不是使用提交用户的最终用户凭据 (EUC)。

权限 说明
iam.serviceAccounts.actAs 允许提交者以指定服务账号的身份运行工作负载。

运行时 2.x

默认情况下,运行时 2.x 工作负载以 Compute Engine 默认服务账号的身份运行。提交者(用户或自动化系统)在运行工作负载或会话时会以该账号的身份行事。

开发者

Spark 开发者(运行时 2.x)

作为使用运行时 2.x 的 Spark 开发者,您可以开发、提交、监控 Spark 工作负载并排查相关问题,还可以访问数据。由于工作负载以服务账号(而非您的用户身份)运行,因此管理员会向您授予 IAM Editor 角色和 Service Account User 角色,以便您以工作负载服务账号的身份运行工作负载。

  1. 申请编辑者角色。请让管理员为您授予项目的 roles/dataproc.editor 权限:

    gcloud projects add-iam-policy-binding PROJECT_ID \
      --member="user:DEVELOPER_EMAIL" \
      --role="roles/dataproc.editor"
    
  2. 请求委托权限。请让管理员为您授予工作负载服务账号的 roles/iam.serviceAccountUser 权限。

    默认工作负载服务账号是 Compute Engine 默认服务账号 PROJECT_NUMBER-compute@

    gcloud iam service-accounts add-iam-policy-binding \
      PROJECT_NUMBER-compute@ \
      --member="user:DEVELOPER_EMAIL" \
      --role="roles/iam.serviceAccountUser"
    
  3. 获取暂存存储桶访问权限。运行时 2.x 提交者需要上传脚本和 JAR 的权限,而工作负载服务账号需要管理临时文件和日志的权限。roles/storage.objectAdmin 角色包含这些权限。

    # Grant submitter access to upload staged files
    gcloud projects add-iam-policy-binding PROJECT_ID \
      --member="user:DEVELOPER_EMAIL" \
      --role="roles/storage.objectAdmin"
    
    # Grant workload service account access for staging, temporary files, and logs
    gcloud projects add-iam-policy-binding PROJECT_ID \
      --member="serviceAccount:PROJECT_NUMBER-compute@" \
      --role="roles/storage.objectAdmin"
    
  4. 提交测试批处理工作负载。提交测试批处理工作负载以确认您的设置。

    gcloud dataproc batches submit spark \
      --region=REGION \
      --version=2.2 \
      --class=org.apache.spark.examples.SparkPi \
      --jars=file:///usr/lib/spark/examples/jars/spark-examples.jar \
      -- 1000
    

    注意:

自定义工作负载自定义服务账号(运行时 2.x)

如果您的组织要求工作负载在专用且可审核的身份下运行,而不是在共享的 Compute Engine 默认服务账号下运行,请使用自定义服务账号(请参阅 IAM 服务账号最佳实践)。

  1. 获取以自定义服务账号身份运行工作负载的权限。请让您的管理员为您授予自定义服务账号的 roles/iam.serviceAccountUser 权限:

    gcloud iam service-accounts add-iam-policy-binding \
      WORKLOAD_SA_EMAIL \
      --member="user:DEVELOPER_EMAIL" \
      --role="roles/iam.serviceAccountUser"
    
  2. 提交工作负载时,使用 --service-account 标志指定自定义服务账号。

    gcloud dataproc batches submit spark \
      --region=REGION \
      --service-account=WORKLOAD_SA_EMAIL \
      --version=2.2 \
      --class=org.apache.spark.examples.SparkPi \
      --jars=file:///usr/lib/spark/examples/jars/spark-examples.jar \
      -- 1000
    
  3. 数据集访问权限:如果您的工作负载无法访问数据集,请向工作负载自定义服务账号(而非您的用户账号)授予所需的数据访问角色(请参阅常见的数据和服务角色)。

管理员

Spark 管理员(运行时 2.x)

作为 Spark 管理员,您需要设置项目、配置服务账号,并向 Spark 开发者授予访问权限。

工作负载会自动使用名为 default 的 VPC 子网。如果您的项目缺少 default 网络或使用自定义 VPC,请参阅 Managed Service for Apache Spark 无服务器网络配置,以设置并指定工作负载和会话的子网。

启用默认运行时 2.x

使用默认运行时 2.x 时,工作负载以 Compute Engine 默认服务账号的身份运行。

  1. 向开发者授予 roles/dataproc.editor

    gcloud projects add-iam-policy-binding PROJECT_ID \
      --member="user:DEVELOPER_EMAIL" \
      --role="roles/dataproc.editor"
    
  2. 授予默认服务账号 roles/iam.serviceAccountUser 权限。

    gcloud iam service-accounts add-iam-policy-binding \
      PROJECT_NUMBER-compute@ \
      --member="user:DEVELOPER_EMAIL" \
      --role="roles/iam.serviceAccountUser"
    
  3. 向工作负载服务账号授予 roles/dataproc.worker

    此角色允许服务账号注册 VM 代理、租用和执行计算任务,以及向 Cloud Logging 和 Cloud Monitoring 发出日志和指标:

    gcloud projects add-iam-policy-binding PROJECT_ID \
      --member="serviceAccount:PROJECT_NUMBER-compute@" \
      --role="roles/dataproc.worker"
    
  4. 授予 roles/storage.objectAdmin 暂存存储桶存储权限。

    gcloud projects add-iam-policy-binding PROJECT_ID \
      --member="serviceAccount:PROJECT_NUMBER-compute@" \
      --role="roles/storage.objectAdmin"
    
  5. 向工作负载服务账号授予数据集访问权限。

    向工作负载服务账号授予数据级角色,使其能够访问 Spark 应用数据集(请参阅常见的数据和服务角色)。

启用工作负载自定义服务账号(运行时 2.x)

使用具有运行时 2.x 的工作负载自定义服务账号来隔离工作负载,而不是使用共享的 Compute Engine 默认服务账号。

  1. 向开发者授予对自定义服务账号的 roles/iam.serviceAccountUser

    gcloud iam service-accounts add-iam-policy-binding \
      WORKLOAD_SA_EMAIL \
      --member="user:DEVELOPER_EMAIL" \
      --role="roles/iam.serviceAccountUser"
    
  2. 向自定义服务账号授予 roles/dataproc.worker

    gcloud projects add-iam-policy-binding PROJECT_ID \
      --member="serviceAccount:WORKLOAD_SA_EMAIL" \
      --role="roles/dataproc.worker"
    
  3. 授予应用数据和暂存访问权限。

    直接向工作负载自定义服务账号授予数据级角色(请参阅常见的数据和服务角色),并授予对暂存存储桶和临时存储桶的 roles/storage.objectAdmin 权限。

启用提交者自定义服务账号(运行时 2.x)

当自动化系统(例如 Managed Service for Apache Airflow、Cloud Scheduler 或 CI/CD 流水线)在没有交互式人工用户的情况下提交工作负载时,请使用提交者自定义服务账号。

  1. 向提交者服务账号授予 roles/dataproc.editor

    gcloud projects add-iam-policy-binding PROJECT_ID \
      --member="serviceAccount:SUBMITTER_SA_EMAIL" \
      --role="roles/dataproc.editor"
    
  2. 向工作负载服务账号授予 roles/iam.serviceAccountUser 权限。

    gcloud iam service-accounts add-iam-policy-binding \
      WORKLOAD_SA_EMAIL \
      --member="serviceAccount:SUBMITTER_SA_EMAIL" \
      --role="roles/iam.serviceAccountUser"
    
  3. 配置工作负载服务账号。向 WORKLOAD_SA_EMAIL 授予 roles/dataproc.worker 和数据集访问权限。

Spark 管理员角色参考(运行时 2.x)

下表总结了在运行时授予的 IAM 角色 2.x

提交者 Workload Identity 授予提交者 授予给工作负载服务账号
最终用户(默认) Compute Engine 默认服务账号 默认服务账号上的 roles/dataproc.editor + roles/iam.serviceAccountUser roles/dataproc.worker + roles/storage.objectAdmin + 数据角色
最终用户 自定义 SA 自定义 SA 中的 roles/dataproc.editor + roles/iam.serviceAccountUser roles/dataproc.worker + roles/storage.objectAdmin + 数据角色
自定义 SA(自动化) 自定义 SA 自定义 SA 中的 roles/dataproc.editor + roles/iam.serviceAccountUser roles/dataproc.worker + roles/storage.objectAdmin + 数据角色

查看者

Spark 查看器(运行时 2.x)

作为 Spark 查看者,您可以查看批处理工作负载、交互式会话、执行指标、日志和状态信息中心,而无需提交或修改工作负载。

请让管理员向您授予 roles/dataproc.viewer

gcloud projects add-iam-policy-binding PROJECT_ID \
  --member="user:VIEWER_EMAIL" \
  --role="roles/dataproc.viewer"

此角色可授予对 Managed Service for Apache Spark 资源(例如集群、作业、批处理、会话和操作)的只读权限。

详细权限

详细权限(运行时 2.x)

本部分列出了与运行时 2.x 关联的 IAM 角色中包含的 IAM 权限。

Editor 角色 (roles/dataproc.editor)

此角色可控制运行时 2.x 无服务器工作负载和会话,以及 Compute Engine 上的 Managed Service for Apache Spark 集群和作业。

权限 无服务器模式必需 说明
dataproc.batches.create 创建并提交新的批处理工作负载。
dataproc.batches.get 获取批处理工作负载状态和详细信息。
dataproc.batches.list 列出项目或区域中的所有批处理工作负载。
dataproc.batches.delete 删除已完成或已终止的批次。
dataproc.batches.cancel 取消正在运行的批处理工作负载。
dataproc.sessions.create 创建交互式会话。
dataproc.sessions.get 获取会话状态和详细信息。
dataproc.sessions.list 列出项目或区域中的所有会话。
dataproc.sessions.delete 删除已终止的会话。
dataproc.sessions.terminate 终止正在运行的交互式会话。
dataproc.operations.get 轮询异步操作状态(gcloud CLI 需要)。
compute.networks.get 查看 VPC 网络配置。
compute.networks.list 列出可用的 VPC 网络和子网。
dataproc.clusters.* 否(仅限集群) 创建、管理和使用基于 Compute Engine 的 Managed Service for Apache Spark 集群。
dataproc.jobs.* 否(仅限集群) 在基于 Compute Engine 的 Managed Service for Apache Spark 集群上提交和管理作业。
dataproc.autoscalingPolicies.* 否(仅限集群) 基于 Compute Engine 的集群的自动扩缩政策。
dataproc.nodeGroups.* 否(仅限集群) 基于 Compute Engine 的集群中的自定义节点组。
dataproc.workflowTemplates.* 否(仅限集群) 基于 Compute Engine 的集群的模板工作流。
compute.machineTypes.* 否(仅限集群) 基于 Compute Engine 的集群的机器类型元数据。

Worker 角色 (roles/dataproc.worker)

此角色为运行时 2.x 提供工作负载执行权限。

权限 说明
dataproc.agents.create 在虚拟机上注册 VM 代理
dataproc.agents.get 读取代理状态。
dataproc.agents.update 更新代理状态。
dataproc.agents.delete 在完成时取消注册代理。
dataproc.tasks.lease 租用计算任务以供执行。
dataproc.tasks.reportStatus 报告任务执行状态。
storage.objects.create 写入暂存数据、临时文件和日志。
storage.objects.delete 清理临时文件。
storage.objects.get 读取启动脚本和暂存文件。
storage.objects.list 列出临时存储桶和临时存储桶的内容。

Viewer 角色 (roles/dataproc.viewer)

此角色提供对所有 Managed Service for Apache Spark 资源的只读访问权限。

权限 无服务器模式必需 说明
dataproc.batches.get 读取批处理工作负载状态和详细信息。
dataproc.batches.list 列出项目或区域中的所有批处理工作负载。
dataproc.sessions.get 读取会话状态和详细信息。
dataproc.sessions.list 列出项目或区域中的所有会话。
dataproc.operations.get 读取异步操作状态。
dataproc.operations.list 列出项目或区域中的操作。
dataproc.clusters.get 否(仅限集群) 查看集群配置和状态。
dataproc.clusters.list 否(仅限集群) 列出项目或区域中的集群。
dataproc.jobs.get 否(仅限集群) 查看集群上的作业详细信息和状态。
dataproc.jobs.list 否(仅限集群) 列出集群上的作业。
dataproc.autoscalingPolicies.get 否(仅限集群) 查看自动扩缩政策详情。
dataproc.autoscalingPolicies.list 否(仅限集群) 列出自动扩缩政策。
dataproc.workflowTemplates.get 否(仅限集群) 查看工作流模板详细信息。
dataproc.workflowTemplates.list 否(仅限集群) 列出工作流模板。

服务账号委托角色 (roles/iam.serviceAccountUser)

允许用户或自动化系统以 Compute Engine 默认服务账号或自定义服务账号身份附加和运行工作负载。工作负载会以授予该服务账号的权限和资源访问权限执行。

权限 说明
iam.serviceAccounts.actAs 允许提交者以指定服务账号的身份运行工作负载。

后续步骤