本文說明如何查看及管理 Identity and Access Management 服務帳戶角色。除非您在提交批次工作負載、建立工作階段或建立工作階段執行階段範本時指定自訂服務帳戶,否則 Dataproc Serverless 批次工作負載或互動式工作階段會以 Compute Engine 預設服務帳戶執行。
必要的 Dataproc 工作站角色
Dataproc Serverless 工作負載服務帳戶必須具備 Identity and Access Management 的 Dataproc Worker 角色。Dataproc Serverless 使用的 Compute Engine 預設服務帳戶 (project_number-compute@developer.gserviceaccount.com
) 預設具有此角色。如果您為批次工作負載、工作階段或工作階段範本指定自己的服務帳戶,則必須將 Dataproc 工作者角色授予服務帳戶。您可能需要其他角色才能執行其他作業,例如讀取及寫入 BigQuery 的資料。
查看及管理身分與存取權管理服務帳戶角色
如要查看及管理授予 Dataproc 無伺服器工作負載服務帳戶的角色,請按照下列步驟操作:
前往 Google Cloud 控制台的「IAM」頁面。
按一下「包含 Google 提供的角色授權」。
查看工作負載服務帳戶的角色清單。下圖顯示 Compute Engine 預設服務帳戶 (
project_number-compute@developer.gserviceaccount.com
) 的必要 Dataproc 工作站角色,Dataproc Serverless 預設會將該帳戶用作工作負載服務帳戶。您可以按一下服務帳戶列上顯示的鉛筆圖示,授予或移除服務帳戶角色。
跨專案服務帳戶
您可以提交使用服務帳戶的 Dataproc Serverless 批次工作負載,該服務帳戶來自與批次工作負載專案 (提交批次的工作負載專案) 不同的專案。在本節中,服務帳戶所在的專案稱為 service account project
,提交批次的專案則稱為 batch project
。
為何要使用跨專案服務帳戶執行批次工作負載?其中一個可能原因是,如果其他專案中的服務帳戶已指派 IAM 角色,這些角色可提供對該專案資源的精細存取權。
設定步驟
在服務帳戶專案中:
Enable the Dataproc API.
將服務帳戶使用者角色授予您的電子郵件帳戶 (建立叢集的使用者),無論是服務帳戶專案,還是服務帳戶專案中的服務帳戶,都可以授予這項角色,以便進行更精細的控管。
如需詳細資訊,請參閱「管理專案、資料夾和機構的存取權」,瞭解如何在專案層級授予角色,以及「管理服務帳戶的存取權」,瞭解如何在服務帳戶層級授予角色。
gcloud CLI 範例:
以下範例指令會向使用者授予專案層級的服務帳戶使用者角色:
gcloud projects add-iam-policy-binding SERVICE_ACCOUNT_PROJECT_ID \ --member=USER_EMAIL \ --role="roles/iam.serviceAccountUser"
注意:
USER_EMAIL
:提供使用者帳戶電子郵件地址,格式如下:user:user-name@example.com
。
以下範例指令會授予使用者服務帳戶層級的服務帳戶使用者角色:
gcloud iam service-accounts add-iam-policy-binding VM_SERVICE_ACCOUNT_EMAIL \ --member=USER_EMAIL \ --role="roles/iam.serviceAccountUser"
注意:
USER_EMAIL
:請提供您的使用者帳戶電子郵件地址,格式如下:user:user-name@example.com
。
將 Dataproc Worker 角色授予服務帳戶,以便在批次專案中使用。
gcloud CLI 範例:
gcloud projects add-iam-policy-binding BATCH_PROJECT_ID \ --member=serviceAccount:SERVICE_ACCOUNT_NAME@SERVICE_ACCOUNT_PROJECT_ID.iam.gserviceaccount.com \ --role="roles/dataproc.worker"
在批次專案中:
您可以為Dataproc 服務代理人服務帳戶授予服務帳戶使用者和服務帳戶憑證建立者角色,適用於服務帳戶專案或服務帳戶專案中的服務帳戶 (如需更精細的控管,請選擇後者)。這樣一來,您就能讓批次專案中的 Dataproc 服務代理服務帳戶,為服務帳戶專案中的服務帳戶建立符記。
如需更多資訊,請參閱「管理專案、資料夾和機構的存取權」,瞭解如何在專案層級授予角色,以及「管理服務帳戶的存取權」,瞭解如何在服務帳戶層級授予角色。
gcloud CLI 範例:
下列指令會在批次專案中,將服務帳戶使用者和服務帳戶權杖建立者角色授予 Dataproc 服務代理人服務帳戶:
gcloud projects add-iam-policy-binding SERVICE_ACCOUNT_PROJECT_ID \ --member=serviceAccount:service-BATCH_PROJECT_NUMBER@dataproc-accounts.iam.gserviceaccount.com \ --role="roles/iam.serviceAccountUser"
gcloud projects add-iam-policy-binding SERVICE_ACCOUNT_PROJECT_ID \ --member=serviceAccount:service-BATCH_PROJECT_NUMBER@dataproc-accounts.iam.gserviceaccount.com \ --role="roles/iam.serviceAccountTokenCreator"
以下是範例指令,可在批次專案中為 Dataproc 服務代理人服務帳戶授予服務帳戶使用者和服務帳戶權杖建立者角色:
gcloud iam service-accounts add-iam-policy-binding VM_SERVICE_ACCOUNT_EMAIL \ --member=serviceAccount:service-BATCH_PROJECT_NUMBER@dataproc-accounts.iam.gserviceaccount.com \ --role="roles/iam.serviceAccountUser"
gcloud iam service-accounts add-iam-policy-binding VM_SERVICE_ACCOUNT_EMAIL \ --member=serviceAccount:service-BATCH_PROJECT_NUMBER@dataproc-accounts.iam.gserviceaccount.com \ --role="roles/iam.serviceAccountTokenCreator"
將 Compute Engine 服務代理人服務帳戶在批次專案中授予服務帳戶憑證建立者角色,或是服務帳戶專案中的服務帳戶 (如需更精細的控管,請授予服務帳戶專案中的服務帳戶)。這樣一來,您就能授予批次專案中的 Compute Agent Service Agent 服務帳戶權限,讓該帳戶在服務帳戶專案中為服務帳戶建立符記。
如需更多資訊,請參閱「管理專案、資料夾和機構的存取權」,瞭解如何在專案層級授予角色,以及「管理服務帳戶的存取權」,瞭解如何在服務帳戶層級授予角色。
gcloud CLI 範例:
下列範例指令會在批次專案中,將服務帳戶權杖建立者角色授予 Compute Engine 服務代理程式服務帳戶:
gcloud projects add-iam-policy-binding SERVICE_ACCOUNT_PROJECT_ID \ --member=serviceAccount:service-BATCH_PROJECT_NUMBER@compute-system.iam.gserviceaccount.com \ --role="roles/iam.serviceAccountTokenCreator"
以下範例指令會在叢集專案中,將服務帳戶層級的服務帳戶權杖建立者角色授予 Compute Engine 服務代理程式服務帳戶:
gcloud iam service-accounts add-iam-policy-binding VM_SERVICE_ACCOUNT_EMAIL \ --member=serviceAccount:service-BATCH_PROJECT_NUMBER@compute-system.iam.gserviceaccount.com \ --role="roles/iam.serviceAccountTokenCreator"
提交批次工作負載
完成設定步驟後,您就可以提交批次工作負載。請務必在服務帳戶專案中指定服務帳戶,做為用於批次工作負載的服務帳戶。