この動作をオーバーライドしない限り、Cloud Build では、ユーザーに代わってビルドを実行する Cloud Build サービス アカウントが自動的に選択されます。 このデフォルトのサービス アカウントには、プロジェクト内の任意の Cloud Storage バケットへのアクセスなど、ユースケースに対して必要以上に幅広い権限が付与されている場合があります。
Cloud Build が新しいプロジェクトでサービス アカウントを使用する際のデフォルトの動作は、2024 年 5 月と 6 月に数週間にわたって変更されました。これらの変更により、今後のお客様のデフォルト セキュリティ対策が改善されます。組織のポリシーの制約 を構成することで、これらの変更を無効にできます。
この変更前、Cloud Build は Cloud Build 固有のサービス アカウントをデフォルトとして使用していました。現在このサービス アカウントは、Cloud Build の従来のサービス アカウントと呼ばれています。
この変更後、Cloud Build はデフォルトのサービス アカウントとして Compute Engine のデフォルトのサービス アカウントを使用します。
プロジェクトへの影響は、組織に属しているかどうかによって異なります。
組織のないプロジェクト 。変更後に プロジェクトで最初のビルドを実行すると、そのプロジェクトでは、Compute Engine サービス アカウントが、Cloud Build API または Google Cloud CLI を使用して送信されるビルドに、デフォルトで使用されます。これらのプロジェクトでは、Cloud Build の従来のサービス アカウントを使用するオプションはありませんが、ユーザー指定のサービス アカウントを使用できます。
組織のあるプロジェクト 。変更後にプロジェクトで最初のビルドを実行すると、そのプロジェクトでは、Compute Engine サービス アカウントが、Cloud Build API または Google Cloud CLI を使用して送信されるビルドに、デフォルトで 使用されます。ユーザー指定のサービス アカウントを使用するか、組織で Cloud Build サービス アカウントを有効にして変更を無効にできます。
組織のない既存のプロジェクト 。変更前にプロジェクトで最初のビルドを実行した場合、そのプロジェクトでは、すべてのビルドでデフォルトで Cloud Build の従来のサービス アカウントが使用され、以前の動作が引き続き使用されます。Compute Engine サービス アカウントを選択するか、独自のサービス アカウントを作成することで、 ユーザー指定のサービス アカウントを引き続き使用できます。
組織のある既存のプロジェクト 。変更前にプロジェクトで最初のビルドを実行した場合、そのプロジェクトでは、デフォルトで Cloud Build の従来のサービス アカウントが使用され、以前の動作が引き続き使用されます。ユーザー指定のサービス アカウントを引き続き使用することもできます。
トリガー。プロジェクトのデフォルトのサービス アカウントが Cloud Build の従来のサービス アカウントである場合を除き、トリガーを作成または更新するときにサービス アカウントを指定する必要があります。
Cloud Build サービス アカウント名: Cloud Build サービス アカウントは、Cloud Build の従来のサービス アカウントと呼ばれます。
必要なご対応について
組織に属している場合、組織は選択した制約を使用して組織のポリシーを設定することで、すべてのプロジェクトの動作を 構成できます。
組織は、次の 組織のポリシーのブール型制約を設定することで、これらの変更を無効にできます。
- 未適用:
constraints/cloudbuild.disableCreateDefaultServiceAccount - 未適用:
constraints/cloudbuild.useComputeServiceAccount - 適用済み:
constraints/cloudbuild.useBuildServiceAccount
組織のポリシーを調整できない、または調整したくない場合で、変更後に
Cloud Build API を有効にする場合は、
Compute Engine のデフォルトのサービス
アカウントまたはユーザーが作成したサービス アカウントに、ビルドに対する十分な
権限があることを検証してください。特に、ビルドを送信するユーザーには、サービス アカウントに対する iam.serviceAccounts.actAs 権限が必要です。
新しい組織のポリシーの制約
Cloud Build では、次の構成を行うための新しい組織のポリシーのブール型 制約が導入されています。
- Cloud Build の従来のサービス アカウントを使用するための機能。
- 組織内のすべてのプロジェクトのデフォルトのサービス アカウント。
組織のポリシーを変更するには、 Google Cloud コンソールまたは Google Cloud CLI を使用します。
Google Cloud コンソール: 変更する制約を選択し、コンソールで [**適用**] オプションを [**オン**] または [**オフ**] に設定します Google Cloud 。
Google Cloud CLI: Google Cloud CLI で制約の適用を構成します。
組織のポリシーの詳細については、組織ポリシー サービスの概要をご覧ください。
Cloud Build の従来のサービス アカウントの可用性を構成する
Cloud Build API を有効にするときに Cloud Build の従来のサービス アカウントの可用性を構成するため、Cloud Build には次のブール値ポリシー制約が導入されます。
未適用:
constraints/cloudbuild.disableCreateDefaultServiceAccount。新しいプロジェクトで Cloud Build の従来のサービス アカウントを使用できます。適用済み:
constraints/cloudbuild.disableCreateDefaultServiceAccount。新しいプロジェクトで Cloud Build の従来のサービス アカウントを使用できなくなります。これは、制約のデフォルト値です。
この制約は、変更のロールアウト後に最初のビルドを実行するプロジェクトにのみ影響します。ポリシー制約を適用しない場合、その構成が有効になっているときに最初のビルドを実行するすべてのプロジェクトで変更が永続的に行われます。サービス アカウントが以前に使用されていたプロジェクトでは、Cloud Build の従来の サービス アカウントの可用性をオフにすることはできません。ただし、サービス アカウントが使用可能な場合でも、次のセクションで説明するように、組織内のユーザーがサービス アカウントを使用できないようにすることができます。
すべての組織のポリシーや制約と同様に、これらのポリシーは組織レベルまたはプロジェクト レベルで設定できます。
組織のデフォルトのサービス アカウントを構成する
組織で使用されるデフォルトのサービス アカウントを構成するため、 Cloud Build には次の 2 つの新しいポリシーのブール型 制約が導入されています。
constraints/cloudbuild.useBuildServiceAccount: Cloud Build の従来のサービス アカウントの使用を構成します。constraints/cloudbuild.useComputeServiceAccount: Compute Engine のデフォルトのサービス アカウントの使用を構成します。
これらのポリシーは個別に構成できますが、次のシナリオで適用ルールを組み合わせると最も効果的です。
手動で送信されたビルドとトリガーされたビルドの両方に、Compute Engine のデフォルトのサービス アカウントを使用します。組織のポリシーに次の制約を設定します。
- 未適用:
constraints/cloudbuild.useBuildServiceAccount - 適用済み:
constraints/cloudbuild.useComputeServiceAccount
- 未適用:
手動で送信された ビルドとトリガーされたビルドの両方に、ユーザー指定のサービス アカウントを使用します。通常、これが最も安全なオプションです。組織のポリシーに次の制約を設定します。
- 未適用:
constraints/cloudbuild.useBuildServiceAccount - 未適用:
constraints/cloudbuild.useComputeServiceAccount
- 未適用:
Cloud Build の従来のサービス アカウントを引き続き使用します。関連するセキュリティのトレードオフを認識している場合は、組織のポリシーに次の制約を設定します。
- 未適用:
constraints/cloudbuild.disableCreateDefaultServiceAccount - 未適用:
constraints/cloudbuild.useComputeServiceAccount - 適用済み:
constraints/cloudbuild.useBuildServiceAccount
- 未適用:
変更前に Cloud Build API を有効にしたプロジェクトでは、引き続き Cloud Build の従来のサービス アカウントを使用し、新しいプロジェクトでは Compute Engine のデフォルトのサービス アカウントの使用を開始します。関連するセキュリティのトレードオフを理解したうえで、組織のポリシーに次の制約を設定します。
- 適用済み:
constraints/cloudbuild.disableCreateDefaultServiceAccount - 適用済み:
constraints/cloudbuild.useComputeServiceAccount - 適用済み:
constraints/cloudbuild.useBuildServiceAccount
- 適用済み:
プロジェクトの現在のデフォルトのサービス アカウントを取得する
Cloud Build がプロジェクトのデフォルトとして使用しているサービス アカウントを特定するには、Google Cloud CLI または Cloud Build API を使用します。
gcloud CLI
次のコマンドを実行して、現在のプロジェクトのデフォルトのサービス アカウントを取得します。
gcloud builds get-default-service-accountCloud 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プレースホルダの値を次のように置き換えます。
PROJECT_ID: プロジェクトの ID。REGION: サポートされているリージョンの 1 つ。