Änderung des Cloud Build-Standarddienstkontos

Cloud Build wählt automatisch das Cloud Build-Dienstkonto aus, um Builds in Ihrem Namen auszuführen, es sei denn, Sie überschreiben dieses Verhalten. Dieses Standarddienstkonto hat möglicherweise Berechtigungen, die für Ihren Anwendungsfall unnötig weit gefasst sind, z. B. Zugriff auf alle Cloud Storage-Bucket in Ihrem Projekt.

Das Standardverhalten für die Verwendung von Dienstkonten durch Cloud Build in neuen Projekten wurde im Mai und Juni 2024 über mehrere Wochen hinweg geändert. Diese Änderungen verbessern den standardmäßigen Sicherheitsstatus unserer Kunden. Sie können diese Änderungen deaktivieren, indem Sie die Einschränkung der Organisation srichtlinie konfigurieren.

Vor dieser Änderung verwendete Cloud Build standardmäßig ein Cloud Build-spezifisches Dienstkonto, das jetzt als Cloud Build-Legacy-Dienstkonto bezeichnet wird.

Nach dieser Änderung verwendet Cloud Build jetzt das Compute Engine-Standarddienstkonto als Standarddienstkonto.

Die Auswirkungen auf Ihre Projekte hängen davon ab, ob Sie Teil einer Organisation sind:

  • Projekte ohne Organisation. Wenn Sie nach der Änderung den ersten Build in Ihrem Projekt ausführen, wird in diesem Projekt standardmäßig das Compute Engine-Dienst konto für Builds verwendet, die über die Cloud Build API oder die Google Cloud CLI gesendet werden. Für diese Projekte gibt es keine Option , das Cloud Build-Legacy-Dienstkonto zu verwenden, aber es kann ein vom Nutzer angegebenes Dienstkonto verwendet werden.

  • Projekte mit Organisation. Wenn Sie nach der Änderung den ersten Build in Ihrem Projekt ausführen, wird in diesem Projekt standardmäßig das Compute Engine-Dienst konto für Builds verwendet, die über die Cloud Build API oder die Google Cloud CLI gesendet werden. Sie können ein vom Nutzer angegebenes Dienstkonto verwenden oder die Änderung deaktivieren, indem Sie das Cloud Build-Dienstkonto in Ihrer Organisation aktivieren.

  • Vorhandene Projekte ohne Organisation. Wenn Sie den ersten Build in Ihrem Projekt vor der Änderung ausgeführt haben, wird in diesem Projekt weiterhin das alte Verhalten verwendet und standardmäßig das Cloud Build-Legacy-Dienstkonto für alle Ihre Builds genutzt. Sie können weiterhin ein vom Nutzer angegebenes Dienstkontoverwenden, indem Sie entweder das Compute Engine-Dienstkonto auswählen oder ein eigenes erstellen.

  • Vorhandene Projekte mit Organisation. Wenn Sie den ersten Build in Ihrem Projekt vor der Änderung ausgeführt haben, wird in diesem Projekt weiterhin das alte Verhalten verwendet und standardmäßig das Cloud Build-Legacy-Dienstkonto genutzt. Sie können auch weiterhin ein vom Nutzer angegebenes Dienst konto verwenden.

  • Trigger. Sie müssen ein Dienstkonto angeben, wenn Sie einen Trigger erstellen oder aktualisieren, es sei denn, das Standarddienstkonto für Ihr Projekt ist das Cloud Build-Legacy-Dienstkonto.

  • Name des Cloud Build-Dienstkontos: Das Cloud Build Dienstkonto wird als Cloud Build-Legacy Dienstkonto bezeichnet.

Was muss ich tun?

Wenn Sie Teil einer Organisation sind, kann Ihre Organisation das Verhalten aller Projekte konfigurieren, indem sie eine Organisationsrichtlinie mit den ausgewählten Einschränkungen einrichtet.

Ihre Organisation kann diese Änderungen deaktivieren, indem sie die folgenden Organisationsrichtlinien-Boolesche-Einschränkungenfestlegt:

  • Nicht erzwungen: constraints/cloudbuild.disableCreateDefaultServiceAccount
  • Nicht erzwungen: constraints/cloudbuild.useComputeServiceAccount
  • Erzwungen: constraints/cloudbuild.useBuildServiceAccount

Wenn Sie die Organisationsrichtlinie nicht anpassen können oder möchten und die Cloud Build API nach der Änderung aktivieren, prüfen Sie, ob das Compute Engine-Standarddienstkonto oder Ihr vom Nutzer erstelltes Dienstkonto genügend Berechtigungen für Ihren Build hat. Insbesondere muss der Nutzer, der den Build sendet, die iam.serviceAccounts.actAs Berechtigung für das Dienst konto haben.

Neue Einschränkungen für Organisationsrichtlinien

Cloud Build hat neue boolesche Einschränkungen für Organisationsrichtlinien eingeführt, die Sie konfigurieren können:

  • Die Möglichkeit, das Cloud Build-Legacy-Dienstkonto zu verwenden.
  • Das Standarddienstkonto für alle Projekte in einer Organisation.

Sie können Organisationsrichtlinien in der Google Cloud Console oder über die Google Cloud CLI ändern:

Weitere Informationen zu Organisationsrichtlinien finden Sie unter Einführung in den Organisationsrichtliniendienst.

Verfügbarkeit des Cloud Build-Legacy-Dienstkontos konfigurieren

Wenn Sie die Verfügbarkeit des Cloud Build-Legacy-Dienstkontos konfigurieren möchten, wenn Sie die Cloud Build API aktivieren, führt Cloud Build die folgende boolesche Einschränkung für Organisationsrichtlinien ein:

  • Nicht erzwungen: constraints/cloudbuild.disableCreateDefaultServiceAccount. Ermöglicht die Verwendung des Cloud Build-Legacy-Dienstkontos in neuen Projekten.

  • Erzwungen: constraints/cloudbuild.disableCreateDefaultServiceAccount. Deaktiviert die Verwendung des Cloud Build-Legacy-Dienstkontos in neuen Projekten. Dies ist der Standardwert der Einschränkung.

Diese Einschränkung betrifft nur Projekte, in denen der erste Build nach der Einführung der Änderung ausgeführt wird. Wenn Sie die Einschränkung der Organisationsrichtlinie nicht erzwingen, ist die Änderung für alle Projekte dauerhaft, in denen der erste Build ausgeführt wird, wenn diese Konfiguration aktiv ist. Sie können die Verfügbarkeit des Cloud Build-Legacy-Dienstkontos in einem Projekt, in dem das Dienstkonto zuvor verfügbar war, nicht deaktivieren. Auch wenn das Dienstkonto verfügbar ist, können Sie jedoch verhindern, dass Nutzer in Ihrer Organisation es verwenden, wie im folgenden Abschnitt beschrieben.

Wie bei allen Organisationsrichtlinien und -einschränkungen können Sie diese Richtlinien auf Organisations- oder Projektebene festlegen.

Standarddienstkonto für eine Organisation konfigurieren

Um zu konfigurieren, welches Standarddienstkonto in einer Organisation verwendet wird, führt Cloud Build zwei neue boolesche Richtlinien Einschränkungen ein:

  • constraints/cloudbuild.useBuildServiceAccount: Konfigurieren Sie die Verwendung des Cloud Build-Legacy-Dienstkontos.
  • constraints/cloudbuild.useComputeServiceAccount: Konfigurieren Sie die Verwendung des Compute Engine-Standarddienstkontos.

Sie können diese Richtlinien unabhängig voneinander konfigurieren. Sie sind jedoch am nützlichsten, wenn die Erzwingungsregeln in den folgenden Szenarien kombiniert werden:

  • Verwenden Sie das Compute Engine-Standarddienstkonto für manuell gesendete und ausgelöste Builds. Legen Sie die folgenden Einschränkungen in Ihrer Organisationsrichtlinie fest:

    • Nicht erzwungen: constraints/cloudbuild.useBuildServiceAccount
    • Erzwungen: constraints/cloudbuild.useComputeServiceAccount
  • Verwenden Sie ein vom Nutzer angegebenes Dienstkonto für manuell gesendete und ausgelöste Builds. Dies ist in der Regel die sicherste Option. Legen Sie die folgenden Einschränkungen in Ihrer Organisationsrichtlinie fest:

    • Nicht erzwungen: constraints/cloudbuild.useBuildServiceAccount
    • Nicht erzwungen: constraints/cloudbuild.useComputeServiceAccount
  • Verwenden Sie weiterhin das Cloud Build-Legacy-Dienstkonto. Wenn Sie sich der damit verbundenen Sicherheitsrisiken bewusst sind, legen Sie die folgenden Einschränkungen in Ihrer Organisationsrichtlinie fest:

    • Nicht erzwungen: constraints/cloudbuild.disableCreateDefaultServiceAccount
    • Nicht erzwungen: constraints/cloudbuild.useComputeServiceAccount
    • Erzwungen: constraints/cloudbuild.useBuildServiceAccount
  • Verwenden Sie weiterhin das Cloud Build-Legacy-Dienstkonto für Projekte, in denen die Cloud Build API vor der Änderung aktiviert wurde, und verwenden Sie das Compute Engine Standarddienstkonto für neue Projekte. Wenn Sie sich der damit verbundenen Sicherheitsrisiken bewusst sind, legen Sie die folgenden Einschränkungen in Ihrer Organisationsrichtlinie fest:

    • Erzwungen: constraints/cloudbuild.disableCreateDefaultServiceAccount
    • Erzwungen: constraints/cloudbuild.useComputeServiceAccount
    • Erzwungen: constraints/cloudbuild.useBuildServiceAccount

Aktuelles Standarddienstkonto für ein Projekt abrufen

Mit der Google Cloud CLI oder der Cloud Build API können Sie ermitteln, welches Dienstkonto Cloud Build standardmäßig für ein Projekt verwendet:

gcloud CLI

Führen Sie den folgenden Befehl aus, um das Standarddienstkonto für das aktuelle Projekt abzurufen:

gcloud builds get-default-service-account

Cloud Build API

Rufen Sie die cURL mit cURL auf:

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

Ersetzen Sie die Platzhalterwerte durch Folgendes: