借助 Identity and Access Management (IAM),您可以控制用户和群组对项目资源的访问权限。本文档重点介绍与 Managed Service for Apache Spark 相关的 IAM 权限和授予这些权限的 IAM 角色。
Managed Service for Apache Spark 权限
Managed Service for Apache Spark 权限允许用户(包括服务账号)对 Managed Service for Apache Spark 集群、作业、操作和工作流模板执行操作。例如,dataproc.clusters.create 权限允许用户在项目中创建 Managed Service for Apache Spark 集群。通常,您不会授予权限,而是授予具有一项或多项权限的角色。
下表列出了调用 Managed Service for Apache Spark API(方法)所需的权限。这些表格根据与每个 Managed Service for Apache Spark 资源(集群、作业、操作和工作流模板)关联的 API 进行整理。
权限范围:下表中列出的 Managed Service for Apache Spark 权限范围是所属的 Google Cloud项目(cloud-platform 范围)。请参阅服务账号权限。
示例:
dataproc.clusters.create允许在所属项目中创建 Managed Service for Apache Spark 集群dataproc.jobs.create允许在所属项目中将 Managed Service for Apache Spark 作业提交给 Managed Service for Apache Spark 集群dataproc.clusters.list允许列出所属项目中 Managed Service for Apache Spark 集群的详细信息
集群方法所需的权限
| 方法 | 所需权限 |
|---|---|
| projects.regions.clusters.create 1, 2 | dataproc.clusters.create |
| projects.regions.clusters.get | dataproc.clusters.get |
| projects.regions.clusters.list | dataproc.clusters.list |
| projects.regions.clusters.patch 1, 2, 3 | dataproc.clusters.update |
| projects.regions.clusters.delete 1 | dataproc.clusters.delete |
| projects.regions.clusters.start | dataproc.clusters.start |
| projects.regions.clusters.stop | dataproc.clusters.stop |
| projects.regions.clusters.getIamPolicy | dataproc.clusters.getIamPolicy |
| projects.regions.clusters.setIamPolicy | dataproc.clusters.setIamPolicy |
注意:
- 如需通过 Google Cloud CLI 获取状态更新,您还需要拥有
dataproc.operations.get权限。 - 如需通过 Google Cloud CLI 获取操作结果,您还需要具有
dataproc.clusters.get权限。 - 如需在集群上启用自动扩缩政策,您还需要具有
dataproc.autoscalingPolicies.use权限。
作业方法所需的权限
| 方法 | 所需权限 |
|---|---|
| projects.regions.jobs.submit 1, 2 | dataproc.jobs.create dataproc.clusters.use |
| projects.regions.jobs.get | dataproc.jobs.get |
| projects.regions.jobs.list | dataproc.jobs.list |
| projects.regions.jobs.cancel 1 | dataproc.jobs.cancel |
| projects.regions.jobs.patch 1 | dataproc.jobs.update |
| projects.regions.jobs.delete 1 | dataproc.jobs.delete |
| projects.regions.jobs.getIamPolicy | dataproc.jobs.getIamPolicy |
| projects.regions.jobs.setIamPolicy | dataproc.jobs.setIamPolicy |
注意:
Google Cloud CLI 还需要具有
jobs submit、jobs wait、jobs update、jobs delete和jobs kill命令的dataproc.jobs.get权限。gcloud CLI 还需拥有
dataproc.clusters.get权限才能提交作业。如需通过示例了解如何使用 Managed Service for Apache Spark Granular IAM 为用户设置在集群上运行gcloud dataproc jobs submit所需的权限,请参阅使用精细 IAM 提交作业。
操作方法所需的权限
| 方法 | 所需权限 |
|---|---|
| projects.regions.operations.get | dataproc.operations.get |
| projects.regions.operations.list | dataproc.operations.list |
| projects.regions.operations.cancel | dataproc.operations.cancel |
| projects.regions.operations.delete | dataproc.operations.delete |
| projects.regions.operations.getIamPolicy | dataproc.operations.getIamPolicy |
| projects.regions.operations.setIamPolicy | dataproc.operations.setIamPolicy |
工作流模板方法所需的权限
| 方法 | 所需权限 |
|---|---|
| projects.regions.workflowTemplates.instantiate | dataproc.workflowTemplates.instantiate |
| projects.regions.workflowTemplates.instantiateInline | dataproc.workflowTemplates.instantiateInline |
| projects.regions.workflowTemplates.create | dataproc.workflowTemplates.create |
| projects.regions.workflowTemplates.get | dataproc.workflowTemplates.get |
| projects.regions.workflowTemplates.list | dataproc.workflowTemplates.list |
| projects.regions.workflowTemplates.update | dataproc.workflowTemplates.update |
| projects.regions.workflowTemplates.delete | dataproc.workflowTemplates.delete |
| projects.regions.workflowTemplates.getIamPolicy | dataproc.workflowTemplates.getIamPolicy |
| projects.regions.workflowTemplates.setIamPolicy | dataproc.workflowTemplates.setIamPolicy |
注意:
工作流模板权限独立于集群和作业权限。 没有
create cluster或submit job权限的用户可以创建并实例化工作流模板。Google Cloud CLI 还需要
dataproc.operations.get权限才能轮询工作流完成情况。具有
dataproc.operations.cancel权限才能取消正在运行的工作流。
自动扩缩政策方法所需的权限
| 方法 | 所需权限 |
|---|---|
| projects.regions.autoscalingPolicies.create | dataproc.autoscalingPolicies.create |
| projects.regions.autoscalingPolicies.get | dataproc.autoscalingPolicies.get |
| projects.regions.autoscalingPolicies.list | dataproc.autoscalingPolicies.list |
| projects.regions.autoscalingPolicies.update | dataproc.autoscalingPolicies.update |
| projects.regions.autoscalingPolicies.delete | dataproc.autoscalingPolicies.delete |
| projects.regions.autoscalingPolicies.getIamPolicy | dataproc.autoscalingPolicies.getIamPolicy |
| projects.regions.autoscalingPolicies.setIamPolicy | dataproc.autoscalingPolicies.setIamPolicy |
注意:
- 如需通过
clusters.patch方法请求在集群上启用自动扩缩政策。您需要具有dataproc.autoscalingPolicies.use权限。
节点组方法所需的权限
| 方法 | 所需权限 |
|---|---|
| projects.regions.nodeGroups.create | dataproc.nodeGroups.create |
| projects.regions.nodeGroups.get | dataproc.nodeGroups.get |
| projects.regions.nodeGroups.resize | dataproc.nodeGroups.update |
Managed Service for Apache Spark 角色
Managed Service for Apache Spark IAM 角色包含一个或多个权限。您可以向用户或群组授予角色,以允许他们对项目中的 Managed Service for Apache Spark 资源执行操作。例如,Managed Service for Apache Spark Viewer 角色具有 get 和 list 权限,这些权限允许用户获取和列出项目中的 Managed Service for Apache Spark 集群、作业和操作。
下表列出了包含创建和管理 Managed Service for Apache Spark 集群所需权限的角色。
| 向以下对象授予角色 | 角色 |
|---|---|
| 用户 | 向用户授予以下角色:
|
| 服务账号 | 向 Managed Service for Apache Spark 虚拟机服务账号授予 Dataproc Worker 角色。 |
请注意以下几点:
您可能需要向 Managed Service for Apache Spark 虚拟机服务账号授予其他预定义角色或自定义角色,这些角色包含其他操作所需的权限,例如在 Cloud Storage、BigQuery、Cloud Logging 和其他 Google Cloud 资源中读写数据。
在某些项目中,Managed Service for Apache Spark 虚拟机服务账号可能已被自动授予项目 Editor 角色,该角色包含 Managed Service for Apache Spark Worker 角色权限以及 Managed Service for Apache Spark 数据平面操作不需要的其他权限。为了遵循最小权限原则这一安全方面的最佳实践,请将 Editor 角色替换为 Managed Service for Apache Spark Worker 角色(请参阅查看虚拟机服务账号角色)。
您是否需要授予角色?
根据组织政策,系统可能已授予必需的角色。
查看授予用户的角色
如需查看用户是否已被授予角色,请按照管理对项目、文件夹和组织的访问权限 > 查看当前访问权限中的说明操作。
检查授予服务账号的角色
如需查看服务账号是否已被授予角色,请参阅查看和管理 IAM 服务账号。
检查服务账号已获得的角色
如需查看用户是否已获得服务账号的角色,请按照管理对服务账号的访问权限 > 查看当前访问权限中的说明操作。
查找 Managed Service for Apache Spark 角色和权限
您可以使用以下部分查找 Managed Service for Apache Spark 角色和权限。
| Role | Permissions |
|---|---|
Dataproc Administrator( Full control of Dataproc resources. |
|
Dataproc Editor( Provides the permissions necessary for viewing the resources required to manage Managed Service for Apache Spark, including machine types, networks, projects, and zones. Lowest-level resources where you can grant this role:
|
|
Dataproc Viewer( Provides read-only access to Managed Service for Apache Spark resources. Lowest-level resources where you can grant this role:
|
|
Dataproc Hub Agent( Allows management of Dataproc resources. Intended for service accounts running Dataproc Hub instances. |
|
Dataproc Serverless Editor( Permissions needed to run serverless sessions and batches as a user |
|
Dataproc Serverless Node.( Node access to Dataproc Serverless sessions and batches. Intended for service accounts. |
|
Dataproc Serverless Viewer( Permissions needed to view serverless sessions and batches |
|
Dataproc Worker( Provides worker access to Managed Service for Apache Spark resources. Intended for service accounts. |
|
Service agent roles
Service agent roles should only be granted to service agents.
| Role | Permissions |
|---|---|
Dataproc Service Agent( Gives Dataproc Service Account access to service accounts, compute resources, storage resources, and kubernetes resources. Includes access to service accounts. |
|
注意:
- 使用 Google Cloud 控制台或 gcloud CLI Google Cloud CLI 时,需要或建议拥有
compute权限,才能创建和查看 Managed Service for Apache Spark 集群。 - 如要允许用户上传文件,请授予
Storage Object Creator角色。 如需允许用户查看作业输出,请授予Storage Object Viewer角色。 - 用户必须拥有
monitoring.timeSeries.list权限才能在 Google Cloud 控制台→Managed Service for Apache Spark→集群详情概览标签页上查看图表。 - 用户必须拥有
compute.instances.list权限才能在Google Cloud 控制台→Managed Service for Apache Spark→集群详情虚拟机实例标签页上查看实例状态和主实例 SSH 菜单。如需了解 Compute Engine 角色,请参阅 Compute Engine→可用的 IAM 角色。 - 如需使用用户指定的服务账号创建集群,指定的服务账号必须具有由
Managed Service for Apache Spark Worker角色授予的所有权限,包括对 Managed Service for Apache Spark 暂存存储分区和临时存储分区的访问权限。视配置的功能而定,可能需要其他角色。 如需了解详情,请参阅创建使用自定义虚拟机服务账号的集群。
项目角色
您还可以使用 IAM 项目角色在项目级层设置权限。下表列出了与 IAM 项目角色关联的权限:
| 项目角色 | 权限 |
|---|---|
| Project Viewer | 拥有不会修改状态的只读操作(获取、列出)的所有项目权限 |
| Project Editor | 拥有所有“Project Viewer”权限,外加可修改状态的操作(创建、删除、更新、使用、取消、停止、启动)的所有项目权限 |
| Project Owner | 拥有所有“项目修改者”权限,外加为项目管理访问控制的权限(获取/设置 IamPolicy)和设置项目结算的权限 |
IAM 角色和 Managed Service for Apache Spark 操作汇总
下表列出了与项目和 Managed Service for Apache Spark 角色关联的 Managed Service for Apache Spark 操作。
| 操作 | Project Editor | Project Viewer | Managed Service for Apache Spark 管理员 | Managed Service for Apache Spark 编辑器 | Managed Service for Apache Spark 查看器 |
|---|---|---|---|---|---|
| 获取/设置 Managed Service for Apache Spark IAM 权限 | 否 | 否 | 是 | 否 | 否 |
| 创建集群 | 是 | 否 | 是 | 是 | 否 |
| 列出集群 | 是 | 是 | 是 | 是 | 是 |
| 获取集群详情 | 是 | 是 | 是1, 2 | 是1, 2 | 是1, 2 |
| 更新集群 | 是 | 否 | 是 | 是 | 否 |
| 删除集群 | 是 | 否 | 是 | 是 | 否 |
| 启动/停止集群 | 是 | 否 | 是 | 是 | 否 |
| 提交作业 | 是 | 否 | 是3 | 是3 | 否 |
| 列出作业 | 是 | 是 | 是 | 是 | 是 |
| 获取作业详情 | 是 | 是 | 是4 | 是4 | 是4 |
| 取消作业 | 是 | 否 | 是 | 是 | 否 |
| 删除作业 | 是 | 否 | 是 | 是 | 否 |
| 列出操作 | 是 | 是 | 是 | 是 | 是 |
| 获取操作详情 | 是 | 是 | 是 | 是 | 是 |
| 删除操作 | 是 | 否 | 是 | 是 | 否 |
注意:
- 除非用户还拥有包含
monitoring.timeSeries.list权限的角色,否则将无法使用性能图表。 - 除非用户还拥有包含
compute.instances.list权限的角色,否则集群中的虚拟机列表将不包含主实例的状态信息或 SSH 链接。 - 上传文件的作业要求用户具有
Storage Object Creator角色或具有对 Managed Service for Apache Spark 暂存存储桶的写入权限。 - 除非用户还具有“存储对象查看者”角色或已被授予项目的暂存存储分区的读取权限,否则将无法访问作业输出。
Managed Service for Apache Spark 虚拟机的访问范围
虚拟机访问权限范围和 IAM 角色协同工作,以限制虚拟机对 Google CloudAPI 的访问权限。例如,如果仅向集群虚拟机授予 https://www.googleapis.com/auth/storage-full 范围,则在集群虚拟机上运行的应用可以调用 Cloud Storage API,但是它们无法向 BigQuery 发出请求,即使用于运行它们的虚拟机服务账号已被授予具有广泛权限的 BigQuery 角色也不例外。
最佳做法是向虚拟机授予广泛的 cloud-platform 范围 (https://www.googleapis.com/auth/cloud-platform),然后通过向虚拟机服务账号授予特定的 IAM 角色来限制虚拟机访问权限(请参阅范围最佳实践)。
默认的 Managed Service for Apache Spark 虚拟机范围。如果在创建集群时未指定范围(请参阅 gcloud dataproc cluster create --scopes),Managed Service for Apache Spark 虚拟机将具有以下默认范围集:
https://www.googleapis.com/auth/cloud-platform (clusters created with image version 2.1+).
https://www.googleapis.com/auth/bigquery
https://www.googleapis.com/auth/bigtable.admin.table
https://www.googleapis.com/auth/bigtable.data
https://www.googleapis.com/auth/cloud.useraccounts.readonly
https://www.googleapis.com/auth/devstorage.full_control
https://www.googleapis.com/auth/devstorage.read_write
https://www.googleapis.com/auth/logging.write
如果您在创建集群时指定了范围,则集群虚拟机将拥有您指定的范围以及下面的必需的最小范围集(即使您未指定这些范围):
https://www.googleapis.com/auth/cloud-platform (clusters created with image version 2.1+).
https://www.googleapis.com/auth/cloud.useraccounts.readonly
https://www.googleapis.com/auth/devstorage.read_write
https://www.googleapis.com/auth/logging.write
IAM 允许政策管理
您可以使用允许政策向正文授予 IAM 角色。您可以使用 Google Cloud 控制台、IAM API 或 Google Cloud CLI 来获取和设置允许政策。
- 对于 Google Cloud 控制台,请参阅使用 Google Cloud 控制台进行访问权限控制。
- 对于 API,请参阅使用 API 进行访问控制。
- 对于 Google Cloud CLI,请参阅使用 Google Cloud CLI 进行访问权限控制。
后续步骤
- 了解 Managed Service for Apache Spark 主账号和角色
- 了解 Managed Service for Apache Spark Granular IAM
- 详细了解 IAM。
- 了解 Managed Service for Apache Spark 中的服务账号