本文說明如何設定 Cloud Build 服務帳戶,以便模擬服務帳戶,用於 Runtime、Compute Engine 或 App Engine,將映像檔部署至受管理服務。
總覽
將映像檔部署至特定代管服務時,映像檔會使用該代管服務的服務帳戶身分執行。由於 Cloud Build 可以自動部署新的執行個體或版本,因此指定的 Cloud Build 服務帳戶或預設 Cloud Build 服務帳戶必須能夠模擬代管服務的服務帳戶。部署至下列代管服務時,必須符合這項規定:
| 代管服務 | 服務帳戶 | 
|---|---|
| App Engine | App Engine 服務帳戶 | 
| Cloud Run 函式 | 執行階段服務帳戶 | 
| Cloud Run | 服務身分 | 
| Compute Engine | Compute Engine 服務帳戶 | 
設定服務帳戶模擬
如要將 Cloud Build 服務帳戶設定為模擬其他服務帳戶,請按照下列步驟操作:
主控台
- 前往 settings Cloud Build Permissions 頁面。 
- 選取 Cloud Build 服務帳戶。 
- 為受管理服務啟用必要的 IAM 角色: - 代管服務 - 必要角色 - App Engine - App Engine 管理員 ( - roles/appengine.appAdmin)- Cloud Run 函式 - Cloud Functions 開發人員 ( - roles/cloudfunctions.developer)- Cloud Run - Cloud Run 管理員 ( - roles/run.admin)- Compute Engine - Compute 執行個體管理員 v1 ( - roles/compute.instanceAdmin.v1)- Cloud Build 會顯示「指派服務帳戶使用者角色」面板。 
- 選擇要模擬的服務帳戶。舉例來說,如果您打算部署至 Compute Engine,並啟用 Compute Instance Admin v1 角色,請選擇要讓 Cloud Build 服務帳戶模擬的 Compute Engine 服務帳戶。 
- 按一下「授予權限」。 
gcloud CLI
在 Google Cloud CLI 中輸入下列指令:
  gcloud iam service-accounts add-iam-policy-binding \
        SERVICE_ACCOUNT_TO_IMPERSONATE \
        --member="CLOUD_BUILD_SERVICE_ACCOUNT" \
        --role="roles/iam.serviceAccountUser"
其中:
- SERVICE_ACCOUNT_TO_IMPERSONATE 是您要模擬的服務帳戶。
- CLOUD_BUILD_SERVICE_ACCOUNT 是您的 Cloud Build 服務帳戶。
Cloud Build 會為您要模擬的服務帳戶,指派 Cloud Build 服務帳戶「服務帳戶使用者」角色 (roles/iam.serviceAccountUser)。
主體可透過「服務帳戶使用者」角色將服務帳戶附加至資源,讓 Cloud Build 服務帳戶模擬所選的代管服務帳戶。詳情請參閱 IAM 說明文件中的「服務帳戶使用者角色」和「將服務帳戶附加至資源」。