Google Cloud Deploy-Dienstkonten

Mit Sammlungen den Überblick behalten Sie können Inhalte basierend auf Ihren Einstellungen speichern und kategorisieren.

In diesem Dokument werden Dienstkonten beschrieben, die zum Ausführen von Google Cloud Deploy und zum Aufrufen von Google Cloud Deploy zum Ausführen verschiedener Vorgänge verwendet werden.

Google Cloud Deploy verwendet zwei Dienstkonten:

  • Der Google Cloud Deploy-Dienst-Agent

    Google Cloud Deploy verwendet dieses Dienstkonto für die Interaktion mit Ihrem Projekt. Sie können diesen Dienst-Agent nicht durch ein alternatives Dienstkonto ersetzen, aber Sie können Berechtigungen dafür bearbeiten, z. B. wenn Sie Ressourcen außerhalb des Projekts verwenden (z. B. ein Dienstkonto oder einen privaten Cloud Build-Worker-Pool).

  • Das Google Cloud Deploy-Dienstkonto

    Google Cloud Deploy verwendet dieses Dienstkonto, um Rendering- und Bereitstellungsvorgänge in Cloud Build auszuführen. Dieses Konto benötigt Berechtigungen, um aus dem Cloud Storage-Bucket zu lesen und in diesen zu schreiben und auf Bereitstellungsziele zuzugreifen.

    Das Standarddienstkonto für die Ausführung ist das Compute Engine-Standarddienstkonto. In der Zielkonfiguration können Sie ein alternatives Dienstkonto angeben.

Eine Anleitung zum Bearbeiten von Dienstkontoberechtigungen und zum Erstellen eines alternativen Dienstkontos finden Sie unter Dienstkonten erstellen und verwalten.

Google Cloud Deploy-Dienst-Agent

Der Google Cloud Deploy-Dienst-Agent ist ein Dienstkonto, mit dem Google Cloud Deploy mit anderen Google Cloud-Diensten interagiert, auf denen Google Cloud Deploy basiert. Zu diesen Diensten gehören Cloud Build-, Pub/Sub- und Cloud-Audit-Logs.

Der Name dieses Dienstkontos folgt diesem Muster:

service-<project-number>@gcp-sa-clouddeploy.iam.gserviceaccount.com

Sie können den Dienst-Agent nicht durch ein alternatives Dienstkonto ersetzen. Möglicherweise müssen Sie jedoch Berechtigungen hinzufügen, um beispielsweise Zugriff auf einen privaten Pool in einem anderen Projekt zu gewähren, das als Teil einer Ausführungsumgebung konfiguriert ist.

Dienstkonto für die Google Cloud-Bereitstellung

Google Cloud Deploy wird standardmäßig mit dem Compute Engine-Standarddienstkonto ausgeführt. Das Dienstkonto verfügt über ausreichende Berechtigungen in dem Projekt, das es zum Rendern von Manifesten und zum Bereitstellen auf Ihren Zielen enthält.

Der Name dieses Dienstkontos folgt diesem Muster:

[project-number]-compute@developer.gserviceaccount.com

Dieses Standarddienstkonto hat umfassende Berechtigungen. Als Best Practice wird empfohlen, die Ausführungsumgebung so zu ändern, dass Google Cloud Deploy als anderes Dienstkonto ausgeführt wird. Sie können das Ausführungsdienstkonto für jedes Ziel ändern, indem Sie die Attribute executionConfigs.privatePool.serviceAccount oder executionConfigs.defaultPool.serviceAccount in der Zieldefinition verwenden.

Jedes Dienstkonto, das Sie für diese Attribute festlegen, muss die Rolle roles/clouddeploy.jobRunner im Cloud Deploy-Projekt haben. Wenn das Standardausführungsdienstkonto diese Berechtigung nicht hat, führen Sie den folgenden Befehl aus:

 gcloud projects add-iam-policy-binding PROJECT_ID \
     --member=serviceAccount:$(gcloud projects describe PROJECT_ID \
     --format="value(projectNumber)")-compute@developer.gserviceaccount.com \
     --role="roles/clouddeploy.jobRunner"

Welche Dienstkonten erstellt werden sollen

Wenn Sie nicht das Standardausführungsdienstkonto für das Rendering und die Bereitstellung verwenden, müssen Sie ein oder mehrere alternative Dienstkonten erstellen. Dies sind Dienstkonten, mit denen Google Cloud Deploy ausgeführt wird und sie sind in der Zielkonfiguration konfiguriert.

Ein Grund zum Erstellen mehrerer Instanzen wäre, dass Sie ein bestimmtes Dienstkonto oder Konten für die Bereitstellung in eingeschränkten Zielen wie einem Produktionsziel haben.

Ein möglicher Ansatz ist die Verwendung separater Dienstkonten pro Bereitstellungspipeline. Jedes dieser Dienstkonten würde Rollen mit ausreichenden Berechtigungen zum Rendern und Bereitstellen umfassen.

Bei Bereitstellungen für Google Kubernetes Engine können Sie das Dienstkonto auf einen Namespace beschränken.

Dienstkonten aus einem anderen Projekt verwenden

Für die Ausführungsumgebung können Sie ein Dienstkonto angeben, das sich in einem anderen Projekt als dem befindet, in dem Sie die Bereitstellungspipeline erstellen:

  1. Für das Projekt, zu dem das Dienstkonto gehört, aktivieren Sie die projektübergreifende SA-Organisationsrichtlinie.

  2. Gewähren Sie dem Google Cloud Deploy-Dienst-Agent (service-<project-number>@gcp-sa-clouddeploy.iam.gserviceaccount.com) die Berechtigung iam.serviceAccounts.actAs für Ihr Dienstkonto.

    Sie können auch die Rolle roles/iam.serviceAccountUser zuweisen, die diese Berechtigung enthält.

  3. Weisen Sie dem Cloud Build-Dienst-Agent (service-<project-number>@gcp-sa-cloudbuild.iam.gserviceaccount.com) die Rolle roles/iam.serviceAccountTokenCreator zu.

  4. Gewähren Sie dem Aufrufer von gcloud deploy releases create und gcloud deploy rollouts create die Berechtigung iam.serviceAccounts.actAs für das Dienstkonto.

Erforderliche Berechtigungen

  • Das für Renderingkonfigurationen verwendete Dienstkonto muss ausreichende Berechtigungen für den Zugriff auf den Cloud Storage-Bucket haben, in dem Ihre Google Cloud Deploy-Ressourcen gespeichert sind (Zustellungspipelines, Releases, Rollouts).

    Die Rolle roles/clouddeploy.jobRunner enthält alle Berechtigungen, die das Renderingdienstkonto (privatePool oder defaultPool) benötigt.

  • Das für die Bereitstellung verwendete Dienstkonto muss ausreichende Berechtigungen für die Bereitstellung im Zielcluster und die Berechtigung für den Zugriff auf den Cloud Storage-Bucket haben.

  • Das Dienstkonto, das Google Cloud Deploy zum Erstellen eines Release aufruft, muss die Rolle clouddeploy.releaser haben. Außerdem benötigt er die Berechtigung iam.serviceAccount.actAs, um das Dienstkonto zu verwenden, das Manifeste rendert (z. B. über die Rolle roles/iam.serviceAccountUser).

  • Das Dienstkonto, das Google Cloud Deploy aufruft, um einen Release hochzustufen oder einen rollout zu erstellen, muss die Berechtigung iam.serviceAccount.actAs haben, um das Dienstkonto zu verwenden, das in Ziele bereitgestellt wird.

Nächste Schritte