Dataproc Granular IAM 是一项功能,该功能允许您在集群、作业、操作、工作流模板或自动扩缩政策级层授予权限。
示例:您可以向一位用户授予集群“查看者”角色,该角色允许用户查看项目中的集群,并向另一位用户授予作业“修改者”角色,该角色允许用户更新,取消和查看作业。 请参阅 Granular IAM 启用的 SDK 命令以了解每个 Dataproc Granular IAM 角色启用的特定 Google Cloud CLI 命令。
Dataproc Granular IAM 角色和权限
Dataproc Granular IAM 可以设置具备以下 Dataproc 资源权限的以下角色。
集群角色
角色 | 权限 |
---|---|
Viewer | dataproc.clusters.get |
Editor | dataproc.clusters.get dataproc.clusters.list dataproc.clusters.delete dataproc.clusters.update dataproc.clusters.use dataproc.clusters.start dataproc.clusters.stop |
Owner | dataproc.clusters.get dataproc.clusters.list dataproc.clusters.delete dataproc.clusters.update dataproc.clusters.use dataproc.clusters.start dataproc.clusters.stop dataproc.clusters.setIamPolicy dataproc.clusters.getIamPolicy |
作业角色
角色 | 权限 |
---|---|
Viewer | dataproc.jobs.get |
Editor | dataproc.jobs.get dataproc.jobs.cancel dataproc.jobs.delete dataproc.jobs.update |
Owner | dataproc.jobs.get dataproc.jobs.cancel dataproc.jobs.delete dataproc.jobs.update dataproc.jobs.setIamPolicy dataproc.jobs.getIamPolicy |
操作角色
角色 | 权限 |
---|---|
Viewer | dataproc.operations.get |
Editor | dataproc.jobs.get dataproc.operations.cancel dataproc.operations.delete |
Owner | dataproc.jobs.get dataproc.operations.cancel dataproc.operations.delete dataproc.operations.setIamPolicy dataproc.operations.getIamPolicy |
工作流模板角色
角色 | 权限 |
---|---|
Viewer | dataproc.workflowTemplates.get |
Editor | dataproc.workflowTemplates.get dataproc.workflowTemplates.delete dataproc.workflowTemplates.update |
Owner | dataproc.workflowTemplates.get dataproc.workflowTemplates.delete dataproc.workflowTemplates.update dataproc.workflowTemplates.setIamPolicy dataproc.workflowTemplates.getIamPolicy |
自动扩缩政策角色
角色 | 权限 |
---|---|
Viewer | dataproc.autoscalingPolicies.get |
Editor | dataproc.autoscalingPolicies.get dataproc.autoscalingPolicies.use dataproc.autoscalingPolicies.delete dataproc.autoscalingPolicies.update |
Owner | dataproc.autoscalingPolicies.get dataproc.autoscalingPolicies.use dataproc.autoscalingPolicies.delete dataproc.autoscalingPolicies.update dataproc.autoscalingPolicies.setIamPolicy dataproc.autoscalingPolicies.getIamPolicy |
使用 Dataproc Granular IAM
本节介绍如何在现有 Dataproc 资源上使用 Dataproc Granular IAM 为用户分配角色。有关更新和移除 Identity and Access Management (IAM) 角色的更多常规信息,请参阅授予、更改和撤消访问权限。
gcloud 命令
- 获取资源的 IAM 政策,并将其写入 JSON 文件(resource-type 可以是“clusters”、“jobs”、“operations”或“workflow-templates”或“autoscaling-policies”):
gcloud dataproc resource-type get-iam-policy resource-id \ --region=region \ --format=json > iam.json
- JSON 文件的内容将如下所示:
{ "bindings": [ { "role": "roles/editor", "members": [ "user:mike@example.com", "group:admins@example.com", "domain:google.com", "serviceAccount:my-other-app@appspot.gserviceaccount.com" ] } ], "etag": "string" }
- 使用文本编辑器将新的绑定对象添加到绑定数组中,该数组定义了用户以及这些用户的资源访问角色。例如,如需向用户
sean@example.com
授予 Viewer 角色 (roles/viewer
),您需要更改上面的示例以添加新的绑定对象(以下面的粗体显示)。注意:请确保返回您在gcloud dataproc resource-type get-iam-policy
中收到的etag
值(请参阅 etag 文档)。{ "bindings": [ { "role": "roles/editor", "members": [ "user:mike@example.com", "group:admins@example.com", "domain:google.com", "serviceAccount:my-other-app@appspot.gserviceaccount.com" ] }, { "role": "roles/viewer", "members": [ "user:sean@example.com" ] } ], "etag": "value-from-get-iam-policy" }
- 通过运行以下命令,使用新的绑定数组更新集群的政策(resource-type 可以是“clusters”、“jobs”、“operations”、“workflow-templates”或“autoscaling-policies”):
gcloud dataproc resource-type set-iam-policy resource-name \ --region=region \ --format=json iam.json
- 该命令输出更新后的政策:
{ "bindings": [ { "role": "roles/editor", "members": [ "user:mike@example.com", "group:admins@example.com", "domain:google.com", "serviceAccount:my-other-app@appspot.gserviceaccount.com" ] }, { "role": "roles/viewer", "members": [ "user:sean@example.com" ] } ], "etag": "string" }
REST API
- 发出 resource-type ("clusters" or "jobs" or "operations" or "workflowTemplates" or "autoscalingPolicies") getIamPolicy 请求以获取资源的 IAM 政策。
集群 getIamPolicy 示例:
GET https://dataproc.googleapis.com/v1/projects/projectName/regions/region/clusters/clusterName:getIamPolicy
- JSON 文件的内容将如下所示:
{ "bindings": [ { "role": "roles/editor", "members": [ "user:mike@example.com", "group:admins@example.com", "domain:google.com", "serviceAccount:my-other-app@appspot.gserviceaccount.com" ] } ], "etag": "string" }
- 使用文本编辑器构建以下 JSON 政策对象,以包含刚刚从 Dataproc 服务收到的绑定数组。请确保返回您在 getIamPolicy 响应中收到的“etag”值(请参阅 etag 文档)。现在,请将新的绑定对象添加到绑定数组中,该数组定义了用户以及这些用户的集群访问角色。例如,如需向用户
sean@example.com
授予 Viewer 角色 (roles/viewer
),您需要更改上面的示例以添加新的绑定对象(以下面的粗体显示)。{ "policy": { "version": "", "bindings": [ { "role": "roles/editor", "members": [ "user:mike@example.com", "group:admins@example.com", "domain:google.com", "serviceAccount:my-other-app@appspot.gserviceaccount.com" ] }, { "role": "roles/viewer", "members": [ "user:sean@example.com" ] } ], "etag": "value-from-getIamPolicy" } }
- 通过发出 setIamPolicy 请求,在资源上设置经过更新的政策。
集群 setIamPolicy 示例:
POST https://dataproc.googleapis.com/v1/projects/projectName/regions/region/clusters/clusterName:setIamPolicy Request body
{ "policy": { "version": "", "bindings": [ { "role": "roles/editor", "members": [ "user:mike@example.com", "group:admins@example.com", "domain:google.com", "serviceAccount:my-other-app@appspot.gserviceaccount.com" ] }, { "role": "roles/viewer", "members": [ "user:sean@example.com" ] } ], "etag": "value-from-getIamPolicy" } }
- JSON 响应的内容将如下所示:
响应
{ "bindings": [ { "role": "roles/editor", "members": [ "user:mike@example.com", "group:admins@example.com", "domain:google.com", "serviceAccount:my-other-app@appspot.gserviceaccount.com" ] }, { "role": "roles/viewer", "members": [ "user:sean@example.com" ] } ], "etag": "string" }
控制台
前往 Dataproc 集群 页面,然后点击左侧的方框 来打开权限/标签面板(如果 面板未显示,请点击页面右上角的显示信息面板)。 在“权限”标签页下,选择 Dataproc 角色,在添加主账号框中添加一个或多个账号地址,然后点击添加。
Granular IAM 启用的 SDK 命令
下表显示了每个 Granular IAM 角色在 Cloud Dataproc 资源上启用的 gcloud dataproc
命令。
集群
IAM 角色 | 命令 |
---|---|
Viewer | gcloud dataproc clusters describe cluster-name |
Editor | gcloud dataproc clusters describe cluster-name gcloud dataproc clusters list gcloud dataproc clusters delete cluster-name gcloud dataproc clusters diagnose cluster-name gcloud dataproc clusters update cluster-name gcloud beta dataproc clusters start cluster-name gcloud beta dataproc clusters stop cluster-name |
Owner | gcloud dataproc clusters describe cluster-name gcloud dataproc clusters list gcloud dataproc clusters delete cluster-name gcloud dataproc clusters diagnose cluster-name gcloud dataproc clusters update cluster-name gcloud beta dataproc clusters start cluster-name gcloud beta dataproc clusters stop cluster-name gcloud dataproc clusters get-iam-policy cluster-name gcloud dataproc clusters set-iam-policy cluster-name |
作业
IAM 角色 | 命令 |
---|---|
Viewer | gcloud dataproc jobs describe job-id |
Editor | gcloud dataproc jobs delete job-id gcloud dataproc jobs describe job-id gcloud dataproc jobs kill job-id gcloud dataproc jobs update job-id gcloud dataproc jobs wait job-id |
Owner | gcloud dataproc jobs delete job-id gcloud dataproc jobs describe job-id gcloud dataproc jobs kill job-id gcloud dataproc jobs update job-id gcloud dataproc jobs wait job-id gcloud dataproc jobs get-iam-policy job-id gcloud dataproc jobs set-iam-policy job-id |
操作
IAM 角色 | 命令 |
---|---|
Viewer | gcloud dataproc operations describe operation-id |
Editor | gcloud dataproc operations delete operation-id gcloud dataproc operations describe operation-id gcloud dataproc operations cancel operation-id |
Owner | gcloud dataproc operations delete operation-id gcloud dataproc operations describe operation-id gcloud dataproc operations cancel operation-id gcloud dataproc operations get-iam-policy operation-id gcloud dataproc operations set-iam-policy operation-id |
工作流模板
IAM 角色 | 命令 |
---|---|
Viewer | gcloud dataproc workflow-templates describe template-id |
Editor | gcloud dataproc workflow-templates delete template-id gcloud dataproc workflow-templates describe template-id gcloud dataproc workflow-templates remove-job template-id gcloud dataproc workflow-templates run template-id |
Owner | gcloud dataproc workflow-templates delete template-id gcloud dataproc workflow-templates describe template-id gcloud dataproc workflow-templates remove-job template-id gcloud dataproc workflow-templates run template-id gcloud dataproc workflow-templates get-iam-policy template-id gcloud dataproc workflow-templates set-iam-policy template-id |
自动扩缩政策
IAM 角色 | 命令 |
---|---|
Viewer | gcloud dataproc autoscaling-policies describe policy-id |
Editor | gcloud dataproc autoscaling-policies delete policy-id gcloud dataproc autoscaling-policies describe policy-id gcloud dataproc autoscaling-policies update policy-id gcloud dataproc clusters create cluster-name --autoscaling-policy policy-id |
Owner | gcloud dataproc autoscaling-policies delete policy-id gcloud dataproc autoscaling-policies describe policy-id gcloud dataproc autoscaling-policies update policy-id gcloud dataproc clusters create cluster-name --autoscaling-policy policy-id gcloud dataproc autoscaling-policies get-iam-policy policy-id gcloud dataproc autoscaling-policies set-iam-policy policy-id |
使用 Granular IAM 提交作业
要使用 Dataproc Granular IAM 允许主账号(用户、群组或服务账号)将作业提交到指定的集群,除了向用户授予集群上的 Editor 角色之外,还必须在项目级设置其他权限。要允许主账号在指定的 Dataproc 集群上提交作业,步骤如下:
- 创建 Cloud Storage 存储分区,您的集群可使用该存储分区连接到 Cloud Storage。
- 将主账号添加到存储桶级层政策中,并为该主账号选择 Storage Object Viewer 角色(请参阅
roles/storage.objectViewer
),该角色包含以下权限:storage.objects.get
storage.objects.list
- 创建集群时,使用
--bucket
参数将您刚创建的存储分区的名称传递给集群(请参阅 gcloud dataproc clusters create --bucket)。 - 创建集群后,请在集群上设置一项政策,以向主账号授予 Editor 或 Owner 角色(请参阅使用 Dataproc Granular IAM)。
- 创建 IAM 自定义角色,使其具备以下权限:
dataproc.jobs.create
dataproc.jobs.get
- 在 Google Cloud 控制台中的 IAM 页面上选择或添加主账号,然后选择自定义角色以将其应用于该主账号。