Cloud Deploy-Dienstkonten

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

Cloud Deploy verwendet die folgenden Dienstkonten:

  • Der Cloud Deploy Dienst-Agent

    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 Cloud Deploy-Dienstkonto

    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.

  • Das Cloud Deploy-Automatisierungsdienstkonto

    Dies ist das Dienstkonto, das Cloud Deploy zum Ausführen von Automatisierungen verwendet. Dabei kann es sich um das Standardausführungsdienstkonto oder ein anderes Dienstkonto handeln. Weitere Informationen zu diesem Dienstkonto finden Sie unter Das Automatisierungsdienstkonto.

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

Cloud Deploy-Dienst-Agent

Der Cloud Deploy-Dienst-Agent ist ein Dienstkonto, mit dem Cloud Deploy mit anderen Google Cloud Diensten interagiert, auf denen 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

Wenn dieses Konto aus Ihrem Projekt entfernt wird, können Sie es wieder hinzufügen:

  1. Öffnen Sie in der Google Cloud Console die Seite IAM.

    Seite "IAM" öffnen

  2. Wählen Sie Von Google bereitgestellte Rollenzuweisungen einschließen aus, um den Dienst-Agent anzuzeigen.

    Wenn der Dienst-Agent angezeigt wird, können Sie die restlichen Schritte überspringen.

  3. Wenn der Dienst-Agent nicht angezeigt wird, klicken Sie auf Zugriff erlauben.

  4. Geben Sie im Feld Neue Hauptkonten die Adresse des Dienst-Agents im folgenden Format ein:

    1. service-<project-number>@gcp-sa-clouddeploy.iam.gserviceaccount.com
  5. Klicken Sie auf die Drop-down-Liste Rolle auswählen und wählen Sie Cloud Deploy-Dienst-Agent aus.

  6. Klicken Sie auf Speichern.

Cloud Deploy-Dienstkonto

Cloud Deploy wird standardmäßig mit dem Compute Engine-Standard dienstkonto ausgeführt.

Der Name dieses Dienstkontos folgt diesem Muster:

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

Da dieses Dienstkonto von vielen Produkten verwendet wird, hat es möglicherweise umfassende Berechtigungen. Als Best Practice wird empfohlen, die Ausführungsumgebung so zu ändern, dass Cloud Deploy als anderes Dienstkonto ausgeführt wird. Sie können das Ausführungsdienstkonto für jedes Ziel ändern, indem Sie die executionConfigs.privatePool.serviceAccount Eigenschaft oder die executionConfigs.defaultPool.serviceAccount Eigenschaft in der Zieldefinition verwenden.

Jedes Dienstkonto, das Sie für diese Attribute festlegen, muss die Rolle „Cloud Deploy-Runner“ im Cloud Deploy-Projekt haben. Wenn das Standardausführungsdienstkonto diese Rolle 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"

Das Dienstkonto benötigt außerdem laufzeitspezifische Berechtigungen, um in der ausgewählten Laufzeitumgebung bereitzustellen. Für Google Kubernetes Engine können Sie die Rollen „Container Developer“ und „Service Account User“ auswählen. Für Cloud Run können Sie die Rollen „Cloud Run-Entwickler“ und „Dienstkontonutzer“ auswählen. Andere Laufzeitumgebungen, die von benutzerdefinierten Zielen verwendet werden, erfordern möglicherweise eigene Berechtigungen.

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 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 in Google Kubernetes Engine können Sie das Dienstkonto auf einen Namespace beschränken.

Dienstkonten aus einem anderen Projekt verwenden

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

  1. Aktivieren Sie im Projekt, in dem sich das Dienstkonto befindet, die Organisationsrichtlinie für projektübergreifende Dienstkonten.

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

    In diesem Fall ist project-number das Projekt, in dem Sie Ihr Ziel erstellt haben.

    Sie können auch die roles/iam.serviceAccountUser Rolle gewähren, die diese Berechtigung enthält, im Projekt und für jedes Dienst konto, das sich in einem anderen Projekt befindet als das, in dem Cloud Deploy ausgeführt wird.

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

    In diesem Fall ist project-number das Projekt, in dem Sie Ihr Ziel erstellt haben, und diese Rolle wird im Projekt des Dienstkontos gewährt.

    Sie müssen diese Rolle für jedes Dienstkonto gewähren, das in der Ausführungsumgebung eines Ziels konfiguriert ist, wenn sich dieses Dienstkonto in einem anderen Projekt befindet als das, in dem Cloud Deploy ausgeführt wird.

  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, oder die Rolle roles/iam.serviceAccountUser.

Erforderliche Berechtigungen

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

    Die Rolle roles/clouddeploy.jobRunner enthält alle Berechtigungen, die das Rendering dienstkonto (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 Cloud Deploy zum Erstellen eines Release aufruft, muss die Rolle clouddeploy.releaser haben. Es muss außerdem die iam.serviceAccount.actAs Berechtigung haben, um das Dienstkonto zu verwenden, das Manifeste rendert (z. B. über die roles/iam.serviceAccountUser Rolle).

  • Das Dienstkonto, das Cloud Deploy aufruft, um einen Release hochzustufen oder einen rollout zu erstellen, muss die iam.serviceAccount.actAs Berechtigung haben, um das Dienstkonto zu verwenden, das in Ziele bereitgestellt wird (z. B. über die roles/iam.serviceAccountUser Rolle).

  • Das für eine Automatisierung konfigurierte Dienstkonto muss die Berechtigung haben, die automatisierten Vorgänge auszuführen. Weitere Informationen.

Das Automatisierungsdienstkonto

Sie können einige Aktionen in einem Release automatisieren. Cloud Deploy führt diese Automatisierungen mit dem Automatisierungsdienstkonto aus. Dabei kann es sich um das Standardausführungsdienstkonto, ein nicht standardmäßiges Dienstkonto, das als Ausführungsdienstkonto verwendet wird, oder ein anderes Dienstkonto handeln.

Weitere Informationen zu Automatisierungsdienstkonten.

Nächste Schritte