このドキュメントでは、マネージド サービスにイメージをデプロイできるように、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
settings Cloud Build の [権限] ページに移動します。
Cloud Build サービス アカウントを選択します。
マネージド サービスに必要な 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 に [サービス アカウント ユーザーのロールを割り当てる] パネルが表示されます。
権限を借用するサービス アカウントを選択します。たとえば、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 は、権限を借用するサービス アカウントのサービス アカウント ユーザー(roles/iam.serviceAccountUser
)ロールを Cloud Build サービス アカウントに割り当てます。
サービス アカウント ユーザーのロールを使用すると、プリンシパルがサービス アカウントをリソースに関連付けることができます。これにより、Cloud Build サービス アカウントは、選択したマネージド サービス アカウントの権限を借用できます。詳細については、IAM ドキュメントの Service Account User ロールとサービス アカウントをリソースに接続するをご覧ください。