Auf dieser Seite wird beschrieben, wie Sie Ihre Arbeitslasten so konfigurieren, dass sie mit Workload Identity-Föderation und entweder direktem Ressourcenzugriff oder Identitätsübernahme des Dienstkontos auf Google Cloud-Ressourcen zugreifen können.
Anwendungsfallspezifische End-to-End-Anleitungen finden Sie in den Konfigurationsanleitungen für AWS und Azure, Active Directory, GitHub, GitLab und andere Deployment-Pipelines und Kubernetes.
Externer Arbeitslast den Zugriff auf Google Cloud -Ressourcen erlauben
Damit Ihre Arbeitslast auf Google Cloud -Ressourcen zugreifen kann, empfehlen wir, dem Hauptkonto direkten Ressourcenzugriff zu gewähren. In diesem Fall ist das Hauptkonto der föderierte Nutzer. Für einige Google Cloud Produkte gelten Einschränkungen für Google Cloud APIs. Wenn Ihre Arbeitslast einen API-Endpunkt aufruft, der eingeschränkt ist, können Sie stattdessen die Identitätsübernahme des Dienstkontos verwenden. In diesem Fall ist das Hauptkonto dasGoogle Cloud -Dienstkonto, das als Identität fungiert. Sie gewähren dem Dienstkonto Zugriff auf die Ressource.
Direkter Ressourcenzugriff
Sie können einer föderierten Identität direkt Zugriff auf Ressourcen gewähren, indem Sie die Google Cloud Console oder die gcloud CLI verwenden.
Konsole
Wenn Sie in der Google Cloud Console IAM-Rollen direkt für eine Ressource zuweisen möchten, müssen Sie die Seite der Ressource aufrufen und dann die Rolle zuweisen. Im folgenden Beispiel wird gezeigt, wie Sie zur Cloud Storage-Seite wechseln und einer föderierten Identität direkt für einen Cloud Storage-Bucket die Rolle „Storage-Objekt-Betrachter“ (roles/storage.objectViewer) zuweisen.
- Wechseln Sie in der Google Cloud Console unter „Cloud Storage“ zur Seite Buckets.
Klicken Sie in der Liste der Buckets auf den Namen des Buckets, für den Sie die Rolle zuweisen möchten.
Wählen Sie oben auf der Seite den Tab Berechtigungen aus.
Klicken Sie auf die Schaltfläche add_boxZugriff gewähren.
Das Dialogfeld Hauptkonten hinzufügen wird angezeigt.
Geben Sie in das Feld Neue Hauptkonten eine oder mehrere Identitäten ein, die Zugriff auf den Bucket erhalten sollen.
Nach Subjekt
principal://iam.googleapis.com/projects/PROJECT_NUMBER/locations/global/workloadIdentityPools/POOL_ID/subject/SUBJECTErsetzen Sie Folgendes:
PROJECT_NUMBER: die ProjektnummerPOOL_ID: die ID des ArbeitslastpoolsSUBJECT: das einzelne Thema, das Ihrem IdP zugeordnet ist, z. B.administrator@example.com
Nach Gruppe
principalSet://iam.googleapis.com/projects/PROJECT_NUMBER/locations/global/workloadIdentityPools/POOL_ID/group/GROUPErsetzen Sie Folgendes:
PROJECT_NUMBER: die ProjektnummerWORKLOAD_POOL_ID: die ID des ArbeitslastpoolsGROUP: die Gruppe, die Ihrem IdP zugeordnet ist, z. B.administrator-group@example.com
Nach Attribut
principalSet://iam.googleapis.com/projects/PROJECT_NUMBER/locations/global/workloadIdentityPools/POOL_ID/attribute.ATTRIBUTE_NAME/ATTRIBUTE_VALUEErsetzen Sie Folgendes:
PROJECT_NUMBER: die ProjektnummerWORKLOAD_POOL_ID: die ID des ArbeitslastpoolsATTRIBUTE_NAME: eines der Attribute, die von Ihrem IdP zugeordnet wurden.ATTRIBUTE_VALUE: der Wert des Attributs
Wählen Sie aus dem Drop-down-Menü Rolle auswählen eine oder mehrere Rollen aus. Die ausgewählten Rollen werden in der Ansicht mit einer kurzen Beschreibung ihrer jeweiligen Berechtigungen angezeigt.
Klicken Sie auf Speichern.
gcloud
So weisen Sie mit der gcloud CLI IAM-Rollen für eine Ressource in einem Projekt zu:
Rufen Sie die Projektnummer des Projekts ab, in dem die Ressource definiert ist.
gcloud projects describe $(gcloud config get-value core/project) --format=value\(projectNumber\)
Gewähren Sie den Zugriff auf die Ressource.
Führen Sie den folgenden Befehl aus, um mit der gcloud CLI externen Identitäten, die bestimmte Kriterien erfüllen, die Rolle „Storage-Objekt-Betrachter“ (
roles/storage.objectViewer) zuzuweisen.Nach Thema
gcloud storage buckets add-iam-policy-binding BUCKET_ID \ --role=roles/storage.objectViewer \ --member="principal://iam.googleapis.com/projects/PROJECT_NUMBER/locations/global/workloadIdentityPools/POOL_ID/subject/SUBJECT"Nach Gruppe
gcloud storage buckets add-iam-policy-binding BUCKET_ID \ --role=roles/storage.objectViewer \ --member="principalSet://iam.googleapis.com/projects/PROJECT_NUMBER/locations/global/workloadIdentityPools/POOL_ID/group/GROUP"Nach Attribut
gcloud storage buckets add-iam-policy-binding BUCKET_ID \ --role=roles/storage.objectViewer \ --member="principalSet://iam.googleapis.com/projects/PROJECT_NUMBER/locations/global/workloadIdentityPools/POOL_ID/attribute.ATTRIBUTE_NAME/ATTRIBUTE_VALUE"Ersetzen Sie Folgendes:
BUCKET_ID: der Bucket, für den Zugriff gewährt werden sollPROJECT_NUMBER: die Projektnummer des Projekts, das den Workload Identity-Pool enthältPOOL_ID: die Pool-ID des Workload Identity-PoolsSUBJECT: der erwartete Wert für das Attribut, das Siegoogle.subjectzugeordnet habenGROUP: der erwartete Wert für das Attribut, das Siegoogle.groupszugeordnet habenATTRIBUTE_NAME: der Name eines benutzerdefinierten Attributs in Ihrer AttributzuordnungATTRIBUTE_VALUE: Wert des benutzerdefinierten Attributs in Ihrer Attributzuordnung
Sie können jeder Google Cloud Ressource, die IAM-Zulassungsrichtlinien unterstützt, Rollen zuweisen.
Identitätsübertragung für ein Dienstkonto
So erstellen Sie ein Dienstkonto für die externe Arbeitslast:
Enable the IAM, Security Token Service, and Service Account Credentials APIs.
Roles required to enable APIs
To enable APIs, you need the Service Usage Admin IAM role (
roles/serviceusage.serviceUsageAdmin), which contains theserviceusage.services.enablepermission. Learn how to grant roles.Erstellen Sie ein Dienstkonto, das die Arbeitslast darstellt. Wir empfehlen, für jede Arbeitslast ein dediziertes Dienstkonto zu verwenden. Das Dienstkonto muss sich nicht im selben Projekt wie der Workload Identity-Pool befinden. Sie müssen sich aber auf das Projekt beziehen, das das Dienstkonto enthält.
Gewähren Sie dem Dienstkonto Zugriff auf Ressourcen, auf die externe Identitäten zugreifen können sollen.
Damit die föderierte Identität die Identität des Dienstkontos übernehmen kann, gehen Sie so vor:
Konsole
So weisen Sie der Google Cloud Konsole IAM-Rollen zu, um einer föderierten Identität mit einem Dienstkonto IAM-Rollen zuzuweisen:
Dienstkonto im selben Projekt
So gewähren Sie einem Dienstkonto im selben Projekt Zugriff über die Identitätsübernahme des Dienstkontos:
Rufen Sie die Seite Workload Identity-Pools auf.
Wählen Sie Zugriff erlauben aus.
Wählen Sie im Dialogfeld Zugriff auf Dienstkonto gewähren die Option Zugriff mit Identitätsübernahme des Dienstkontos gewähren aus.
Wählen Sie in der Liste Dienstkonten das Dienstkonto aus, das von den externen Identitäten übernommen werden soll. Gehen Sie dann so vor:
Führen Sie eine der folgenden Aktionen aus, um auszuwählen, welche Identitäten im Pool die Identität des Dienstkontos übernehmen können:
Damit nur bestimmte Identitäten des Workload Identity-Pools die Identität des Dienstkontos übernehmen können, wählen Sie Nur Identitäten, die dem Filter entsprechen aus.
Wählen Sie in der Liste Attributname das Attribut aus, nach dem Sie filtern möchten.
Geben Sie im Feld Attributwert den erwarteten Wert des Attributs ein. Wenn Sie beispielsweise eine
google.subject=assertion.sub-Attributzuordnung verwenden, legen Sie den Attributnamen aufsubjectund den Attributwert auf den Wert dersub-Anforderung in Tokens fest, die von Ihrem externen Identitätsanbieter ausgestellt werden.
Klicken Sie zum Speichern der Konfiguration auf Speichern und dann auf Schließen.
Dienstkonto in einem anderen Projekt
So gewähren Sie einem Dienstkonto in einem anderen Projekt Zugriff über die Identitätsübernahme des Dienstkontos:
Rufen Sie die Seite Dienstkonten auf.
Wählen Sie das Dienstkonto aus, dessen Identität Sie übernehmen möchten.
Klicken Sie auf Zugriff verwalten.
Klicken Sie auf Hauptkonto hinzufügen.
Geben Sie im Feld Neues Hauptkonto eine der folgenden Hauptkonto-IDs für die Identitäten in Ihrem Pool ein, die die Identität des Dienstkontos übernehmen.
Nach Thema
principal://iam.googleapis.com/projects/PROJECT_NUMBER/locations/global/workloadIdentityPools/POOL_ID/subject/SUBJECTErsetzen Sie Folgendes:
PROJECT_NUMBER: die ProjektnummerPOOL_ID: die ID des ArbeitslastpoolsSUBJECT: das einzelne Thema, das Ihrem IdP zugeordnet ist, z. B.administrator@example.com
Nach Gruppe
principalSet://iam.googleapis.com/projects/PROJECT_NUMBER/locations/global/workloadIdentityPools/POOL_ID/group/GROUPErsetzen Sie Folgendes:
PROJECT_NUMBER: die ProjektnummerWORKLOAD_POOL_ID: die ID des ArbeitslastpoolsGROUP: die Gruppe, die Ihrem IdP zugeordnet ist, z. B.administrator-group@example.com
Nach Attribut
principalSet://iam.googleapis.com/projects/PROJECT_NUMBER/locations/global/workloadIdentityPools/POOL_ID/attribute.ATTRIBUTE_NAME/ATTRIBUTE_VALUEErsetzen Sie Folgendes:
PROJECT_NUMBER: die ProjektnummerWORKLOAD_POOL_ID: die ID des ArbeitslastpoolsATTRIBUTE_NAME: eines der Attribute, die von Ihrem IdP zugeordnet wurden.ATTRIBUTE_VALUE: der Wert des Attributs
Nach Pool
principalSet://iam.googleapis.com/projects/PROJECT_NUMBER/locations/global/workloadIdentityPools/POOL_ID/*Ersetzen Sie Folgendes:
PROJECT_NUMBER: die ProjektnummerWORKLOAD_POOL_ID: die ID des Arbeitslastpools
Wählen Sie unter Rolle auswählen die Rolle „Workload Identity-Nutzer“ (
roles/iam.workloadIdentityUser) aus.Klicken Sie auf Speichern, um die Konfiguration zu speichern.
gcloud
Führen Sie den folgenden Befehl aus, um einem föderierten Prinzipal oder einer Gruppe von Prinzipalen die Rolle „Workload Identity-Nutzer“ (roles/iam.workloadIdentityUser) zuzuweisen. Weitere Informationen zu Hauptkonto-IDs für die Workload Identity-Föderation finden Sie unter Hauptkontotypen.
Nach Thema
gcloud iam service-accounts add-iam-policy-binding SERVICE_ACCOUNT_EMAIL \
--role=roles/iam.workloadIdentityUser \
--member="principal://iam.googleapis.com/projects/PROJECT_NUMBER/locations/global/workloadIdentityPools/POOL_ID/subject/SUBJECT"Nach Gruppe
gcloud iam service-accounts add-iam-policy-binding SERVICE_ACCOUNT_EMAIL \
--role=roles/iam.workloadIdentityUser \
--member="principalSet://iam.googleapis.com/projects/PROJECT_NUMBER/locations/global/workloadIdentityPools/POOL_ID/group/GROUP"Nach Attribut
gcloud iam service-accounts add-iam-policy-binding SERVICE_ACCOUNT_EMAIL \
--role=roles/iam.workloadIdentityUser \
--member="principalSet://iam.googleapis.com/projects/PROJECT_NUMBER/locations/global/workloadIdentityPools/POOL_ID/attribute.ATTRIBUTE_NAME/ATTRIBUTE_VALUE"Ersetzen Sie Folgendes:
SERVICE_ACCOUNT_EMAIL: die E-Mail-Adresse des Dienstkontos.PROJECT_NUMBER: die Projektnummer des Projekts, das den Workload Identity-Pool enthältPOOL_ID: die Pool-ID des Workload Identity-PoolsSUBJECT: der erwartete Wert für das Attribut, das Siegoogle.subjectzugeordnet habenGROUP: der erwartete Wert für das Attribut, das Siegoogle.groupszugeordnet habenATTRIBUTE_NAME: der Name eines benutzerdefinierten Attributs in Ihrer AttributzuordnungATTRIBUTE_VALUE: Wert des benutzerdefinierten Attributs in Ihrer Attributzuordnung
Konfiguration herunterladen
Damit Ihre Arbeitslast auf Clientbibliotheken zugreifen kann, müssen Sie zuerst Standardanmeldedaten für Anwendungen (Application Default Credentials, ADC) herunterladen und konfigurieren. Gehen Sie dazu so vor:
-
Rufen Sie in der Google Cloud Console die Seite Workload Identity-Pools auf.
Zu Workload Identity-Pools -
Wählen Sie in der Tabelle Ihren Pool aus, um zur Detailseite des Pools zu gelangen.
-
Klicken Sie auf Zugriff erlauben.
-
Wählen Sie Zugriff mit föderierten Identitäten gewähren (empfohlen) aus.
-
So laden Sie die Standardanmeldedaten für Anwendungen herunter, damit Ihre Arbeitslast auf Clientbibliotheken zugreifen kann:
-
Klicken Sie auf Konfiguration herunterladen.
-
Führen Sie im Dialogfeld Anwendung konfigurieren die folgenden Schritte aus:
-
Wählen Sie in der Drop-down-Liste Anbieter Ihren Anbieter aus.
-
Geben Sie unter OIDC-Tokenpfad oder SAML-Assertion-Pfad den Pfad ein, in dem sich das Token oder die Assertion befindet.
Wählen Sie in der Drop-down-Liste Formattyp das Format aus.
-
-
Klicken Sie auf Konfiguration herunterladen und notieren Sie sich den Pfad, in dem Sie die Datei gespeichert haben.
-