マネージド サービスの Cloud Build サービス アカウントの権限借用を構成する

このドキュメントでは、マネージド サービスにイメージをデプロイできるように、Runtime、Compute Engine、App Engine のサービス アカウントを偽装するように Cloud Build サービス アカウントを構成する方法について説明します。

概要

イメージが特定のマネージド サービスにデプロイされると、そのマネージド サービスのサービス アカウントの ID を使用してイメージが実行されます。Cloud Build は新しいインスタンスまたはバージョンを自動的にデプロイできるため、指定された Cloud Build サービス アカウントまたはデフォルトの Cloud Build サービス アカウントは、マネージド サービスのサービス アカウントを偽装できる必要があります。この要件は、次のマネージド サービスにデプロイする場合に適用されます。

マネージド サービス サービス アカウント
App Engine App Engine サービス アカウント
Cloud Run functions ランタイム サービス アカウント
Cloud Run サービス ID
Compute Engine Compute Engine サービス アカウント

サービス アカウントの権限借用を設定する

別のサービス アカウントを偽装するように Cloud Build サービス アカウントを構成するには、次の操作を行います。

Console

  1. Cloud Build の [権限] ページに移動します。

  2. Cloud Build サービス アカウントを選択します。

  3. マネージド サービスに必要な IAM ロールを有効にします。

    マネージド サービス 必要なロール
    App Engine App Engine 管理者(roles/appengine.appAdmin
    Cloud Run functions Cloud Functions デベロッパー(roles/cloudfunctions.developer
    Cloud Run Cloud Run 管理者(roles/run.admin
    Compute Engine Compute インスタンス管理者 v1(roles/compute.instanceAdmin.v1

    Cloud Build に [サービス アカウント ユーザーのロールを割り当てる] パネルが表示されます。

  4. 権限を借用するサービス アカウントを選択します。たとえば、Compute Engine にデプロイする予定で、Compute Instance Admin v1 ロールを有効にしている場合は、Cloud Build サービス アカウントに権限を借用させる Compute Engine サービス アカウントを選択します。

  5. [権限を付与] をクリックします。

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 は、権限を借用するサービス アカウントのサービス アカウント ユーザー(roles/iam.serviceAccountUser)ロールを Cloud Build サービス アカウントに割り当てます。

サービス アカウント ユーザーのロールを使用すると、プリンシパルがサービス アカウントをリソースに関連付けることができます。これにより、Cloud Build サービス アカウントは、選択したマネージド サービス アカウントの権限を借用できます。詳細については、IAM ドキュメントの Service Account User ロールサービス アカウントをリソースに接続するをご覧ください。