Dataproc IAM 角色和权限

概览

借助 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

注意:

  1. 如需通过 Google Cloud CLI 获取状态更新,您还需要具有 dataproc.operations.get 权限。
  2. 如需通过 Google Cloud CLI 获取操作结果,您还需要具有 dataproc.clusters.get 权限。
  3. 如需在集群上启用自动扩缩政策,您还需要具有 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

注意:

  1. Google Cloud CLI 还需要对 jobs submitjobs waitjobs updatejobs deletejobs kill 命令拥有 dataproc.jobs.get 权限。

  2. 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

注意:

  1. 工作流模板权限独立于集群和作业权限。 没有 create clustersubmit job 权限的用户可以创建并实例化工作流模板。

  2. Google Cloud CLI 还需要 dataproc.operations.get 权限才能轮询工作流完成情况。

  3. 具有 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

注意:

  1. 如需通过 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 角色包含 getlist 权限,这些权限允许用户获取和列出项目中的 Dataproc 集群、作业和操作。

下表列出了 Dataproc IAM 角色以及与每个角色关联的权限。

权限

(roles/dataproc.admin)

拥有对 Dataproc 资源的完全控制权。

compute.machineTypes.*

compute.networks.get

compute.networks.list

compute.projects.get

compute.regions.*

compute.zones.*

dataproc.autoscalingPolicies.*

dataproc.batches.analyze

dataproc.batches.cancel

dataproc.batches.create

dataproc.batches.delete

dataproc.batches.get

dataproc.batches.list

dataproc.batches.sparkApplicationRead

dataproc.clusters.*

dataproc.jobs.*

dataproc.nodeGroups.*

dataproc.operations.*

dataproc.sessionTemplates.*

dataproc.sessions.create

dataproc.sessions.delete

dataproc.sessions.get

dataproc.sessions.list

dataproc.sessions.sparkApplicationRead

dataproc.sessions.terminate

dataproc.workflowTemplates.*

dataprocrm.nodePools.*

dataprocrm.nodes.get

dataprocrm.nodes.heartbeat

dataprocrm.nodes.list

dataprocrm.nodes.update

dataprocrm.operations.get

dataprocrm.operations.list

dataprocrm.workloads.*

resourcemanager.projects.get

resourcemanager.projects.list

(roles/dataproc.editor)

提供查看管理 Dataproc 所需资源(包括机器类型、网络、项目和区域)而应具备的权限。

您可以授予此角色的最低级层资源:

  • 集群

compute.machineTypes.*

compute.networks.get

compute.networks.list

compute.projects.get

compute.regions.*

compute.zones.*

dataproc.autoscalingPolicies.create

dataproc.autoscalingPolicies.delete

dataproc.autoscalingPolicies.get

dataproc.autoscalingPolicies.list

dataproc.autoscalingPolicies.update

dataproc.autoscalingPolicies.use

dataproc.batches.analyze

dataproc.batches.cancel

dataproc.batches.create

dataproc.batches.delete

dataproc.batches.get

dataproc.batches.list

dataproc.batches.sparkApplicationRead

dataproc.clusters.create

dataproc.clusters.delete

dataproc.clusters.get

dataproc.clusters.list

dataproc.clusters.start

dataproc.clusters.stop

dataproc.clusters.update

dataproc.clusters.use

dataproc.jobs.cancel

dataproc.jobs.create

dataproc.jobs.delete

dataproc.jobs.get

dataproc.jobs.list

dataproc.jobs.update

dataproc.nodeGroups.*

dataproc.operations.cancel

dataproc.operations.delete

dataproc.operations.get

dataproc.operations.list

dataproc.sessionTemplates.*

dataproc.sessions.create

dataproc.sessions.delete

dataproc.sessions.get

dataproc.sessions.list

dataproc.sessions.sparkApplicationRead

dataproc.sessions.terminate

dataproc.workflowTemplates.create

dataproc.workflowTemplates.delete

dataproc.workflowTemplates.get

dataproc.workflowTemplates.instantiate

dataproc.workflowTemplates.instantiateInline

dataproc.workflowTemplates.list

dataproc.workflowTemplates.update

dataprocrm.nodePools.*

dataprocrm.nodes.get

dataprocrm.nodes.heartbeat

dataprocrm.nodes.list

dataprocrm.nodes.update

dataprocrm.operations.get

dataprocrm.operations.list

dataprocrm.workloads.*

resourcemanager.projects.get

resourcemanager.projects.list

(roles/dataproc.hubAgent)

