In diesem Dokument werden Dienstkonten beschrieben, die zum Ausführen von Cloud Deploy und zum Aufrufen von Cloud Deploy für verschiedene Vorgänge verwendet werden.
Cloud Deploy verwendet zwei Dienstkonten:
Den Dienst-Agent von Cloud Deploy
Cloud Deploy verwendet dieses Dienstkonto, um mit Ihrem Projekt zu interagieren. 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 Dienstkonto für die Cloud Deploy-Ausführung
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 Dienstkonto für die Cloud Deploy-Automatisierung
Dies ist das Dienstkonto, das Cloud Deploy für Automatisierungen verwendet. Dies kann das Standarddienstkonto für die Ausführung oder ein anderes Dienstkonto sein. Weitere Informationen zu diesem Dienstkonto finden Sie unter Dienstkonto für die Automatisierung.
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, das Cloud Deploy für die Interaktion mit anderen Google Cloud-Diensten verwendet, auf die Cloud Deploy angewiesen ist. 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 Cloud Deploy-Ausführung
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. Es empfiehlt sich, die Ausführungsumgebung so zu ändern, dass Cloud Deploy als ein 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, als die Cloud Deploy ausgeführt wird und die in der Zielkonfiguration konfiguriert sind.
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.
Für 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 als dem befindet, in dem Sie die Bereitstellungspipeline erstellen:
Für das Projekt, zu dem das Dienstkonto gehört, aktivieren Sie die projektübergreifende SA-Organisationsrichtlinie.
Gewähren Sie dem Cloud Deploy-Dienst-Agent
service-<project-number>@gcp-sa-clouddeploy.iam.gserviceaccount.com
die Berechtigungiam.serviceAccounts.actAs
für Ihr Dienstkonto.Sie können auch die Rolle
roles/iam.serviceAccountUser
zuweisen, die diese Berechtigung enthält.Weisen Sie dem Cloud Build-Dienst-Agent (
service-<project-number>@gcp-sa-cloudbuild.iam.gserviceaccount.com
) die Rolleroles/iam.serviceAccountTokenCreator
zu.Gewähren Sie dem Aufrufer von
gcloud deploy releases create
undgcloud deploy rollouts create
die Berechtigungiam.serviceAccounts.actAs
für das Dienstkonto oder die Rolle[roles/iam.serviceAccountUser](/iam/docs/understanding-roles#service-accounts-roles)
.
Erforderliche Berechtigungen
Das für das Rendering von Konfigurationen 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, Roll-outs).
Die Rolle
roles/clouddeploy.jobRunner
enthält alle Berechtigungen, die das Renderingdienstkonto (privatePool
oderdefaultPool
) 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 aufruft, um einen Release zu erstellen, muss die Rolle
clouddeploy.releaser
haben. Es muss außerdem die Berechtigungiam.serviceAccount.actAs
haben, um das Dienstkonto zu verwenden, das Manifeste rendert (z. B. über die Rolleroles/iam.serviceAccountUser
).Das Dienstkonto, das Cloud Deploy aufruft, um einen Release hochzustufen oder einen
rollout
zu erstellen, muss die Berechtigungiam.serviceAccount.actAs
haben, um das Dienstkonto zu verwenden, das für Ziele bereitgestellt wird (z. B. über die Rolleroles/iam.serviceAccountUser
).Das für eine Automatisierung konfigurierte Dienstkonto muss die Berechtigung zum Ausführen der zu automatisierenden Vorgänge haben. Weitere Informationen
Das Automatisierungsdienstkonto
Einige Aktionen in einem Release lassen sich automatisieren. Cloud Deploy führt diese Automatisierungen mit dem Automatisierungsdienstkonto aus. Dabei kann es sich um das Standarddienstkonto für die Ausführung, ein nicht standardmäßiges Dienstkonto, das als Ausführungsdienstkonto verwendet wird, oder um ein anderes Dienstkonto handeln.
Dieses Dienstkonto wird im Abschnitt Das Automatisierungsdienstkonto beschrieben.