Cloud Build サービス アカウントの変更

この動作をオーバーライドしない限り、Cloud Build では、ユーザーに代わってビルドを実行する Cloud Build サービス アカウントが自動的に選択されます。 このサービス アカウントには、プロジェクト内の Cloud Source Repositories や Cloud Storage バケットへのアクセスなど、ユースケースに対して必要以上に幅広い権限が付与されている場合があります。

Cloud Build が新しいプロジェクトでサービス アカウントを使用する方法のデフォルトの動作が変更となります。これらの変更は、2024 年 5 月と 6 月に数週間かけて、リージョンごとにロールアウトされます。これらの変更により、今後のお客様のデフォルト セキュリティ対策が改善されます。これらの変更をオプトアウトするには、組織のポリシーの制約を構成します。

プロジェクトへの影響は、ユーザーが組織に属しているかどうかによって異なります。通常、使用しているリージョンに変更がロールアウトされると、次の変更が表示されます。

  • 組織のないプロジェクト。変更後にプロジェクトで Cloud Build API を有効にした場合、Cloud Build API または Google Cloud CLI を使用して送信されるビルドには、デフォルトで Compute Engine サービス アカウントが使用されます。これらのプロジェクトでは従来の Cloud Build サービス アカウントを使用するオプションはありませんが、ユーザー指定のサービス アカウントを使用できます。

  • 組織を含むプロジェクト。変更後にプロジェクトで Cloud Build API を有効にした場合、Cloud Build API または Google Cloud CLI を使用して送信されるビルドには、デフォルトで Compute Engine サービス アカウントが使用されます。ユーザー指定のサービス アカウントを使用するか、組織内で Cloud Build サービス アカウントを有効にすることで変更を無効にできます。

  • 組織のない既存のプロジェクト。変更前にプロジェクトで Cloud Build API を有効にしている場合は、従来の Cloud Build サービス アカウントがすべてのビルドでデフォルトで使用され、以前の動作が引き続き使用されます。Compute Engine サービス アカウントを選択するか、独自のサービス アカウントを作成して、ユーザー指定のサービス アカウントを引き続き使用できます。

  • 組織を持つ既存のプロジェクト。変更前にプロジェクトで Cloud Build API を有効にしている場合は、従来の Cloud Build サービス アカウントがデフォルトで使用され、従来の動作が引き続き使用されます。ユーザー指定のサービス アカウントを引き続き使用することもできます。

  • トリガー。プロジェクトのデフォルトのサービス アカウントが以前の Cloud Build サービス アカウントである場合を除き、トリガーを作成または更新するときにサービス アカウントを指定する必要があります。

  • API。Cloud Build API を有効にすると、Identity and Access Management API も有効になります。

  • Cloud Build サービス アカウント名: Cloud Build サービス アカウントは、以前の Cloud Build サービス アカウントと呼ばれます。

必要なご対応について

組織に所属されている場合は、次の組織のポリシーのブール型制約を設定すると、この変更を無効にできます。

  • 未適用: constraints/cloudbuild.disableCreateDefaultServiceAccount

組織のポリシーを調整できない、または調整したくない場合で、変更のロールアウト後に Cloud Build API を有効にする場合は、Compute Engine のデフォルトのサービス アカウントまたはユーザーが作成したサービス アカウントに、ビルドに対する十分な権限があることを検証してください。特に、ビルドを送信するユーザーには、サービス アカウントに対する iam.serviceAccounts.actAs 権限が必要です。

従来の Cloud Build サービス アカウントの可用性を構成する

Cloud Build API を有効にするときに従来の Cloud Build サービス アカウントの可用性を構成するために、Cloud Build では次のブール型ポリシー制約が導入されています。

  • 未適用: constraints/cloudbuild.disableCreateDefaultServiceAccount。新しいプロジェクトで、従来の Cloud Build サービスをデフォルトとして使用できます。

  • 適用済み: constraints/cloudbuild.disableCreateDefaultServiceAccount。新しいプロジェクトでの従来の Cloud Build サービス アカウントの使用を無効にします。これは、制約のデフォルト値です。

ポリシー制約を更新するには、適用ルールを更新します。

この制約は、変更のロールアウト後に Cloud Build API を有効にするプロジェクトにのみ影響します。ポリシーの制約を適用しない場合、その構成がアクティブなときに、API を有効にするすべてのプロジェクトにその変更が適用されます。サービス アカウントが以前に使用されていたプロジェクトでは、従来の Cloud Build サービス アカウントの可用性をオフにすることはできません。

プロジェクトの現在のデフォルト サービス アカウントを取得する

Cloud Build がプロジェクトのデフォルトとして使用しているサービス アカウントを特定するには、Google Cloud CLI または Cloud Build API を使用します。

gcloud CLI

次のコマンドを実行して、現在のプロジェクトのデフォルトのサービス アカウントを取得します。

gcloud builds get-default-service-account

Cloud Build API

cURLを使用して Cloud Build API を呼び出します。

curl -X GET -H "Authorization: Bearer $(gcloud auth print-access-token)" \
     https://cloudbuild.googleapis.com/v1/projects/PROJECT_ID/locations/REGION/defaultServiceAccount

プレースホルダの値を次のように置き換えます。