Änderung des Cloud Build-Dienstkontos

Cloud Build wählt automatisch das Cloud Build-Dienstkonto aus, um Builds in Ihrem Namen auszuführen, sofern Sie dieses Verhalten nicht überschreiben. Dieses Dienstkonto kann Berechtigungen haben, die für Ihren Anwendungsfall unnötig breit gefasst sind, z. B. Zugriff auf Ihre Cloud Source Repositories und alle Cloud Storage-Buckets in Ihrem Projekt

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

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

  • Projekte ohne Organisation. Wenn Sie die Cloud Build API nach der Änderung in Ihren Projekten aktivieren, verwenden Sie standardmäßig das Compute Engine-Dienstkonto für Builds, die über die Cloud Build API oder die Google Cloud CLI eingereicht wurden. Für diese Projekte besteht nicht die Möglichkeit, das Cloud Build-Legacy-Dienstkonto zu verwenden. Sie können jedoch ein benutzerdefiniertes Dienstkonto verwenden.

  • Projekte mit einer Organisation. Wenn Sie die Cloud Build API nach der Änderung in Ihren Projekten aktivieren, verwenden Sie standardmäßig das Compute Engine-Dienstkonto für Builds, die über die Cloud Build API oder die Google Cloud CLI eingereicht wurden. Sie können ein benutzerdefiniertes Dienstkonto verwenden oder der Änderung widersprechen, indem Sie das Cloud Build-Dienstkonto in Ihrer Organisation aktivieren.

  • Bestehende Projekte ohne Organisation: Wenn Sie die Cloud Build API vor der Änderung in Ihren Projekten aktiviert haben, wird das alte Verhalten beibehalten und Sie verwenden standardmäßig das Legacy-Cloud Build-Dienstkonto für alle Ihre Builds. Sie können weiterhin ein benutzerdefiniertes Dienstkonto verwenden, indem Sie entweder das Compute Engine-Dienstkonto auswählen oder ein eigenes erstellen.

  • Bestehende Projekte in einer Organisation. Wenn Sie die Cloud Build API vor der Änderung in Ihren Projekten aktiviert haben, wird das alte Verhalten beibehalten und standardmäßig das Cloud Build-Legacy-Dienstkonto verwendet. Sie können auch weiterhin ein benutzerdefiniertes 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 Cloud Build-Legacy-Dienstkonto.

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

  • Name des Cloud Build-Dienstkontos: Das Cloud Build-Dienstkonto wird als Legacy-Cloud Build-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 einrichten.

Ihre Organisation kann diese Änderungen deaktivieren, indem Sie die folgenden boolean constraints für Organisationsrichtlinien festlegen:

  • 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 die erforderlichen Berechtigungen für Ihren Build hat. Insbesondere muss der Nutzer, der den Build sendet, die Berechtigung iam.serviceAccounts.actAs für das Dienstkonto haben.

Neue Einschränkungen für Organisationsrichtlinien

Für Cloud Build wurden neue boolesche Einschränkungen für Organisationsrichtlinien zum Konfigurieren von folgenden Elementen eingeführt:

  • 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 verwenden:

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

Verfügbarkeit des Cloud Build-Legacy-Dienstkontos konfigurieren

Um die Verfügbarkeit des Cloud Build-Legacy-Dienstkontos zu konfigurieren, wenn Sie die Cloud Build API aktivieren, führt Cloud Build 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 der Einführung der Änderung aktiviert wird. Wenn Sie die Richtlinieneinschränkung nicht erzwingen, gilt die Änderung für alle Projekte, die die API aktivieren, wenn diese Konfiguration aktiv ist. Die Verfügbarkeit des Cloud Build-Legacy-Dienstkontos kann für ein Projekt, in dem das Dienstkonto zuvor verfügbar war, nicht deaktiviert werden. Aber selbst wenn das Dienstkonto verfügbar ist, können Sie verhindern, dass Nutzer in Ihrer Organisation es verwenden. Dies wird im folgenden Abschnitt beschrieben.

Standarddienstkonto für eine Organisation konfigurieren

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

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

Sie können diese Richtlinien unabhängig voneinander konfigurieren, aber in folgenden Szenarien sind die Erzwingungsregeln am nützlichsten:

  • Das Compute Engine-Standarddienstkonto sowohl für manuell gesendete als auch für ausgelöste Builds verwenden. Legen Sie in Ihrer Organisationsrichtlinie die folgenden Einschränkungen fest:

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

    • 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 Sicherheitskompromisse 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 alte Cloud Build-Dienstkonto für Projekte, in denen die Cloud Build API vor der Änderung aktiviert wurde, und verwenden Sie nun das Compute Engine-Standarddienstkonto für neue Projekte. Machen Sie sich mit den damit verbundenen Kompromissen bei der Sicherheit vertraut und 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

Um zu ermitteln, welches Dienstkonto Cloud Build als Standard für ein Projekt verwendet, 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 abzurufen:

gcloud builds get-default-service-account

Cloud Build API

Verwenden Sie cURL, um die Cloud Build API aufzurufen:

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: