將角色授予服務帳戶

開發人員預覽及部署應用程式時,可以使用現有的服務帳戶,也可以讓 App Design Center 自動建立新的服務帳戶。如要讓開發人員使用您的服務帳戶,請務必完成下列步驟:

  • 將 IAM 政策繫結新增至服務帳戶和使用者帳戶。
  • 授予服務帳戶部署各項資源所需的角色
  • 為服務帳戶新增權限,以便在服務帳戶建立位置以外的專案中部署。
  • 更新機構政策,允許服務帳戶跨專案使用。

如要設定服務帳戶,請按照下列步驟操作:

  1. 為服務代理的 roles/iam.serviceAccountUser 角色新增身分與存取權管理政策繫結至服務帳戶:

    gcloud iam service-accounts add-iam-policy-binding SERVICE_ACCOUNT_EMAIL \
        --member="serviceAccount:service-SERVICE_ACCOUNT_PROJECT_NUMBER@gcp-sa-designcenter.iam.gserviceaccount.com" \
        --role="roles/iam.serviceAccountUser"
    

    更改下列內容:

    • SERVICE_ACCOUNT_EMAIL:服務帳戶電子郵件地址。例如:my-service-account@SERVICE_ACCOUNT_PROJECT_ID.iam.gserviceaccount.com
    • SERVICE_ACCOUNT_PROJECT_ID:包含服務帳戶的專案 ID。
    • SERVICE_ACCOUNT_PROJECT_NUMBER:含有服務帳戶的專案編號。
  2. 為服務帳戶中的使用者新增 roles/iam.serviceAccountUser 角色的 IAM 政策繫結:

    gcloud iam service-accounts add-iam-policy-binding SERVICE_ACCOUNT_EMAIL \
        --member="user:USER_EMAIL" \
        --role="roles/iam.serviceAccountUser"
    

    更改下列內容:

    • SERVICE_ACCOUNT_EMAIL:服務帳戶電子郵件地址。例如:my-service-account@SERVICE_ACCOUNT_PROJECT_ID.iam.gserviceaccount.com
    • USER_EMAIL:執行部署作業的使用者電子郵件地址。
  3. 在含有服務帳戶的專案中,為含有空間的管理專案新增必要服務代理角色的 IAM 政策繫結:

    gcloud projects add-iam-policy-binding SERVICE_ACCOUNT_PROJECT_ID \
        --member="serviceAccount:service-MANAGEMENT_PROJECT_NUMBER@gcp-sa-designcenter.iam.gserviceaccount.com" \
        --role="roles/apphub.editor"
    
    gcloud projects add-iam-policy-binding SERVICE_ACCOUNT_PROJECT_ID \
        --member="serviceAccount:service-MANAGEMENT_PROJECT_NUMBER@gcp-sa-designcenter.iam.gserviceaccount.com" \
        --role="roles/config.agent"
    
    gcloud projects add-iam-policy-binding SERVICE_ACCOUNT_PROJECT_ID \
        --member="serviceAccount:service-MANAGEMENT_PROJECT_NUMBER@gcp-sa-designcenter.iam.gserviceaccount.com" \
        --role="roles/serviceusage.serviceUsageAdmin"
    

    更改下列內容:

    • SERVICE_ACCOUNT_PROJECT_ID:包含服務帳戶的專案 ID。
    • MANAGEMENT_PROJECT_NUMBER:包含您空間的管理專案專案編號。
  4. 在擁有服務帳戶的專案中,請確保系統不會強制執行iam.disableCrossProjectServiceAccountUsage機構政策限制。這項限制預設為強制執行。

    如要停用組織政策限制的強制執行功能,請執行下列指令:

    gcloud resource-manager org-policies disable-enforce \
       iam.disableCrossProjectServiceAccountUsage \
       --project=SERVICE_ACCOUNT_PROJECT_ID
    

    更改下列內容:

    • SERVICE_ACCOUNT_PROJECT_ID:包含服務帳戶的專案 ID。
  5. 將在專案中部署資源所需的角色授予服務帳戶。開發人員部署應用程式時,系統會顯示必要角色。

    舉例來說,如要授予 roles/run.admin 角色,請新增下列政策繫結:

    gcloud projects add-iam-policy-binding SERVICE_ACCOUNT_PROJECT_ID \
        --member="serviceAccount:service-DEPLOYMENT_PROJECT_NUMBER@gcp-sa-designcenter.iam.gserviceaccount.com" \
        --role="roles/run.admin"
    

    更改下列內容:

    • SERVICE_ACCOUNT_PROJECT_ID:包含服務帳戶的專案 ID。
    • DEPLOYMENT_PROJECT_NUMBER:您要部署資源的專案專案編號。
  6. App Design Center 會使用 Infrastructure Manager 在控制台中部署應用程式。如要使用自己的服務帳戶透過 Infrastructure Manager 部署,請完成「授予專案存取權」一文中的步驟。

  7. 如果您部署的應用程式包含透過 Developer Connect 連線匯入的私人元件,請按照下列步驟操作:

    在您建立服務帳戶的專案中,將 roles/iam.serviceAccountTokenCreator 角色授予服務帳戶。

    gcloud projects add-iam-policy-binding SERVICE_ACCOUNT_PROJECT_ID \
        --member="serviceAccount:SERVICE_ACCOUNT_EMAIL" \
        --role="roles/iam.serviceAccountTokenCreator"
    

    更改下列內容:

    • SERVICE_ACCOUNT_PROJECT_ID:服務帳戶所在專案的專案 ID。
    • SERVICE_ACCOUNT_EMAIL:服務帳戶電子郵件地址。例如:my-service-account@SERVICE_ACCOUNT_PROJECT_ID.iam.gserviceaccount.com

後續步驟