In diesem Leitfaden wird beschrieben, wie Sie mit Workload Identity-Föderation Arbeitslasten, die in Azure Kubernetes Service (AKS) oder in einem selbst gehosteten Kubernetes-Cluster ausgeführt werden, bei Google Cloud authentifizieren können.
Mit Kubernetes können Sie einen Cluster so konfigurieren, dass Arbeitslasten Kubernetes-Dienstkonto-Tokens aus einem projizierten Volume abrufen können. Wenn Sie die Workload Identity-Föderation einrichten, können Arbeitslasten diese Kubernetes-Dienstkonto-Tokens zur Authentifizierung bei Google Cloud verwenden.
Wenn Sie GKE verwenden, verwenden Sie anstelle von Workload Identity-Föderation Workload Identity Federation for GKE.
Hinweise
Prüfen Sie vor der Konfiguration der Workload Identity-Föderation, ob Ihr Kubernetes-Cluster die folgenden Kriterien erfüllt:
GKE
Informationen für Google Kubernetes Engine (GKE)-Nutzer finden Sie unter Über GKE-Arbeitslasten bei Google Cloud APIs authentifizieren.
AKS
Achten Sie darauf, dass Ihr Cluster die folgende Anforderung erfüllt:
Das Feature OIDC-Aussteller muss aktiviert sein.
Sie müssen diese Funktion aktivieren, damit die Workload Identity-Föderation auf die OpenID Connect-Metadaten und das JSON Web Key Set (JWKS) für den Cluster zugreifen kann.
EKS
Sie müssen keine Änderungen an Ihrer EKS-Konfiguration vornehmen.
Kubernetes
Achten Sie darauf, dass Ihr Cluster die folgenden Anforderungen erfüllt:
Sie führen Kubernetes 1.20 oder höher aus.
In früheren Versionen von Kubernetes wurde ein anderes Dienstkonto-Token-Format verwendet, das nicht mit den Anleitungen in diesem Dokument kompatibel ist.
Sie haben
kube-apiserver
so konfiguriert, dass es Projektionen fürServiceAccount
-Token-Volumes unterstützt.
Der Cluster muss nicht über das Internet zugänglich sein.
Identitätsföderation von Arbeitslasten konfigurieren
Sie müssen diese Schritte nur einmal für jeden Kubernetes-Cluster ausführen. Sie können dann denselben Workload Identity-Pool und -Anbieter für mehrere Arbeitslasten und mehrere Google Cloud-Projekte verwenden.
So konfigurieren Sie die Workload Identity-Föderation:
-
In the Google Cloud console, on the project selector page, select or create a Google Cloud project.
Wir empfehlen, ein dediziertes Projekt zur Verwaltung von Workload Identity-Pools und -Anbietern.
-
Make sure that billing is enabled for your Google Cloud project.
Enable the IAM, Resource Manager, Service Account Credentials, and Security Token Service APIs.
Attributzuordnung und -bedingung definieren
Tokens für Kubernetes-Dienstkonten enthalten mehrere Anforderungen, darunter:
sub
: enthält den Namespace und den Namen des Dienstkontos, z. B.system:serviceaccount:NAMESPACE:KSA_NAME
, wobeiNAMESPACE
der Namespace des Dienstkontos undKSA_NAME
der Name des Dienstkontos ist."kubernetes.io".namespace
: enthält den Namespace des ServiceAccount."kubernetes.io".serviceaccount.name
: enthält den Namen des ServiceAccount."kubernetes.io".pod.name
: enthält den Namen des Pods.
Wenn Sie sub
als Betreffkennung (google.subject
) in Google Cloud nutzen möchten, verwenden Sie die folgende Zuordnung:
google.subject=assertion.sub
Optional können Sie zusätzliche Attribute zuordnen. Sie können dann auf diese Attribute verweisen, wenn Sie Zugriff auf Ressourcen gewähren. Beispiel:
google.subject=assertion.sub, attribute.namespace=assertion['kubernetes.io']['namespace'], attribute.service_account_name=assertion['kubernetes.io']['serviceaccount']['name'], attribute.pod=assertion['kubernetes.io']['pod']['name']
Definieren Sie optional eine Attributbedingung.
Attributbedingungen sind CEL-Ausdrücke, die Assertion-Attribute und Zielattribute prüfen können. Wenn die Attributbedingung bei bestimmten Anmeldedaten als true
ausgewertet wird, werden die Anmeldedaten akzeptiert. Andernfalls werden die Anmeldedaten abgelehnt.
Mit einer Attributbedingung können Sie einschränken, welche Kubernetes-Dienstkonten die Workload Identity-Föderation verwenden können, um kurzlebige Google Cloud-Tokens abzurufen.
Die folgende Bedingung beschränkt beispielsweise den Zugriff auf Kubernetes-Dienstkonten aus den Namespaces backend
und monitoring
:
assertion['kubernetes.io']['namespace'] in ['backend', 'monitoring']
Workload Identity-Pool und -Anbieter erstellen
Erforderliche Rollen
Bitten Sie Ihren Administrator, Ihnen die folgenden IAM-Rollen für das Projekt zuzuweisen, um die Berechtigungen zu erhalten, die Sie zum Konfigurieren der Workload Identity-Föderation benötigen:
-
Workload Identity Pool Admin (
roles/iam.workloadIdentityPoolAdmin
) -
Service Account Admin (
roles/iam.serviceAccountAdmin
)
Weitere Informationen zum Zuweisen von Rollen finden Sie unter Zugriff auf Projekte, Ordner und Organisationen verwalten.
Sie können die erforderlichen Berechtigungen auch über benutzerdefinierte Rollen oder andere vordefinierte Rollen erhalten.
Alternativ enthält die einfache Rolle „IAM-Inhaber“ (roles/owner
) auch Berechtigungen zum Konfigurieren der Identitätsföderation.
In einer Produktionsumgebung sollten Sie keine einfachen Rollen zuweisen, Sie können sie aber in einer Entwicklungs- oder Testumgebung gewähren.
So erstellen Sie einen Workload Identity-Pool und -Anbieter:
AKS
Bestimmen Sie die Aussteller-URL Ihres AKS-Clusters:
az aks show -n NAME -g RESOURCE_GROUP --query "oidcIssuerProfile.issuerUrl" -otsv
Ersetzen Sie Folgendes:
NAME
ist der Name des Clusters.RESOURCE_GROUP
: die Ressourcengruppe des Clusters
Der Befehl gibt die Aussteller-URL aus. Sie benötigen die Aussteller-URL in einem der folgenden Schritte.
Wenn der Befehl keine Aussteller-URL zurückgibt, prüfen Sie, ob Sie das Feature OIDC-Aussteller aktiviert haben.
Erstellen Sie einen neuen Workload Identity-Pool:
gcloud iam workload-identity-pools create POOL_ID \ --location="global" \ --description="DESCRIPTION" \ --display-name="DISPLAY_NAME"
Ersetzen Sie Folgendes:
POOL_ID
: die eindeutige ID des Pools.DISPLAY_NAME
: der Name des Pools.DESCRIPTION
: eine Beschreibung des von Ihnen gewählten Pools. Diese Beschreibung wird angezeigt, wenn Sie Zugriff auf Poolidentitäten gewähren.
Fügen Sie den AKS-Cluster als Workload Identity-Poolanbieter hinzu:
gcloud iam workload-identity-pools providers create-oidc WORKLOAD_PROVIDER_ID \ --location="global" \ --workload-identity-pool="POOL_ID" \ --issuer-uri="ISSUER" \ --attribute-mapping="MAPPINGS" \ --attribute-condition="CONDITIONS"
Ersetzen Sie Folgendes:
WORKLOAD_PROVIDER_ID
: eine eindeutige Anbieter-ID für Workload Identity-Pool Ihrer Wahl.POOL_ID
: die ID des Workload Identity-Pools, die Sie zuvor erstellt haben.ISSUER
: der Aussteller-URI, den Sie zuvor ermittelt haben.MAPPINGS
: eine durch Kommas getrennte Liste der Attributzuordnungen, die Sie zuvor in dieser Anleitung erstellt haben.CONDITIONS
: eine optionale Attributbedingung, die Sie zuvor in dieser Anleitung erstellt haben. Entfernen Sie den Parameter, wenn keine Attributbedingung vorliegt.
EKS
Bestimmen Sie die Aussteller-URL Ihres EKS-Clusters:
aws eks describe-cluster --name NAME --query "cluster.identity.oidc.issuer" --output text
Ersetzen Sie
NAME
durch den Namen des Clusters.Der Befehl gibt die Aussteller-URL aus. Sie benötigen die Aussteller-URL in einem der folgenden Schritte.
Erstellen Sie einen neuen Workload Identity-Pool:
gcloud iam workload-identity-pools create POOL_ID \ --location="global" \ --description="DESCRIPTION" \ --display-name="DISPLAY_NAME"
Ersetzen Sie Folgendes:
POOL_ID
: die eindeutige ID des Pools.DISPLAY_NAME
: der Name des Pools.DESCRIPTION
: eine Beschreibung des von Ihnen gewählten Pools. Diese Beschreibung wird angezeigt, wenn Sie Zugriff auf Poolidentitäten gewähren.
Fügen Sie den AKS-Cluster als Workload Identity-Poolanbieter hinzu:
gcloud iam workload-identity-pools providers create-oidc WORKLOAD_PROVIDER_ID \ --location="global" \ --workload-identity-pool="POOL_ID" \ --issuer-uri="ISSUER" \ --attribute-mapping="MAPPINGS" \ --attribute-condition="CONDITIONS"
Ersetzen Sie Folgendes:
WORKLOAD_PROVIDER_ID
: eine eindeutige Anbieter-ID für Workload Identity-Pool Ihrer Wahl.POOL_ID
: die ID des Workload Identity-Pools, die Sie zuvor erstellt haben.ISSUER
: der Aussteller-URI, den Sie zuvor ermittelt haben.MAPPINGS
: eine durch Kommas getrennte Liste der Attributzuordnungen, die Sie zuvor in dieser Anleitung erstellt haben.CONDITIONS
: eine optionale Attributbedingung, die Sie zuvor in dieser Anleitung erstellt haben. Entfernen Sie den Parameter, wenn keine Attributbedingung vorliegt.
Kubernetes
Stellen Sie eine Verbindung zu Ihrem Kubernetes-Cluster her und ermitteln Sie mit
kubectl
die Aussteller-URL des Clusters:kubectl get --raw /.well-known/openid-configuration | jq -r .issuer
Sie benötigen die Aussteller-URL in einem der folgenden Schritte.
Laden Sie das JSON Web Key Set (JWKS) des Clusters herunter:
kubectl get --raw /openid/v1/jwks > cluster-jwks.json
In einem der folgenden Schritte laden Sie das JWKS hoch, damit die Workload Identity-Föderation die Authentizität der von Ihrem Cluster ausgestellten Kubernetes-Dienstkonto-Tokens prüfen kann.
Erstellen Sie einen neuen Workload Identity-Pool:
gcloud iam workload-identity-pools create POOL_ID \ --location="global" \ --description="DESCRIPTION" \ --display-name="DISPLAY_NAME"
Ersetzen Sie Folgendes:
POOL_ID
: die eindeutige ID des Pools.DISPLAY_NAME
: der Name des Pools.DESCRIPTION
: eine Beschreibung des von Ihnen gewählten Pools. Diese Beschreibung wird angezeigt, wenn Sie Zugriff auf Poolidentitäten gewähren.
Fügen Sie den Kubernetes-Cluster als Workload Identity-Pool-Anbieter hinzu und laden Sie den JWKS des Clusters hoch:
gcloud iam workload-identity-pools providers create-oidc WORKLOAD_PROVIDER_ID \ --location="global" \ --workload-identity-pool="POOL_ID" \ --issuer-uri="ISSUER" \ --attribute-mapping="MAPPINGS" \ --attribute-condition="CONDITIONS" \ --jwk-json-path="cluster-jwks.json"
Ersetzen Sie Folgendes:
WORKLOAD_PROVIDER_ID
: eine eindeutige Anbieter-ID für Workload Identity-Pool Ihrer Wahl.POOL_ID
: die ID des Workload Identity-Pools, die Sie zuvor erstellt haben.ISSUER
: der Aussteller-URI, den Sie zuvor ermittelt haben.MAPPINGS
: eine durch Kommas getrennte Liste der Attributzuordnungen, die Sie zuvor in dieser Anleitung erstellt haben.CONDITIONS
: eine optionale Attributbedingung, die Sie zuvor in dieser Anleitung erstellt haben. Entfernen Sie den Parameter, wenn keine Attributbedingung vorliegt.
Zugriff auf eine Kubernetes-Arbeitslast gewähren
In diesem Abschnitt wird beschrieben, wie Sie eine Kubernetes-Arbeitslast so konfigurieren, dass sie entweder über den direkten Ressourcenzugriff der Workload Identity-Föderation oder die Identitätsübernahme eines Dienstkontos auf Google Cloud APIs zugreift.
Sie müssen diese Schritte einmal für jede Kubernetes-Arbeitslast ausführen, die Zugriff auf Google Cloud benötigt.
Wir empfehlen die Verwendung der Workload Identity-Föderation. Bei der Verwendung der Identitätsföderation können jedoch bestimmte API-Methoden eingeschränkt sein. Eine Liste der Einschränkungen finden Sie unter Identity-Föderation: Produkte und Einschränkungen.
Wenn die Methoden, die Ihre Arbeitslast verwendet, solche Einschränkungen haben, können Sie stattdessen die IAM-Identitätsübernahme verwenden.
Workload Identity-Föderation verwenden, um direkten Ressourcenzugriff zu gewähren
In diesem Abschnitt verwenden Sie die Workload Identity-Föderation, um einem Kubernetes-Dienstkonto eine IAM-Rolle zuzuweisen, damit es direkt auf Google Cloud-Ressourcen zugreifen kann.
So erstellen Sie ein Kubernetes-Dienstkonto und gewähren ihm eine Rolle:
Erstellen Sie ein Kubernetes-ServiceAccount:
kubectl create serviceaccount KSA_NAME --namespace NAMESPACE
Ersetzen Sie Folgendes:
KSA_NAME
: Ein Name für das ServiceAccount.NAMESPACE
: Der Namespace, in dem das ServiceAccount erstellt werden soll.
Gewähren Sie dem Kubernetes-Dienstkonto IAM-Zugriff auf eine Google Cloud-Ressource.
Gemäß dem Prinzip der geringsten Berechtigung empfehlen wir, nur Rollen zu gewähren, die für die Ressourcen spezifisch sind, auf die Ihre Anwendung zugreifen muss.
Im folgenden Beispiel wird dem von Ihnen erstellten ServiceAccount die Rolle Kubernetes Engine-Clusterbetrachter (
roles/container.clusterViewer
) zugewiesen. Der Befehl verwendet das Thema, das Sie zuvor in diesem Dokument zugeordnet haben.gcloud projects add-iam-policy-binding projects/PROJECT_ID \ --role=roles/container.clusterViewer \ --member=principal://iam.googleapis.com/projects/PROJECT_NUMBER/locations/global/workloadIdentityPools/POOL_ID/subject/MAPPED_SUBJECT \ --condition=None
Ersetzen Sie Folgendes:
PROJECT_NUMBER
: die numerische Google Cloud-Projektnummer, die mit Ihrer Projekt-ID verknüpft ist.POOL_ID
: die ID des Workload Identity-Pools.MAPPED_SUBJECT
: das Kubernetes-Dienstkonto aus dem Anspruch in Ihrem ID-Token, das Siegoogle.subject
zugeordnet haben. Wenn du beispielsweisegoogle.subject=assertions.sub
zugeordnet hast und dein ID-Token"sub": "system:serviceaccount:default:my-kubernetes-serviceaccount"
enthält, istMAPPED_SUBJECT
system:serviceaccount:default:my-kubernetes-serviceaccount
.
Sie können jeder Google Cloud-Ressource, die IAM-Zulassungsrichtlinien unterstützt, Rollen zuweisen. Die Syntax der Hauptkonto-ID hängt von der Kubernetes-Ressource ab. Eine Liste der unterstützten IDs finden Sie unter Hauptkonto-IDs für Workload Identity Federation for GKE.
Sie können jetzt eine Arbeitslast bereitstellen, die über das Kubernetes-Dienstkonto auf die Google Cloud-Ressourcen zugreift, für die Sie Zugriff gewährt haben.
Alternative: Zugriff mit Identitätsübernahme des IAM-Dienstkontos gewähren
So konfigurieren Sie Ihr Kubernetes-Dienstkonto für die Identitätsübernahme durch IAM-Dienstkonten:
Erstellen Sie ein Kubernetes-Dienstkonto, falls noch nicht geschehen:
kubectl create serviceaccount KSA_NAME --namespace NAMESPACE
Ersetzen Sie Folgendes:
KSA_NAME
: ein Name für das ServiceAccountNAMESPACE
: der Namespace, in dem das ServiceAccount erstellt werden soll
Erstellen Sie ein IAM-Dienstkonto, das die Arbeitslast darstellt.
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.
gcloud iam service-accounts create IAM_SA_NAME \ --project=IAM_SA_PROJECT_ID
Ersetzen Sie Folgendes:
IAM_SA_NAME
: der Name des DienstkontosIAM_SA_PROJECT_ID
: die Projekt-ID des Dienstkontos
Gewähren Sie Ihrem IAM-Dienstkonto Zugriff auf die Google Cloud-Ressourcen, auf die die Kubernetes-Arbeitslast zugreifen soll.
gcloud projects add-iam-policy-binding IAM_SA_PROJECT_ID \ --member="serviceAccount:IAM_SA_NAME@IAM_SA_PROJECT_ID.iam.gserviceaccount.com" \ --role="ROLE"
Ersetzen Sie Folgendes:
IAM_SA_PROJECT_ID
: die ID des Projekts, in dem Sie das Dienstkonto erstellt habenIAM_SA_NAME
: der Name des DienstkontosROLE
: mit dem Namen der Rolle, z. B.roles/container.clusterViewer
Gewähren Sie dem Kubernetes-ServiceAccount Zugriff, um die Identität des IAM-Dienstkontos zu übernehmen:
gcloud iam service-accounts add-iam-policy-binding \ IAM_SA_NAME@IAM_SA_PROJECT_ID.iam.gserviceaccount.com \ --member="principal://iam.googleapis.com/projects/PROJECT_NUMBER/locations/global/workloadIdentityPools/POOL_ID/subject/MAPPED_SUBJECT" \ --role=roles/iam.workloadIdentityUser
Ersetzen Sie Folgendes:
IAM_SA_NAME
: der Name des DienstkontosPROJECT_ID
: die ID des Projekts, in dem Sie Kubernetes ausführenIAM_SA_PROJECT_NUMBER
: die Projektnummer des Projekts, in dem Sie das Dienstkonto erstellt habenPOOL_ID
: die ID des Workload Identity-Pools.MAPPED_SUBJECT
: das Kubernetes-Dienstkonto aus dem Anspruch in Ihrem ID-Token, das Siegoogle.subject
zugeordnet haben. Wenn du beispielsweisegoogle.subject=assertions.sub
zugeordnet hast und dein ID-Token"sub": "system:serviceaccount:default:my-kubernetes-serviceaccount"
enthält, istMAPPED_SUBJECT
system:serviceaccount:default:my-kubernetes-serviceaccount
.
Informationen zur Autorisierung von IAM-Dienstkonten für den Zugriff auf Google Cloud APIs finden Sie unter Details zu Dienstkonten.
Sie können jetzt eine Arbeitslast bereitstellen, die das Kubernetes-Dienstkonto und das IAM-Dienstkonto verwendet, um auf die Google Cloud-Ressourcen zuzugreifen, für die Sie Zugriff gewährt haben.
Kubernetes-Arbeitslast bereitstellen
So stellen Sie eine Kubernetes-Arbeitslast bereit, die auf Google Cloud-Ressourcen zugreifen kann:
Erstellen Sie eine Konfigurationsdatei für Anmeldedaten:
gcloud iam workload-identity-pools create-cred-config \ projects/PROJECT_NUMBER/locations/global/workloadIdentityPools/POOL_ID/providers/WORKLOAD_PROVIDER_ID \ --service-account=SERVICE_ACCOUNT_EMAIL \ --credential-source-file=/var/run/service-account/token \ --credential-source-type=text \ --output-file=credential-configuration.json
Ersetzen Sie Folgendes:
PROJECT_NUMBER
: die Projektnummer des Projekts, das den Workload Identity-Pool enthältPOOL_ID
: die ID des Workload Identity-PoolsWORKLOAD_PROVIDER_ID
: die ID des Workload Identity-PoolanbietersSERVICE_ACCOUNT_EMAIL
: E-Mail-Adresse des Dienstkontos, wenn Sie Ihr Kubernetes-Dienstkonto so konfiguriert haben, dass es die Identitätsdiebstahl-Funktion für IAM-Dienstkonten verwendet. Lassen Sie dieses Flag weg, wenn Sie Ihr Kubernetes-Dienstkonto für den direkten Ressourcenzugriff konfiguriert haben.
Mit der Konfigurationsdatei für Anmeldedaten können die Cloud-Clientbibliotheken, die gcloud CLI und Terraform Folgendes ermitteln:
- Wo externe Anmeldedaten abgerufen werden
- Welcher Workload Identity-Pool und -Anbieter verwendet werden
- Welches Dienstkonto übernommen wird
Importieren Sie die Konfigurationsdatei für Anmeldedaten als ConfigMap.
kubectl create configmap CONFIGMAP_NAME \ --from-file credential-configuration.json \ --namespace NAMESPACE
Ersetzen Sie Folgendes:
CONFIGMAP_NAME
: der Name der ConfigMap.NAMESPACE
: der Namespace, in dem die ConfigMap erstellt werden soll.
Stellen Sie eine Arbeitslast bereit und lassen Sie sie das Kubernetes-Dienstkonto und ConfigMap verwenden.
Erstellen Sie ein Manifest und konfigurieren Sie es so:
- Stellen Sie ein projiziertes Token-Volume bereit, damit die Arbeitslast ein Kubernetes-Dienstkonto-Token aus einer lokalen Datei abrufen kann. Konfigurieren Sie das Volume so, dass das Token des Kubernetes-Dienstkontos die Zielgruppe verwendet, die vom Workload Identity-Poolanbieter erwartet wird.
- Stellen Sie die ConfigMap bereit, die die Konfigurationsdatei für Anmeldedaten enthält, damit die Arbeitslast auf die erforderliche Konfiguration für die Verwendung der Workload Identity-Föderation zugreifen kann.
- Fügen Sie eine Umgebungsvariable
GOOGLE_APPLICATION_CREDENTIALS
hinzu, die den Pfad der Konfigurationsdatei für Anmeldedaten enthält, damit Arbeitslasten die Datei finden können.
Das folgende Beispiel zeigt das Kubernetes-Dienstkonto und die ConfigMap, damit sich die Google Cloud CLI bei Google Cloud authentifizieren kann:
apiVersion: v1 kind: Pod metadata: name: example namespace: NAMESPACE spec: containers: - name: example image: google/cloud-sdk:alpine command: ["/bin/sh", "-c", "gcloud auth login --cred-file $GOOGLE_APPLICATION_CREDENTIALS && gcloud auth list && sleep 600"] volumeMounts: - name: token mountPath: "/var/run/service-account" readOnly: true - name: workload-identity-credential-configuration mountPath: "/etc/workload-identity" readOnly: true env: - name: GOOGLE_APPLICATION_CREDENTIALS value: "/etc/workload-identity/credential-configuration.json" serviceAccountName: KSA_NAME volumes: - name: token projected: sources: - serviceAccountToken: audience: https://iam.googleapis.com/projects/PROJECT_NUMBER/locations/global/workloadIdentityPools/POOL_ID/providers/WORKLOAD_PROVIDER_ID expirationSeconds: 3600 path: token - name: workload-identity-credential-configuration configMap: name: CONFIGMAP_NAME
Sie können genauso vorgehen, damit Tools und Arbeitslasten, die eine der folgenden Clientbibliotheken verwenden, Anmeldedaten automatisch finden:
C++
Die Google Cloud-Clientbibliotheken für C++ unterstützen die Mitarbeiteridentitätsföderation seit Version v2.6.0. Wenn Sie die Mitarbeiteridentitätsföderation verwenden möchten, müssen Sie die Clientbibliotheken mit Version 1.36.0 oder höher von gRPC erstellen.
Go
Clientbibliotheken für Go unterstützen die Identitätsföderation von Arbeitslasten, wenn sie Version 0.0.0-2021218202405-ba52d332ba99 oder höher des Moduls
golang.org/x/oauth2
verwenden.Führen Sie die folgenden Befehle aus, um zu überprüfen, welche Version dieses Moduls in Ihrer Clientbibliothek verwendet wird:
cd $GOPATH/src/cloud.google.com/go go list -m golang.org/x/oauth2
Java
Clientbibliotheken für Java unterstützen die Identitätsföderation von Arbeitslasten, wenn sie Version 0.24.0 oder höher des
com.google.auth:google-auth-library-oauth2-http
-Artefakts verwenden.Führen Sie den folgenden Maven-Befehl in Ihrem Anwendungsverzeichnis aus, um zu überprüfen, welche Version dieses Artefakts Ihre Clientbibliothek verwendet:
mvn dependency:list -DincludeArtifactIds=google-auth-library-oauth2-http
Node.js
Clientbibliotheken für Node.js unterstützen die Workload Identity-Föderation, wenn sie Version 7.0.2 oder höher des
google-auth-library
-Pakets verwenden.Führen Sie den folgenden Befehl in Ihrem Anwendungsverzeichnis aus, um zu überprüfen, welche Version dieses Pakets verwendet wird:
npm list google-auth-library
Wenn Sie ein
GoogleAuth
-Objekt erstellen, können Sie eine Projekt-ID angeben oderGoogleAuth
erlauben, automatisch nach der Projekt-ID zu suchen. Damit automatisch nach der Projekt-ID gesucht werden kann, muss das Dienstkonto in der Konfigurationsdatei in Ihrem Projekt die Rolle „Sucher“ (roles/browser
) oder eine Rolle mit entsprechenden Berechtigungen haben. Weitere Informationen finden Sie unterREADME
für das Paketgoogle-auth-library
.Python
Clientbibliotheken für Python unterstützen die Identitätsföderation von Arbeitslasten, wenn sie Version 1.27.0 oder höher des
google-auth
-Pakets verwenden.Führen Sie den folgenden Befehl in der Umgebung aus, in der das Paket installiert ist, um zu ermitteln, welche Version dieses Pakets verwendet wird:
pip show google-auth
Wenn Sie eine Projekt-ID für den Authentifizierungsclient angeben, können Sie die Umgebungsvariable
GOOGLE_CLOUD_PROJECT
festlegen oder Sie gestatten dem Client, automatisch nach der Projekt-ID zu suchen. Damit automatisch nach der Projekt-ID gesucht werden kann, muss das Dienstkonto in der Konfigurationsdatei in Ihrem Projekt die Rolle „Sucher“ (roles/browser
) oder eine Rolle mit entsprechenden Berechtigungen haben. Weitere Informationen finden Sie im Nutzerhandbuch für das Paketgoogle-auth
.gcloud
Verwenden Sie zum Authentifizieren der Workload Identity-Föderation den Befehl
gcloud auth login
:gcloud auth login --cred-file=FILEPATH.json
Ersetzen Sie
FILEPATH
durch den Pfad zur Konfigurationsdatei für Anmeldedaten.Unterstützung für die Workload Identity-Föderation in der gcloud CLI ist in Version 363.0.0 und höher des gcloud CLI verfügbar.
Terraform
Der Google Cloud-Anbieter unterstützt die Workload Identity-Föderation, wenn Sie Version 3.61.0 oder höher verwenden:
terraform { required_providers { google = { source = "hashicorp/google" version = "~> 3.61.0" } } }
bq
Verwenden Sie für die Authentifizierung mithilfe der Workload Identity-Föderation den Befehl
gcloud auth login
:gcloud auth login --cred-file=FILEPATH.json
Ersetzen Sie
FILEPATH
durch den Pfad zur Konfigurationsdatei für Anmeldedaten.Unterstützung für Workload Identity-Föderation in bq ist in Version 390.0.0 und späteren Versionen der gcloud CLI verfügbar.
Optional können Sie prüfen, ob die Authentifizierung ordnungsgemäß funktioniert, indem Sie den folgenden Befehl ausführen:
kubectl exec example --namespace NAMESPACE -- gcloud auth print-access-token
Nächste Schritte
- Weitere Informationen zur Workload Identity-Föderation
- Best Practices für die Verwendung der Workload Identity-Föderation
- Workload Identity-Pools und -Anbieter verwalten