可对 Dataproc 资源进行管理。适用于运行 Dataproc Hub 实例的服务账号。

compute.instances.get

compute.instances.setMetadata

compute.instances.setTags

compute.zoneOperations.get

compute.zones.list

dataproc.autoscalingPolicies.get

dataproc.autoscalingPolicies.list

dataproc.autoscalingPolicies.use

dataproc.clusters.create

dataproc.clusters.delete

dataproc.clusters.get

dataproc.clusters.list

dataproc.clusters.update

dataproc.operations.cancel

dataproc.operations.delete

dataproc.operations.get

dataproc.operations.list

iam.serviceAccounts.actAs

iam.serviceAccounts.get

iam.serviceAccounts.list

logging.buckets.get

logging.buckets.list

logging.exclusions.get

logging.exclusions.list

logging.links.get

logging.links.list

logging.locations.*

logging.logEntries.create

logging.logEntries.list

logging.logEntries.route

logging.logMetrics.get

logging.logMetrics.list

logging.logServiceIndexes.list

logging.logServices.list

logging.logs.list

logging.operations.get

logging.operations.list

logging.queries.getShared

logging.queries.listShared

logging.queries.usePrivate

logging.sinks.get

logging.sinks.list

logging.usage.get

logging.views.get

logging.views.list

observability.scopes.get

resourcemanager.projects.get

resourcemanager.projects.list

storage.buckets.get

storage.objects.get

storage.objects.list

(roles/dataproc.viewer)

提供对 Dataproc 资源的只读权限。

您可以授予此角色的最低级层资源:

  • 集群

compute.machineTypes.get

compute.regions.*

compute.zones.*

dataproc.autoscalingPolicies.get

dataproc.autoscalingPolicies.list

dataproc.batches.analyze

dataproc.batches.get

dataproc.batches.list

dataproc.batches.sparkApplicationRead

dataproc.clusters.get

dataproc.clusters.list

dataproc.jobs.get

dataproc.jobs.list

dataproc.nodeGroups.get

dataproc.operations.get

dataproc.operations.list

dataproc.sessionTemplates.get

dataproc.sessionTemplates.list

dataproc.sessions.get

dataproc.sessions.list

dataproc.sessions.sparkApplicationRead

dataproc.workflowTemplates.get

dataproc.workflowTemplates.list

resourcemanager.projects.get

resourcemanager.projects.list

(roles/dataproc.worker)

提供对 Dataproc 资源的处理权限。适用于服务账号。

cloudprofiler.profiles.create

cloudprofiler.profiles.update

dataproc.agents.*

dataproc.batches.sparkApplicationWrite

dataproc.sessions.sparkApplicationWrite

dataproc.tasks.*

dataprocrm.nodes.mintOAuthToken

logging.logEntries.create

logging.logEntries.route

monitoring.metricDescriptors.create

monitoring.metricDescriptors.get

monitoring.metricDescriptors.list

monitoring.monitoredResourceDescriptors.*

monitoring.timeSeries.create

storage.buckets.get

storage.folders.*

storage.managedFolders.create

storage.managedFolders.delete

storage.managedFolders.get

storage.managedFolders.list

storage.multipartUploads.*

storage.objects.*

注意:

  • 使用 Google Cloud 控制台或 gcloud CLI Google Cloud CLI 时,创建和查看 Dataproc 集群需要或建议使用 compute 权限。
  • 如要允许用户上传文件,请授予 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
取消作业
删除作业
列出操作
获取操作详情
删除操作

注意:

  1. 除非用户还拥有包含 monitoring.timeSeries.list 权限的角色,否则将无法使用性能图表。
  2. 除非用户还拥有包含 compute.instances.list 权限的角色,否则集群中的虚拟机列表将不包含主实例的状态信息或 SSH 链接。
  3. 上传文件的作业要求用户具有 Storage Object Creator 角色或对 Dataproc 暂存存储桶的写入权限。
  4. 除非用户还具有“存储对象查看者”角色或已被授予项目的暂存存储分区的读取权限,否则将无法访问作业输出。

服务账号

当您调用 Dataproc API 以在项目中执行操作时(例如,创建虚拟机实例),Dataproc 将使用相应的服务账号(具有执行操作所需的权限),代表您执行这些操作。如需了解详情,请参阅 Dataproc 服务账号

IAM 管理

您可以使用 Google Cloud 控制台、IAM API 或 Google Cloud CLI 来获取和设置 IAM 政策。

后续步骤