概览
借助 Identity and Access Management (IAM),您可以控制用户和群组对项目资源的访问权限。本文档重点介绍与 Dataproc 相关的 IAM 权限和授予这些权限的 IAM 角色。
Dataproc 权限
Dataproc 权限允许用户(包括服务账号)对 Dataproc 集群、作业、操作和工作流模板执行操作。例如,dataproc.clusters.create 权限允许用户在项目中创建 Dataproc 集群。通常,您不会授予权限,而是授予具有一项或多项权限的角色。
下表列出了调用 Dataproc API(方法)所需的权限。这些表根据与每个 Dataproc 资源(集群、作业、操作和工作流模板)关联的 API 进行整理。
权限范围:下表中列出的 Dataproc 权限范围是所属的 Google Cloud项目(cloud-platform 范围)。请参阅服务账号权限。
示例:
dataproc.clusters.create允许在所属项目中创建 Dataproc 集群dataproc.jobs.create允许在所属项目中将 Dataproc 作业提交给 Dataproc 集群dataproc.clusters.list允许列出所属项目中 Dataproc 集群的详细信息
集群方法所需的权限
| 方法 | 所需权限 |
|---|---|
| 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权限才能提交作业。如需通过示例了解如何使用 Dataproc 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 |
Dataproc 角色
Dataproc IAM 角色包含一个或多个权限。您向用户或群组授予角色,以允许他们对项目中的 Dataproc 资源执行操作。例如,Dataproc Viewer 角色具有 get 和 list 权限,这些权限允许用户获取和列出项目中的 Dataproc 集群、作业和操作。
下表列出了 Dataproc IAM 角色以及与每个角色关联的权限。
| Role | Permissions |
|---|---|
Dataproc Administrator( Full control of Dataproc resources. |
|
Dataproc Editor( Provides the permissions necessary for viewing the resources required to manage Dataproc, including machine types, networks, projects, and zones. 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 Service Agent( Gives Dataproc Service Account access to service accounts, compute resources, storage resources, and kubernetes resources. Includes access to service accounts. |
|
Dataproc Viewer( Provides read-only access to Dataproc resources. Lowest-level resources where you can grant this role:
|
|
Dataproc Worker( Provides worker access to Dataproc resources. Intended for service accounts. |
|
注意:
- 使用 Google Cloud 控制台或 gcloud CLI Google Cloud CLI 时,需要或建议拥有
compute权限,才能创建和查看 Dataproc 集群。 - 如要允许用户上传文件,请授予
Storage Object Creator角色。 如需允许用户查看作业输出,请授予Storage Object Viewer角色。 - 用户必须拥有
monitoring.timeSeries.list权限才能在 Google Cloud 控制台→Dataproc→集群详情概览标签页上查看图表。 - 用户必须拥有
compute.instances.list权限才能在Google Cloud 控制台→Dataproc→集群详情虚拟机实例标签页上查看实例状态和主实例 SSH 菜单。如需了解 Compute Engine 角色,请参阅 Compute Engine→可用的 IAM 角色。 - 如需使用用户指定的服务账号创建集群,指定的服务账号必须具有由
Dataproc Worker角色授予的所有权限,包括对 Dataproc 暂存存储桶和临时存储桶的访问权限。视配置的功能而定,可能需要其他角色。 如需了解详情,请参阅使用自定义虚拟机服务账号创建集群。
项目角色
您还可以使用 IAM 项目角色在项目级层设置权限。下表列出了与 IAM 项目角色关联的权限:
| 项目角色 | 权限 |
|---|---|
| Project Viewer | 拥有不会修改状态的只读操作(获取、列出)的所有项目权限 |
| Project Editor | 拥有所有“Project Viewer”权限,外加可修改状态的操作(创建、删除、更新、使用、取消、停止、启动)的所有项目权限 |
| Project Owner | 拥有所有“项目修改者”权限,外加为项目管理访问控制的权限(获取/设置 IamPolicy)和设置项目结算的权限 |
IAM 角色和 Dataproc 操作汇总
下表列出了与项目角色和 Dataproc 角色关联的 Dataproc 操作。
| 操作 | Project Editor | Project Viewer | Dataproc Admin | Dataproc Editor | Dataproc Viewer |
|---|---|---|---|---|---|
| 获取/设置 Dataproc IAM 权限 | 否 | 否 | 是 | 否 | 否 |
| 创建集群 | 是 | 否 | 是 | 是 | 否 |
| 列出集群 | 是 | 是 | 是 | 是 | 是 |
| 获取集群详情 | 是 | 是 | 是1, 2 | 是1, 2 | 是1, 2 |
| 更新集群 | 是 | 否 | 是 | 是 | 否 |
| 删除集群 | 是 | 否 | 是 | 是 | 否 |
| 启动/停止集群 | 是 | 否 | 是 | 是 | 否 |
| 提交作业 | 是 | 否 | 是3 | 是3 | 否 |
| 列出作业 | 是 | 是 | 是 | 是 | 是 |
| 获取作业详情 | 是 | 是 | 是4 | 是4 | 是4 |
| 取消作业 | 是 | 否 | 是 | 是 | 否 |
| 删除作业 | 是 | 否 | 是 | 是 | 否 |
| 列出操作 | 是 | 是 | 是 | 是 | 是 |
| 获取操作详情 | 是 | 是 | 是 | 是 | 是 |
| 删除操作 | 是 | 否 | 是 | 是 | 否 |
注意:
- 除非用户还拥有包含
monitoring.timeSeries.list权限的角色,否则将无法使用性能图表。 - 除非用户还拥有包含
compute.instances.list权限的角色,否则集群中的虚拟机列表将不包含主实例的状态信息或 SSH 链接。 - 上传文件的作业要求用户具有
Storage Object Creator角色或具有对 Dataproc 暂存存储桶的写入权限。 - 除非用户还具有“存储对象查看者”角色或已被授予项目的暂存存储分区的读取权限,否则将无法访问作业输出。
服务账号
当您调用 Dataproc API 以在项目中执行操作时(例如,创建虚拟机实例),Dataproc 会使用具有执行操作所需的权限的服务账号代表您执行这些操作。如需了解详情,请参阅 Dataproc 服务账号。
IAM 管理
您可以使用 Google Cloud 控制台、IAM API 或 Google Cloud CLI 来获取和设置 IAM 政策。
- 对于 Google Cloud 控制台,请参阅使用 Google Cloud 控制台进行访问权限控制。
- 对于 API,请参阅使用 API 进行访问控制。
- 对于 Google Cloud CLI,请参阅使用 Google Cloud CLI 进行访问控制。