Änderung des Cloud Build-Dienstkontos

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 Dienstkonto hat möglicherweise Berechtigungen, die für Ihre Anwendungsfall, z. B. Zugriff auf Ihre Cloud Source Repositories und Cloud Storage Bucket in Ihrem Projekt

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

Vor dieser Änderung hat Cloud Build eine Cloud Build-spezifisches Dienstkonto als Standard.

Nach dieser Änderung verwendet Cloud Build Compute Engine-Standarddienstkonto als Standard eingerichtet.

Wie sich dies auf Ihre Projekte auswirkt, hängt davon ab, ob Sie Teil eines Organisation:

  • Projekte ohne Organisation. Wenn Sie die Cloud Build API auf nach der Umstellung verwenden, nutzen Sie 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, um das Cloud Build-Legacy-Dienstkonto zu verwenden, aber Sie können ein vom Nutzer angegebenes Dienstkonto.

  • Projekte mit einer Organisation. Wenn Sie die Cloud Build API auf Ihrem nach der Änderung verwenden, nutzen Sie den Compute Engine-Dienst Konto standardmäßig für Builds, die mit dem Cloud Build API oder die Google Cloud CLI. Sie können eine vom Nutzer angegebene Dienstkonto oder deaktivieren Sie die Änderung, indem Sie das Cloud Build-Dienstkonto in Ihrer Organisation.

  • Bestehende Projekte ohne Organisation: Wenn Sie die Funktion Cloud Build API in Ihren Projekten vor der Änderung ausgeführt haben, fahren Sie mit mit dem alten Cloud Build-Dienst ist für alle Ihre Builds standardmäßig ein Konto. Sie können weiterhin ein Benutzerdefiniertes Dienstkonto, indem Sie das Feld Compute Engine-Dienstkonto oder erstellen Sie ein eigenes.

  • Bestehende Projekte in einer Organisation. Wenn Sie die Funktion Cloud Build API in Ihren Projekten vor der Änderung ausgeführt haben, fahren Sie mit mit dem alten Cloud Build-Dienst -Konto standardmäßig aktiviert. 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 Projekt ist das Legacy-Cloud Build-Dienstkonto.

  • API: Durch das Aktivieren der Cloud Build API wird auch die Identity and Access Management API aktiviert.

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

Was muss ich tun?

Wenn Sie Teil einer Organisation sind, kann Ihre Organisation das Verhalten konfigurieren für alle Projekte durch Einrichten einer Organisationsrichtlinie mit dem ausgewählten Einschränkungen.

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
  • Erzwungen: constraints/cloudbuild.useBuildServiceAccount

Wenn Sie die Organisationsrichtlinie nicht anpassen können oder möchten und die Cloud Build API nach der Umstellung Überprüfen Sie, ob der Compute Engine-Standarddienst Konto oder Ihrem vom Nutzer erstellten Dienstkonto ausreichend Berechtigungen für Ihren Build. Insbesondere muss der Nutzer, der den Build sendet, Sie haben die Berechtigung iam.serviceAccounts.actAs für den Dienst Konto.

Neue Einschränkungen für Organisationsrichtlinien

Cloud Build hat eine neue boolesche Organisationsrichtlinie eingeführt Einschränkungen konfiguriert werden:

  • 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 Cloud Build-Legacy-Dienstkontos 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 Legacy-Dienstes von Cloud Build in neuen Projekten.

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

Diese Einschränkung betrifft nur Projekte, bei denen die Cloud Build API nach dem eine Änderung eingeführt. Wenn Sie sich dafür entscheiden, Richtlinieneinschränkung festgelegt ist, gilt die Änderung für alle Projekte, die wenn die Konfiguration aktiv ist. Die Verfügbarkeit kann nicht deaktiviert werden des Cloud Build-Legacy-Dienstkontos in einem Projekt, in dem der Dienstkonto verfügbar war. Aber selbst wenn das Dienstkonto verfügbar ist, können Sie Nutzer in Ihrer Organisation daran hindern, die im folgenden Abschnitt beschrieben werden.

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 Legacy-Dienstkonto von Cloud Build.
  • constraints/cloudbuild.useComputeServiceAccount: Konfigurieren Sie die Verwendung des Standardmäßiges Compute Engine-Dienstkonto.

Sie können diese Richtlinien unabhängig voneinander konfigurieren, sind aber nützlich, 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 Folgendes fest: Einschränkungen in Ihrer Organisationsrichtlinie:

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

    • Nicht erzwungen: constraints/cloudbuild.useBuildServiceAccount
    • Nicht erzwungen: constraints/cloudbuild.useComputeServiceAccount
  • Verwenden Sie weiterhin das Legacy-Dienstkonto von Cloud Build. Wenn Sie sollten Sie sich der damit verbundenen Sicherheits-Kompromisse bewusst sein, Ihrer Organisationsrichtlinie:

    • Nicht erzwungen: constraints/cloudbuild.disableCreateDefaultServiceAccount
    • Nicht erzwungen: constraints/cloudbuild.useComputeServiceAccount
    • Erzwungen: constraints/cloudbuild.useBuildServiceAccount
  • Verwenden Sie weiterhin das alte Cloud Build-Dienstkonto für Projekten, in denen die Cloud Build API vor der Änderung aktiviert wurde, und beginnen mit der Nutzung der 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
    • Erzwungen: constraints/cloudbuild.useComputeServiceAccount
    • Erzwungen: constraints/cloudbuild.useBuildServiceAccount

Aktuelles Standarddienstkonto für ein Projekt abrufen

Bestimmen, welches Dienstkonto Cloud Build als Standard für ein Projekt haben, können Sie die Google Cloud CLI oder die Cloud Build API verwenden:

gcloud-CLI

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

gcloud builds get-default-service-account

Cloud Build API

Verwenden Sie cURL für den folgenden Anruf: 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

Ersetzen Sie die Platzhalterwerte durch Folgendes: