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權限。
Jobs 方法所需的權限
| 方法 | 所需權限 |
|---|---|
| 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 也需要
dataproc.jobs.get、jobs submit、jobs wait、jobs update、jobs delete和jobs kill指令的權限。如要提交工作,gcloud CLI 也必須具有
dataproc.clusters.get權限。如要查看設定權限的範例,讓使用者使用 Managed Service for Apache Spark 精細 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 |
注意:
- 如要在叢集上啟用自動調度資源政策,必須具備
dataproc.autoscalingPolicies.use權限,並使用clusters.patch方法要求。
節點群組方法所需的權限
| 方法 | 所需權限 |
|---|---|
| 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 檢視者角色包含 get 和 list 權限,可讓使用者在專案中取得及列出 Managed Service for Apache Spark 叢集、工作和作業。
下表列出包含建立及管理 Managed Service for Apache Spark 叢集所需權限的角色。
| 授予角色給 | 角色 |
|---|---|
| 使用者 | 授予使用者下列角色:
|
| 服務帳戶 | 將 Dataproc 工作站角色授予 Managed Service for Apache Spark VM 服務帳戶。 |
注意事項:
您可能需要授予Managed Service for Apache Spark VM 服務帳戶其他預先定義或自訂角色,這些角色包含其他作業所需的權限,例如從 Cloud Storage、BigQuery、Cloud Logging 和其他 Google Cloud 資源讀取及寫入資料。
在某些專案中,系統可能已自動授予Managed Service for Apache Spark VM 服務帳戶專案編輯者角色,其中包含 Dataproc 工作站角色權限,以及 Managed Service for Apache Spark 資料平面作業不需要的其他權限。如要遵循最低權限的安全最佳做法原則,請將編輯者角色替換為 Dataproc 工作站角色 (請參閱「查看 VM 服務帳戶角色」)。
是否需要授予角色?
視貴機構政策而定,系統可能已授予必要角色。
查看授予使用者的角色
如要查看使用者是否已獲授角色,請按照「管理專案、資料夾和機構的存取權 > 查看目前的存取權」一文中的操作說明進行。
檢查授予服務帳戶的角色
如要查看服務帳戶是否已獲授角色,請參閱「查看及管理 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 建立及檢視 Managed Service for Apache Spark 叢集時,需要或建議使用
compute權限。 - 如要允許使用者上傳檔案,請授予
Storage Object Creator角色。 如要允許使用者查看工作輸出內容,請授予Storage Object Viewer角色。 - 使用者必須具有
monitoring.timeSeries.list權限,才能檢視 Google Cloud 控制台→「Managed Service for Apache Spark」→「Cluster details」(叢集詳細資料) 的「Overview」(總覽) 分頁中的圖表。 - 使用者必須具有
compute.instances.list權限,才能檢視Google Cloud 控制台→「Managed Service for Apache Spark」→「Cluster details」(叢集詳細資料) 的「VM Instances」(VM 執行個體) 分頁上的執行個體狀態和主要執行個體 SSH 選單。如要瞭解 Compute Engine 角色,請參閱「Compute Engine→可用的 IAM 角色」。 - 如要透過使用者指定的服務帳戶建立叢集,指定的服務帳戶必須具有
Dataproc Worker角色授予的所有權限,包括存取 Managed Service for Apache Spark 暫存和臨時值區。視設定的功能而定,可能需要其他角色。詳情請參閱「建立採用自訂 VM 服務帳戶的叢集」。
專案角色
您還可以使用 IAM 專案角色設定專案層級的權限。下表列出與 IAM 專案角色相關的權限:
| 專案角色 | 權限 |
|---|---|
| 專案檢視者 | 保留狀態的唯讀動作的所有專案權限 (取得、表列) |
| 專案編輯者 | 所有專案檢視者權限,加上修改狀態動作的所有專案權限 (建立、刪除、更新、使用、取消、停止、啟動) |
| 專案擁有者 | 所有專案編輯者權限,加上管理專案存取權 (取得/設定 IAM 政策) 及設定專案帳單的權限 |
IAM 角色和 Managed Service for Apache Spark 作業摘要
下表列出與專案和 Managed Service for Apache Spark 角色相關聯的 Managed Service for Apache Spark 作業。
| 作業 | 專案編輯者 | 專案檢視者 | 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權限的角色,否則叢集中的 VM 清單將不包含主要執行個體的狀態資訊或 SSH 連結。 - 如要上傳檔案,使用者必須具備
Storage Object Creator角色,或擁有 Managed Service for Apache Spark 暫存 bucket 的寫入存取權。 - 除非使用者另外具有「Storage 物件檢視者」角色,或已獲得專案暫存值區的讀取存取權,否則無法提供工作輸出。
Managed Service for Apache Spark VM 存取範圍
VM 存取範圍和 IAM 角色會搭配運作,限制 VM 對 API 的存取權。 Google Cloud舉例來說,如果叢集 VM 只獲得 https://www.googleapis.com/auth/storage-full 範圍的存取權,在叢集 VM 上執行的應用程式就能呼叫 Cloud Storage API,但即使這些應用程式是以已獲授權的 VM 服務帳戶身分執行,且該帳戶已獲授權具有廣泛權限的 BigQuery 角色,應用程式也無法向 BigQuery 提出要求。
最佳做法是將廣泛的 cloud-platform 範圍 (https://www.googleapis.com/auth/cloud-platform) 授予 VM,然後將特定 IAM 角色授予 VM 服務帳戶,藉此限制 VM 存取權 (請參閱範圍最佳做法)。
Managed Service for Apache Spark VM 的預設範圍。如果建立叢集時未指定範圍 (請參閱 gcloud dataproc cluster create --scopes),Managed Service for Apache Spark VM 會採用下列預設範圍:
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
如果您在建立叢集時指定範圍,叢集 VM 會具有您指定的範圍和下列最低必要範圍集 (即使您未指定這些範圍):
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 細部 IAM
- 進一步瞭解 IAM。
- 瞭解 Managed Service for Apache Spark 中的服務帳戶