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