Workload Identity

Workload Identity (WIF) ist ein Mechanismus, mit dem die Arbeitslasten Ihres Clusters über Kubernetes-Dienstkonten auf externe Cloud-Ressourcen zugreifen können. WIF ist die empfohlene Methode für Anwendungen, die in GKE-angehängten Clustern ausgeführt werden, um auf Google Cloud-Dienste zuzugreifen. Wenn Sie Ihren Cluster registrieren, erstellt die GKE Attached Clusters API die gesamte für WIF erforderliche Infrastruktur mit Unterstützung für Cluster, die öffentliche oder private OIDC-Aussteller verwenden.

Alle GKE Enterprise-Dienste, die eine Verbindung zu Google Cloud herstellen, z. B. Connect- und Telemetrie-Agents, verwenden Workload Identity.

Kubernetes-Dienstkonten und Workload Identity

Wenn ein Pod ausgeführt wird, verwendet er ein Kubernetes-Dienstkonto, um den Zugriff auf Ressourcen zu autorisieren, die in seinem Cluster gehostet werden. Über WIF kann der Pod dasselbe Kubernetes-Dienstkonto (KSA) verwenden, um ein kurzlebiges Token für den Zugriff auf Ressourcen abzurufen, die außerhalb des Clusters gehostet werden.

WIF erfordert eine Vertrauensstellung zwischen dem OIDC-Identitätsanbieter im Cluster und dem externen Ressourcenanbieter wie Google Cloud IAM. Wenn Sie einen angehängten Cluster registrieren, erstellt der Registrierungsprozess automatisch diese Vertrauensstellung, indem er den OIDC-Dienst Ihres Clusters dem Standard-Workload Identity-Pool hinzufügt, der an Ihr Google Cloud-Projekt gebunden ist.

Dieser Workload Identity-Pool ist der Pool vertrauenswürdiger Identitätsanbieter Ihres Google-Projekts und heißt PROJECT_ID.svc.id.goog, wobei PROJECT_ID die Google-Projekt-ID ist, die Ihrem angehängten Cluster zugeordnet ist.

Sie können reguläre Google Cloud IAM-Richtlinien verwenden, um den Zugriff von Kubernetes-Dienstkonten auf Google Cloud-Dienste zu steuern. Kubernetes-Dienstkontohauptkonten sind die Darstellung des KSA im Workload Identity-Pool. Sie haben das folgende Format:

serviceAccount:WORKLOAD_IDENTITY_POOL_NAME[KSA_NAMESPACE/KSA_NAME]

Verwenden Sie den folgenden Befehl, um dem Kubernetes-Dienstkonto eine Rolle zuzuweisen:

gcloud projects add-iam-policy-binding PROJECT_ID \
  --member="serviceAccount:PROJECT_ID.svc.id.goog[KSA_NAMESPACE/KSA_NAME]" \
  --role=IAM_ROLE

Ersetzen Sie:

  • PROJECT_ID: Ihre Google Cloud-Projekt-ID
  • KSA_NAMESPACE: der Cluster-Namespace, in dem sich dieses Dienstkonto befindet
  • KSA_NAME: der Name des Kubernetes-Dienstkontos, dem Sie Berechtigungen erteilen möchten
  • IAM_ROLE: die Google Cloud-Rolle, die Sie diesem KSA zuweisen möchten