Änderung des Cloud Build-Standarddienstkontos

Cloud Build wählt automatisch den Cloud Build-Dienst aus -Konto verwendet, um Builds in Ihrem Namen auszuführen, es sei denn, Sie überschreiben dieses Verhalten. Dieses Standarddienstkonto hat möglicherweise unnötig umfassende Berechtigungen für Ihren Anwendungsfall, z. B. Zugriff auf Container Registry-Repositories und Cloud Storage-Bucket in Ihrem Projekt.

Das Standardverhalten für die Verwendung von Dienstkonten durch Cloud Build in neuen Projekten über mehrere Wochen im Mai und Juni 2024 geändert wurden. Mit diesen Änderungen wird der standardmäßige Sicherheitsstatus unserer Kunden verbessert. Sie können diese Änderungen deaktivieren, indem Sie die Organisation Richtlinieneinschränkung.

Vor dieser Änderung hat Cloud Build eine Cloud Build-spezifisches Dienstkonto als Standarddienstkonto, jetzt bezeichnet als Legacy-Dienstkonto von Cloud Build.

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

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

  • Projekte ohne Organisation Wenn Sie den ersten Build ausführen, nach der Änderung verwendet, nutzt dieses Projekt den Compute Engine-Dienst Konto standardmäßig für Builds, die mit dem Cloud Build API oder die Google Cloud CLI. Diese Projekte haben nicht die Option, das alte Cloud Build-Dienstkonto zu verwenden, aber Sie können ein eines benutzerdefinierten Dienstkontos.

  • Projekte mit einer Organisation Wenn Sie den ersten Build in der nach der Änderung verwendet, nutzt dieses Projekt den Compute Engine-Dienst Konto standardmäßig für Builds, die mit dem Cloud Build API oder die Google Cloud CLI. Sie können ein vom Nutzer angegebenes Dienstkonto verwenden oder die Änderung deaktivieren, indem Sie das Cloud Build-Dienstkonto in Ihrer Organisation aktivieren.

  • Bestehende Projekte ohne Organisation: Wenn Sie den ersten Build vor der Änderung durchgeführt haben, wird dieses Projekt mit dem alten Cloud Build-Dienst ist für alle Ihre Builds standardmäßig ein Konto. 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 alte Cloud Build-Dienstkonto verwendet. Sie können auch weiterhin einen vom Nutzer angegebenen Dienst Konto.

  • Trigger: Sie müssen ein Dienstkonto beim Erstellen oder einen Trigger aktualisieren, es sei denn, das Standarddienstkonto für Ihr ist das Legacy-Dienstkonto von Cloud Build.

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

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 Folgendes festlegen: Boolesche Einschränkungen der Organisationsrichtlinie:

  • 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 Cloud Build-Legacy-Dienstkonto zu verwenden.
  • Das Standarddienstkonto für alle Projekte in einer Organisation.

Zum Ändern von Organisationsrichtlinien können Sie die Google Cloud Console oder die Google Cloud CLI:

Weitere Informationen zu Organisationsrichtlinien finden Sie in der Einführung in das Organisationsrichtliniendienst.

Verfügbarkeit des Legacy-Dienstkontos von Cloud Build konfigurieren

Verfügbarkeit des Legacy-Dienstes von Cloud Build konfigurieren wenn Sie die Cloud Build API aktivieren, führen Sie die folgende boolesche Richtlinieneinschränkung ein:

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

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

Diese Einschränkung betrifft nur Projekte, die ihren ersten Build nach dem eine Änderung eingeführt. 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 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 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 Organisationsebene oder auf Projektebene.

Standarddienstkonto für eine Organisation konfigurieren

So konfigurieren Sie, welches Standarddienstkonto in einer Organisation verwendet wird: Cloud Build führt zwei neue boolesch-basierte Richtlinien ein Einschränkungen:

  • 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 für beide das Compute Engine-Standarddienstkonto manuell übermittelte und ausgelöste Builds. Legen Sie in Ihrer Organisationsrichtlinie die folgenden Einschränkungen fest:

    • Nicht erzwungen: constraints/cloudbuild.useBuildServiceAccount
    • Erzwungen: constraints/cloudbuild.useComputeServiceAccount
  • Verwenden Sie ein benutzerdefiniertes Dienstkonto, sowohl für manuell eingereichte Builds als auch für ausgelöste Builds. Dies ist in der Regel die sicherste Option. Festlegen die folgenden Einschränkungen in Ihrer Organisationsrichtlinie beachten:

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

    • Nicht erzwungen: constraints/cloudbuild.disableCreateDefaultServiceAccount
    • Nicht erzwungen: constraints/cloudbuild.useComputeServiceAccount
    • Erzwungen: constraints/cloudbuild.useBuildServiceAccount
  • Verwenden Sie das bisherige Cloud Build-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. Achten Sie darauf, die damit verbundenen Sicherheitsrisiken verstehen, legen Sie die folgenden Einschränkungen in Ihrer Organisationsrichtlinie:

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

Aktuelles Standarddienstkonto für ein Projekt abrufen

Sie können die Google Cloud CLI oder die Cloud Build API verwenden, um herauszufinden, 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: