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
- 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:
Google Cloud Console: Wählen Sie die Einschränkung aus, die Sie ändern möchten, und legen Sie die Erzwingung-Option in der Google Cloud Console auf Ein oder Aus fest.
Google Cloud CLI: Konfigurieren Sie die Erzwingung von Einschränkungen in der Google Cloud CLI.
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
- Nicht erzwungen:
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
- Nicht erzwungen:
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
- Nicht erzwungen:
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
- Erzwungen:
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-accountCloud 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/defaultServiceAccountErsetzen Sie die Platzhalterwerte durch Folgendes:
PROJECT_ID: die ID des Projekts.REGION: eine der unterstützten Regionen.