Änderung des Cloud Build-Standarddienstkontos

Sofern Sie dieses Verhalten nicht überschreiben, wird das Cloud Build-Dienstkonto automatisch von Cloud Build ausgewählt, um Builds in Ihrem Namen auszuführen. Dieses Standarddienstkonto hat möglicherweise Berechtigungen, die für Ihren Anwendungsfall unnötig weit gefasst sind, z. B. Zugriff auf Container Registry-Repositories und alle Cloud Storage-Buckets 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. Durch diese Änderungen wird der standardmäßige Sicherheitsstatus unserer Kunden verbessert. Sie können diese Änderungen deaktivieren, indem Sie die Einschränkung der Organisationsrichtlinie konfigurieren.

Vor dieser Änderung wurde in Cloud Build ein Cloud Build-spezifisches Dienstkonto als Standard verwendet, das jetzt als altes Cloud Build-Dienstkonto bezeichnet wird.

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

Wie sich die Änderungen auf Ihre Projekte auswirken, hängt davon ab, ob Sie zu einer Organisation gehören:

  • Projekte ohne Organisation Wenn Sie nach der Änderung den ersten Build in Ihrem Projekt ausführen, wird für dieses Projekt standardmäßig das Compute Engine-Dienstkonto für Builds verwendet, die über die Cloud Build API oder die Google Cloud CLI eingereicht werden. Für diese Projekte kann das Cloud Build-Legacy-Dienstkonto nicht verwendet werden. Sie können jedoch ein vom Nutzer angegebenes Dienstkonto verwenden.

  • Projekte mit einer Organisation Wenn Sie nach der Änderung den ersten Build in Ihrem Projekt ausführen, wird für dieses Projekt standardmäßig das Compute Engine-Dienstkonto für Builds verwendet, die über die Cloud Build API oder die Google Cloud CLI eingereicht 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 für dieses Projekt weiterhin das alte Verhalten verwendet. Dabei wird standardmäßig das alte Cloud Build-Dienstkonto für alle Builds verwendet. Sie können weiterhin ein vom Nutzer angegebenes Dienstkonto verwenden. Wählen Sie dazu entweder das Compute Engine-Dienstkonto aus oder erstellen Sie ein eigenes.

  • Vorhandene Projekte mit einer Organisation Wenn Sie den ersten Build in Ihrem Projekt vor der Änderung ausgeführt haben, wird für dieses Projekt weiterhin das alte Verhalten verwendet und standardmäßig das Cloud Build-Legacy-Dienstkonto verwendet. Sie können auch weiterhin ein von Nutzern angegebenes Dienstkonto 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 alte Cloud Build-Dienstkonto.

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

Was muss ich tun?

Wenn Sie zu einer Organisation gehören, kann diese 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 booleschen Einschränkungen für die Organisationsrichtlinie festlegt:

  • Nicht erzwungen: constraints/cloudbuild.disableCreateDefaultServiceAccount
  • Nicht erzwungen: constraints/cloudbuild.useComputeServiceAccount
  • Erzwingen: 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 entweder das Compute Engine-Standarddienstkonto oder das von Ihnen erstellte Dienstkonto genügend Berechtigungen für Ihren Build hat. Insbesondere muss der Nutzer, der den Build einreicht, die Berechtigung iam.serviceAccounts.actAs für das Dienstkonto haben.

Neue Einschränkungen für Organisationsrichtlinien

In Cloud Build wurden neue boolesche Einschränkungen für Organisationsrichtlinien eingeführt, mit denen Folgendes konfiguriert werden kann:

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

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

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

Verfügbarkeit des alten Cloud Build-Dienstkontos konfigurieren

Um die Verfügbarkeit des Cloud Build-Altdienstkontos zu konfigurieren, wenn Sie die Cloud Build API aktivieren, wird in Cloud Build die folgende boolesche Richtlinieneinschränkung eingeführt:

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

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

Diese Einschränkung gilt nur für Projekte, bei denen der erste Build nach der Einführung der Änderung ausgeführt wird. Wenn Sie sich gegen die Durchsetzung der Richtlinieneinschränkung entscheiden, ist die Änderung für alle Projekte dauerhaft, die ihren ersten Build ausführen, während diese Konfiguration aktiv ist. Sie können die Verfügbarkeit des alten Cloud Build-Dienstkontos in einem Projekt, in dem das Dienstkonto zuvor verfügbar war, nicht deaktivieren. Auch wenn das Dienstkonto verfügbar ist, können Sie verhindern, dass Nutzer in Ihrer Organisation es verwenden, wie im nächsten 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, werden in Cloud Build zwei neue boolesche Richtlinieneinschränkungen eingeführt:

  • constraints/cloudbuild.useBuildServiceAccount: Konfigurieren Sie die Verwendung des alten Cloud Build-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 sowohl für manuell eingereichte Builds als auch für ausgelöste Builds. Legen Sie in Ihrer Organisationsrichtlinie die folgenden Einschränkungen fest:

    • Nicht erzwungen: constraints/cloudbuild.useBuildServiceAccount
    • Erzwingen: constraints/cloudbuild.useComputeServiceAccount
  • Verwenden Sie ein benutzerdefiniertes Dienstkonto, sowohl für manuell eingereichte Builds als auch für ausgelöste Builds. Das ist im Allgemeinen die sicherste Option. Legen Sie die folgenden Einschränkungen in Ihrer Organisationsrichtlinie fest:

    • Nicht erzwungen: constraints/cloudbuild.useBuildServiceAccount
    • Nicht erzwungen: constraints/cloudbuild.useComputeServiceAccount
  • Das alte Cloud Build-Dienstkonto weiter verwenden Wenn Sie sich der Sicherheitsrisiken bewusst sind, legen Sie in Ihrer Organisationsrichtlinie die folgenden Einschränkungen fest:

    • Nicht erzwungen: constraints/cloudbuild.disableCreateDefaultServiceAccount
    • Nicht erzwungen: constraints/cloudbuild.useComputeServiceAccount
    • Erzwingen: constraints/cloudbuild.useBuildServiceAccount
  • Verwenden Sie das Cloud Build-Legacy-Dienstkonto weiterhin für Projekte, für die die Cloud Build API vor der Änderung aktiviert wurde, und verwenden Sie das Compute Engine-Standarddienstkonto für neue Projekte. Machen Sie sich mit den Sicherheitsabwägungen vertraut und legen Sie die folgenden Einschränkungen in Ihrer Organisationsrichtlinie fest:

    • Erzwingen: constraints/cloudbuild.disableCreateDefaultServiceAccount
    • Erzwingen: constraints/cloudbuild.useComputeServiceAccount
    • Erzwingen: 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 Cloud Build API 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: