Managed Service for Apache Spark Granular IAM 是一项功能,该功能允许您在集群、作业、操作、工作流模板或自动扩缩政策级层授予权限。
示例:您可以向一位用户授予集群“查看者”角色,该角色允许用户查看项目中的集群,并向另一位用户授予作业“修改者”角色,该角色允许用户更新、取消和查看作业。如需了解每个 Managed Service for Apache Spark Granular IAM 角色启用的特定 Google Cloud CLI 命令,请参阅 Granular IAM 启用的 SDK 命令。
Managed Service for Apache Spark Granular IAM 角色和权限
Managed Service for Apache Spark Granular IAM 可以设置拥有以下 Managed Service for Apache Spark 资源权限的以下角色。
集群角色
| 角色 | 权限 |
|---|---|
| 查看者 | dataproc.clusters.get |
| 编辑者 | 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 |
作业角色
| 角色 | 权限 |
|---|---|
| 查看者 | dataproc.jobs.get |
| 编辑者 | 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 |
操作角色
| 角色 | 权限 |
|---|---|
| 查看者 | dataproc.operations.get |
| 编辑者 | 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 |
工作流模板角色
| 角色 | 权限 |
|---|---|
| 查看者 | dataproc.workflowTemplates.get |
| 编辑者 | 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 |
自动扩缩政策角色
| 角色 | 权限 |
|---|---|
| 查看者 | dataproc.autoscalingPolicies.get |
| 编辑者 | 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 |
使用 Managed Service for Apache Spark 精细 IAM
本部分介绍如何使用 Managed Service for Apache Spark Granular IAM 为用户分配现有 Managed Service for Apache Spark 资源的角色。如需详细了解如何更新和移除 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@" ] } ], "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@" ] }, { "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@" ] }, { "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@" ] } ], "etag": "string" } - 使用文本编辑器构建以下 JSON 政策对象,以包含刚刚从 Managed Service for Apache Spark 服务收到的绑定数组。请确保返回您在 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@" ] }, { "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@" ] }, { "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@" ] }, { "role": "roles/viewer", "members": [ "user:sean@example.com" ] } ], "etag": "string" }
控制台
前往 Google Cloud 控制台中的 Managed Service for Apache Spark 集群页面,然后点击集群名称左侧的复选框以打开权限/标签面板(如果面板未显示,请点击位于页面右上角的显示信息面板)。在“权限”标签页下,选择 Managed Service for Apache Spark 角色,在添加主账号框中添加一个或多个账号地址,然后点击添加。
Granular IAM 启用的 SDK 命令
本部分介绍了每个 Granular IAM 角色在 Managed Service for Apache Spark 资源上启用的 gcloud dataproc 命令。
集群
| IAM 角色 | 命令 |
|---|---|
| 查看者 | gcloud dataproc clusters describe cluster-name |
| 编辑者 | gcloud dataproc clusters describe cluster-namegcloud dataproc clusters listgcloud dataproc clusters delete cluster-namegcloud dataproc clusters diagnose cluster-namegcloud dataproc clusters update cluster-namegcloud beta dataproc clusters start cluster-namegcloud beta dataproc clusters stop cluster-name |
| Owner | gcloud dataproc clusters describe cluster-namegcloud dataproc clusters listgcloud dataproc clusters delete cluster-namegcloud dataproc clusters diagnose cluster-namegcloud dataproc clusters update cluster-namegcloud beta dataproc clusters start cluster-namegcloud beta dataproc clusters stop cluster-namegcloud dataproc clusters get-iam-policy cluster-namegcloud dataproc clusters set-iam-policy cluster-name |
作业
| IAM 角色 | 命令 |
|---|---|
| 查看者 | gcloud dataproc jobs describe job-id |
| 编辑者 | gcloud dataproc jobs delete job-idgcloud dataproc jobs describe job-idgcloud dataproc jobs kill job-idgcloud dataproc jobs update job-idgcloud dataproc jobs wait job-id |
| Owner | gcloud dataproc jobs delete job-idgcloud dataproc jobs describe job-idgcloud dataproc jobs kill job-idgcloud dataproc jobs update job-idgcloud dataproc jobs wait job-idgcloud dataproc jobs get-iam-policy job-idgcloud dataproc jobs set-iam-policy job-id |
运维
| IAM 角色 | 命令 |
|---|---|
| 查看者 | gcloud dataproc operations describe operation-id |
| 编辑者 | gcloud dataproc operations delete operation-idgcloud dataproc operations describe operation-idgcloud dataproc operations cancel operation-id |
| Owner | gcloud dataproc operations delete operation-idgcloud dataproc operations describe operation-idgcloud dataproc operations cancel operation-idgcloud dataproc operations get-iam-policy operation-idgcloud dataproc operations set-iam-policy operation-id |
工作流模板
| IAM 角色 | 命令 |
|---|---|
| 查看者 | gcloud dataproc workflow-templates describe template-id |
| 编辑者 | gcloud dataproc workflow-templates delete template-idgcloud dataproc workflow-templates describe template-idgcloud dataproc workflow-templates remove-job template-idgcloud dataproc workflow-templates run template-id |
| Owner | gcloud dataproc workflow-templates delete template-idgcloud dataproc workflow-templates describe template-idgcloud dataproc workflow-templates remove-job template-idgcloud dataproc workflow-templates run template-idgcloud dataproc workflow-templates get-iam-policy template-idgcloud dataproc workflow-templates set-iam-policy template-id |
自动扩缩政策
| IAM 角色 | 命令 |
|---|---|
| 查看者 | gcloud dataproc autoscaling-policies describe policy-id |
| 编辑者 | gcloud dataproc autoscaling-policies delete policy-idgcloud dataproc autoscaling-policies describe policy-idgcloud dataproc autoscaling-policies update policy-idgcloud dataproc clusters create cluster-name --autoscaling-policy policy-id |
| Owner | gcloud dataproc autoscaling-policies delete policy-idgcloud dataproc autoscaling-policies describe policy-idgcloud dataproc autoscaling-policies update policy-idgcloud dataproc clusters create cluster-name --autoscaling-policy policy-idgcloud dataproc autoscaling-policies get-iam-policy policy-idgcloud dataproc autoscaling-policies set-iam-policy policy-id |
使用 Granular IAM 提交作业
要使用 Managed Service for Apache Spark Granular IAM 允许主账号(用户、群组或服务账号)将作业提交到指定的集群,除了向用户授予集群上的 Editor 角色之外,还必须在项目级设置其他权限。要允许主账号在指定的 Managed Service for Apache Spark 集群上提交作业,步骤如下:
- 创建 Cloud Storage 存储桶,您的集群可使用该存储桶连接到 Cloud Storage。
- 将主账号添加到存储桶级层政策中,并为该主账号选择 Storage Object Viewer 角色(请参阅
roles/storage.objectViewer),该角色包含以下权限:storage.objects.getstorage.objects.list
- 创建集群时,使用
--bucket参数将您刚创建的存储桶的名称传递给集群(请参阅gcloud dataproc clusters create --bucket)。 - 创建集群后,请在集群上设置一项政策,以向主账号授予 Editor 或 Owner 角色(请参阅使用 Managed Service for Apache Spark Granular IAM)。
- 创建 IAM 自定义角色,使其具备以下权限:
dataproc.jobs.createdataproc.jobs.get
- 在 Google Cloud 控制台的 IAM 页面上选择或添加主账号,然后选择自定义角色以将其应用于该主账号。