このドキュメントでは、マネージド サービスにイメージをデプロイできるように、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 ロールとサービス アカウントをリソースに接続するをご覧ください。