Ein Cloud Run-Worker-Pool hat eine Dienstidentität, die verwendet wird als authentifiziertes Konto für den Zugriff auf Google Cloud APIs über Ihren Cloud Run-Instanzcontainer. Weitere Informationen zur Dienstidentität finden Sie im Leitfaden Einführung in die Dienstidentität.
Verwendung der Dienstidentität
In Cloud Run ist die Dienstidentität ein Dienstkonto, das sowohl eine Ressource als auch ein Hauptkonto ist.
- Dienstidentität als Ressource: Um ein Dienstkonto als Dienstidentität anzuhängen, muss das Bereitstellerkonto Zugriff auf die Dienstidentitätsressource haben. Für bestimmte Vorgänge wie das Erstellen oder Aktualisieren eines Worker-Pools muss das Konto des Bereitstellers Berechtigungen für die Ressource „Dienstidentität“ haben.
- Dienstidentität als Hauptkonto: Um von einem Cloud Run-Worker-Pool aus auf APIs zugreifen zu können, müssen Sie der Google Cloud Dienstidentität die erforderlichen Rollen oder Berechtigungen für die Vorgänge erteilen, die Ihr Worker-Pool ausführen soll.
Der nächste Abschnitt behandelt die erforderlichen Rollen, um dem Bereitstellerkonto Zugriff auf die Dienstidentitätsressource zu gewähren und die Rollen oder Berechtigungen zu gewähren, die das Hauptkonto des Dienstkontos benötigt.
Erforderliche Rollen
Sie oder Ihr Administrator müssen dem Bereitstellerkonto und der Dienstidentität IAM-Rollen und ‑Berechtigungen zuweisen.
Klicken, um die erforderlichen Rollen für das Bereitstellerkonto aufzurufen
Um die Berechtigungen zu erhalten, die Sie zum Anhängen eines Dienstkontos als
Dienstidentität für den Worker-Pool benötigen, müssen Sie oder Ihr Administrator
Ihrem Bereitstellerkonto die
Rolle Dienstkontonutzer (roles/iam.serviceAccountUser) für das Dienstkonto zuweisen,
das als Dienstidentität verwendet wird.
Diese vordefinierte Rolle enthält die iam.serviceAccounts.actAs
Berechtigung, die zum Anhängen eines Dienstkontos an den
Worker-Pool erforderlich ist. Sie können diese Berechtigung auch erhalten,
indem Sie benutzerdefinierte Rollen
konfigurieren oder andere vordefinierte Rollen verwenden.
Eine Anleitung zum Zuweisen dieser Rolle für das Bereitstellerkonto für die Dienstidentität finden Sie unter Bereitstellungsberechtigungen. Wenn sich das Dienstkonto in einem anderen Projekt als der Cloud Run-Worker-Pool befindet, müssen Sie oder Ihr Administrator außerdem eine IAM-Rolle für den Cloud Run-Dienst-Agenten konfigurieren und eine Organisationsrichtlinie einrichten. Weitere Informationen finden Sie unter Dienstkonten in anderen Projekten verwenden.
Klicken, um die erforderlichen Rollen für die Dienstidentität aufzurufen
Damit die Dienstidentität von Cloud Run aus auf Google Cloud APIs zugreifen kann, müssen Sie oder Ihr Administrator der Dienstidentität die Berechtigungen oder Rollen erteilen, die für die von Ihnen gewünschten Vorgänge erforderlich sind. Informationen zum Zugriff auf bestimmte Cloud-Clientbibliotheken finden Sie in der Google Cloud Dokumentation für den Google Cloud Dienst.
Wenn ein Cloud Run-Worker-Pool nicht auf andere Google Cloud Dienste zugreift, müssen Sie der Dienst identität keine Rollen oder Berechtigungen zuweisen und Sie können das Standard-Dienst konto verwenden, das dem Projekt zugewiesen wurde.
Empfehlungen zum Erstellen dedizierter Dienstkonten abrufen
Wenn Sie ein neues Dienstkonto über die Google Cloud Console erstellen, ist der optionale Schritt "Diesem Dienstkonto Zugriff auf das Projekt gewähren" für jeden zusätzlichen Zugriff erforderlich. Beispielsweise kann ein Cloud Run-Dienst einen anderenprivaten Cloud Run-Dienst aufrufen oder auf eine Cloud SQL-Datenbank zugreifen, die beide IAM-Rollen erfordern. Weitere Informationen finden Sie in der Dokumentation zum Verwalten des Zugriffs.
Der Recommender-Dienst gibt automatisch Empfehlungen zum Erstellen eines dedizierten Dienstkontos mit den minimal erforderlichen Berechtigungen.
Dienstidentität konfigurieren
Wenn Sie noch kein Dienstkonto erstellt haben, können Sie ein nutzerverwaltetes Dienstkonto in IAM oder in Cloud Run erstellen.
Zum Konfigurieren einer Dienstidentität verwenden Sie die Google Cloud Console, die gcloud CLI, YAML oder Terraform:
Console
Rufen Sie in der Google Cloud Console Cloud Run auf:
Wählen Sie im Menü Worker-Pools aus und klicken Sie auf Container bereitstellen, um einen neuen Worker-Pool zu konfigurieren. Wenn Sie einen vorhandenen Worker-Pool konfigurieren, klicken Sie auf den Worker-Pool und dann auf Neue Überarbeitung bearbeiten und bereitstellen.
Wenn Sie einen neuen Worker-Pool konfigurieren, füllen Sie die erste Seite des Worker-Pools aus und klicken Sie dann auf Container, Netzwerke, Sicherheit, um die Konfigurationsseite für Worker-Pools zu maximieren.
Klicken Sie auf den Sicherheit Tab.
- Klicken Sie entweder auf Neues Dienstkonto erstellen oder auf das Drop-down-Menü Dienstkonto und wählen Sie gegebenenfalls ein vorhandenes Dienstkonto aus.
Klicken Sie auf Erstellen oder Bereitstellen.
gcloud
Wenn Sie noch kein Dienstkonto erstellt haben, erstellen Sie ein nutzerverwaltetes Dienstkonto in IAM.
gcloud run worker-pools update WORKER_POOL --service-account SERVICE_ACCOUNT
Ersetzen Sie Folgendes:
- WORKER_POOL: der Name Ihres Dienstes.
- SERVICE_ACCOUNT: das Dienstkonto, das dem
Dienstkonto zugeordnet ist, das der neuen Identität zugeordnet ist. Dieser Wert ist die E-Mail
Adresse des Dienstkontos im Format
SERVICE_ACCOUNT_NAME@PROJECT_ID.iam.gserviceaccount.com, wobei SERVICE_ACCOUNT_NAME der Name des Dienst Kontos und PROJECT_ID Ihre Projekt-ID ist. Sie können auch während der Bereitstellung ein Dienstkonto mit dem folgenden Befehl festlegen:
gcloud run worker-pools deploy WORKER_POOL --image IMAGE_URL --service-account SERVICE_ACCOUNT
Ersetzen Sie Folgendes:
- WORKER_POOL: der Name des Worker-Pools.
- IMAGE_URL: ein Verweis auf das Container-Image, das
den Worker-Pool enthält, z. B.
us-docker.pkg.dev/cloudrun/container/worker-pool:latest. - SERVICE_ACCOUNT: das Dienstkonto, das der
neuen Identität zugeordnet ist. Dieser Wert ist die E-Mail-Adresse des Dienstkontos im
Format
SERVICE_ACCOUNT_NAME@PROJECT_ID.iam.gserviceaccount.com.
YAML
Wenn Sie einen neuen Worker-Pool erstellen, überspringen Sie diesen Schritt. Wenn Sie einen vorhandenen Worker-Pool aktualisieren, laden Sie die zugehörige YAML-Konfiguration herunter:
gcloud run worker-pools describe WORKER_POOL --format export > workerpool.yaml
Das folgende Beispiel enthält die YAML-Konfiguration:
apiVersion: run.googleapis.com/v1 kind: WorkerPool metadata: name: WORKER_POOL spec: template: spec: serviceAccountName: SERVICE_ACCOUNT
Ersetzen Sie Folgendes:
- WORKER_POOL: der Name Ihres Cloud Run-Worker-Pools.
- SERVICE_ACCOUNT: das Dienstkonto, das
der neuen Identität zugeordnet ist. Dieser Wert ist die E-Mail-Adresse des Dienst
kontos, z. B.
SERVICE_ACCOUNT_NAME@PROJECT_ID.iam.gserviceaccount.com.
Erstellen oder aktualisieren Sie den Worker-Pool mit dem folgenden Befehl:
gcloud run worker-pools replace workerpool.yaml
Terraform
Informationen zum Anwenden oder Entfernen einer Terraform-Konfiguration finden Sie unter Grundlegende Terraform-Befehle.
resource "google_cloud_run_v2_worker_pool" "default" {
name = "WORKER_POOL"
location = "REGION"
template {
containers {
image = "IMAGE_URL"
}
}
service_account = "SERVICE_ACCOUNT"
}
Ersetzen Sie Folgendes:
- WORKER_POOL: der Name des Worker-Pools.
- REGION: die Google Cloud Region, z. B.
europe-west1. - IMAGE_URL: ein Verweis auf das Container-Image, das
den Worker-Pool enthält, z. B.
us-docker.pkg.dev/cloudrun/container/worker-pool:latest. - SERVICE_ACCOUNT: das Dienstkonto, das dem
Dienstkonto zugeordnet ist, das der neuen Identität zugeordnet ist. Dieser Wert ist die E-Mail
Adresse des Dienstkontos im Format
SERVICE_ACCOUNT_NAME@PROJECT_ID.iam.gserviceaccount.com, wobei SERVICE_ACCOUNT_NAME der Name des Dienst Kontos und PROJECT_ID Ihre Projekt-ID ist.
Dienstkonten in anderen Projekten verwenden
Wenn Sie ein Dienstkonto aus einem anderen Google Cloud Projekt als der Cloud Run-Ressource konfigurieren, gehen Sie so vor:
Sie oder Ihr Administrator müssen der Rolle „Dienstkontonutzer“ (
roles/iam.serviceAccountUser) für das Dienstkonto, das Sie als Dienstidentität verwenden, die Berechtigung zuweisen.Console
Rufen Sie in der Google Cloud Console die Seite Dienstkonten auf:
Wählen Sie die E-Mail-Adresse des Dienstkontos aus, die Sie als Dienstidentität verwenden.
Klicken Sie auf den Tab Hauptkonten mit Zugriff.
Klicken Sie auf die Schaltfläche Zugriff gewähren.
Geben Sie die E-Mail-Adresse des Bereitstellerkontos ein, die dem Hauptkonto entspricht, dem Sie die Administrator- oder Entwicklerrolle zuweisen.
Wählen Sie im Drop-down-Menü Rolle auswählen die Rolle Dienstkonten > Dienstkontonutzer aus.
Klicken Sie auf Speichern.
gcloud
Verwenden Sie den Befehl
gcloud iam service-accounts add-iam-policy-bindingund ersetzen Sie die markierten Variablen durch die entsprechenden Werte:gcloud iam service-accounts add-iam-policy-binding \ SERVICE_ACCOUNT_NAME@SERVICE_ACCOUNT_PROJECT_ID.iam.gserviceaccount.com \ --member="PRINCIPAL" \ --role="roles/iam.serviceAccountUser"
Ersetzen Sie Folgendes:
SERVICE_ACCOUNT_NAME: der Name des Dienstkontos, an das Sie die Cloud Run-Ressource anhängenSERVICE_ACCOUNT_PROJECT_ID: die Projekt-ID, in der sich das Dienstkonto befindetPRINCIPAL: das Bereitstellerkonto, für das Sie die Bindung hinzufügen, im Format
user|group|serviceAccount:emailoderdomain:domain, z. B.:user:test-user@gmail.comgroup:admins@example.comserviceAccount:test123@example.domain.comdomain:example.domain.com
Sie oder Ihr Administrator müssen dem Dienst-Agent der Cloud Run-Ressource die Rolle „Ersteller von Dienstkonto-Tokens“ (
roles/iam.serviceAccountTokenCreator) für das Dienstkonto zuweisen, das Sie als Dienstidentität verwenden. Der Dienst-Agent hat das Formatservice-PROJECT_NUMBER@serverless-robot-prod.iam.gserviceaccount.com.Console
Rufen Sie in der Google Cloud Console die Seite Dienstkonten auf:
Wählen Sie die E-Mail-Adresse des Dienstkontos aus, die Sie als Dienstidentität verwenden.
Klicken Sie auf den Tab Berechtigungen.
Klicken Sie auf den Button Zugriff gewähren.
Geben Sie die E-Mail-Adresse des Dienst-Agents ein. Beispiel:
service-PROJECT_NUMBER@serverless-robot-prod.iam.gserviceaccount.com.Wählen Sie im Drop-down-Menü Rolle auswählen die Rolle Dienstkonten > Ersteller von Dienstkonto-Tokens aus.
Klicken Sie auf Speichern.
gcloud
Führen Sie den Befehl
gcloud iam service-accounts add-iam-policy-bindingaus:gcloud iam service-accounts add-iam-policy-binding \ SERVICE_ACCOUNT_NAME@SERVICE_ACCOUNT_PROJECT_ID.iam.gserviceaccount.com \ --member="serviceAccount:service-CLOUD_RUN_RESOURCE_PROJECT_NUMBER@serverless-robot-prod.iam.gserviceaccount.com" \ --role="roles/iam.serviceAccountTokenCreator"
Ersetzen Sie Folgendes:
SERVICE_ACCOUNT_NAME: der Name des Dienstkontos, an das Sie die Cloud Run-Ressource anhängenSERVICE_ACCOUNT_PROJECT_ID: die Projekt-ID, in der sich das Dienstkonto befindetCLOUD_RUN_RESOURCE_PROJECT_NUMBER: die Projektnummer, in der sich Cloud Run befindet
Der Befehl gibt die aktualisierte „allow”-Richtlinie für das vom Nutzer verwaltete Dienstkonto aus.
Für das Projekt, das dieses Dienstkonto enthält, muss die Organisationsrichtlinie
iam.disableCrossProjectServiceAccountUsageauf Ordnerebene auf "falsch/nicht erzwungen" festgelegt oder dies aus Einstellungen auf Projektebene übernommen werden. Standardmäßig ist dies auftrueeingestellt.Console
Rufen Sie in der Google Cloud Console die Seite Organisationsrichtlinien auf:
Wählen Sie in der Projektauswahl die Organisation und das Projekt aus, für das Sie die projektübergreifende Dienstkontonutzung deaktivieren möchten.
Wählen Sie die Richtlinie Projektübergreifende Dienstkontonutzung deaktivieren aus.
Klicken Sie auf Richtlinie verwalten.
Wählen Sie unter Richtlinienquelle die Option Richtlinie der übergeordneten Ressource überschreiben aus.
Klicken Sie auf Regel hinzufügen.
Wählen Sie unter Erzwingung die Option Aus aus.
Klicken Sie auf Richtlinie festlegen, um die Richtlinie zu erzwingen.
gcloud
Achten Sie darauf, dass die Einschränkung der Organisationsrichtlinie
iam.disableCrossProjectServiceAccountUsageim Projekt mit dem Dienstkonto nicht erzwungen wird. Diese Einschränkung wird standardmäßig erzwungen.Führen Sie folgenden Befehl aus, um diese Einschränkung für die Organisationsrichtlinie zu deaktivieren:
gcloud resource-manager org-policies disable-enforce iam.disableCrossProjectServiceAccountUsage --project=SERVICE_ACCOUNT_PROJECT_ID
Ersetzen Sie SERVICE_ACCOUNT_PROJECT_ID durch die Projekt-ID, die das Dienstkonto enthält.
Sie können Rollenmitgliedschaften direkt auf die Dienstkontoressource anwenden oder von höheren Ebenen in der Ressourcenhierarchieübernehmen.
Dienstkontokonfiguration für den Worker-Pool aufrufen
Rufen Sie in der Google Cloud Console Cloud Run auf:
Klicken Sie auf Worker-Pools , um die Liste der bereitgestellten Worker-Pools aufzurufen.
Klicken Sie auf den Worker-Pool, den Sie untersuchen möchten, um den Detailbereich aufzurufen.
Klicken Sie auf den Tab Sicherheit , um die Sicherheitsinformationen des Worker-Pools aufzurufen, einschließlich der Dienstkonten.
Nächste Schritte
- Weitere Informationen zu Dienstkonten finden Sie in den Leitfäden zu IAM-Dienstkonten und vom Nutzer verwalteten Dienstkonten.
- Wenn Ihr Cloud Run-Dienst, ‑Job oder ‑Worker-Pool auf Google APIs oder Google Cloud Dienste zugreift, müssen Sie Ihr Dienstkonto als die Dienstidentität konfigurieren. Weitere Informationen.