Dienstkonten in GKE


Auf dieser Seite werden Dienstkonten in Google Kubernetes Engine (GKE) beschrieben, die Identitäten für Anwendungen bereitstellen.

Dienstkonten sind Identitäten, die für Anwendungen anstelle von Personen vorgesehen sind. In GKE interagieren Sie mit Kubernetes-Dienstkonten und mit Identity and Access Management-Dienstkonten.

Kubernetes-Dienstkonten und IAM-Dienstkonten

In der folgenden Tabelle werden die Hauptunterschiede zwischen Kubernetes-Dienstkonten und IAM-Dienstkonten beschrieben:

Arten von Dienstkonten in GKE
Kubernetes-Dienstkonto
  • Objekt ServiceAccount im Kubernetes API-Server
  • Auf einen Kubernetes-Namespace in einem Cluster beschränkt
  • Stellt eine Identität für Pods bereit, die im Cluster verwendet werden sollen
IAM-Dienstkonto
  • Mit der IAM API verwalten
  • Auf ein Google Cloud-Projekt beschränkt
  • Stellt eine Identität für Anwendungen im Projekt bereit

Kubernetes-Dienstkonten

Kubernetes-Dienstkonten werden auf Clusterebene verwaltet und sind auf dem Kubernetes API-Server als ServiceAccount-Objekte vorhanden. In der Kubernetes- und GKE-Dokumentation wird häufig der Begriff ServiceAccount verwendet, um diese Kubernetes-Ressourcen von Dienstkonten in anderen Umgebungen wie IAM zu unterscheiden.

Sie erstellen ein Kubernetes-ServiceAccount in einem Namespace und weisen dieses ServiceAccount dann mithilfe des Felds serviceAccountName im Pod-Manifest einem Pod zu. Der Kubelet-Prozess auf dem Knoten ruft ein kurzlebiges Inhabertoken für das zugewiesene ServiceAccount ab und stellt das Token als projiziertes Volume im Pod bereit.

Das kurzlebige Inhabertoken ist ein JSON Web Token (JWT), das vom API-Server signiert wird, bei dem es sich um einen OIDC-Anbieter (OpenID Connect) handelt. Rufen Sie zum Validieren des Inhabertokens den öffentlichen Validierungsschlüssel für den Cluster ab. Rufen Sie dazu die Methode projects.locations.clusters.getJwks in der GKE API auf.

Anmeldedaten des Kubernetes-ServiceAccount rotieren

Wenn die Anmeldedaten eines Kubernetes-Dienstkontos manipuliert wurden, verwenden Sie eine der folgenden Optionen, um die Anmeldedaten zu widerrufen:

  • Pods neu erstellen: Das Inhabertoken ist an jede eindeutige Pod-UID gebunden. Daher werden beim Neuerstellen der Pods die vorherigen Anmeldedaten ungültig.
  • Erstellen Sie das Kubernetes-Dienstkonto neu: Das Inhabertoken ist an die UID des ServiceAccount-Objekts in der Kubernetes API gebunden. Löschen Sie das ServiceAccount und erstellen Sie ein neues ServiceAccount mit dem gleichen Namen. Frühere Tokens werden ungültig, da die UID des neuen ServiceAccount anders ist.
  • Rotation von Anmeldedaten durchführen: Bei diesem Vorgang werden alle Anmeldedaten von Kubernetes-Dienstkonten in Ihrem Cluster widerrufen. Durch die Rotation werden auch das CA-Zertifikat und die IP-Adresse Ihres Clusters geändert. Weitere Informationen finden Sie unter Rotation von Anmeldedaten.

IAM-Dienstkonten

IAM-Dienstkonten werden auf Projektebene mithilfe der IAM API verwaltet. Sie können diese Dienstkonten verwenden, um Aktionen wie das programmatische Aufrufen von Google Cloud APIs und das Verwalten von Berechtigungen für Anwendungen auszuführen, die in Google Cloud-Produkten ausgeführt werden.

Weitere Informationen finden Sie in der Übersicht zu IAM-Dienstkonten.

GKE-Dienst-Agents

Ein IAM-Dienst-Agent ist ein IAM-Dienstkonto, das von Google Cloud verwaltet wird.

GKE verwendet den Kubernetes Engine-Dienst-Agent, um den Lebenszyklus von Clusterressourcen wie Knoten, Laufwerke und Load-Balancer in Ihrem Namen zu verwalten. Dieser Dienst-Agent hat die Domain container-engine-robot.iam.gserviceaccount.com und erhält die Rolle Kubernetes-Engine-Service-Agent (roles/container.serviceAgent) in Ihrem Projekt, wenn Sie die GKE-API aktivieren.

Die Kennung dieses Dienst-Agents lautet:

service-PROJECT_NUMBER@container-engine-robot.iam.gserviceaccount.com

PROJECT_NUMBER ist Ihre numerische Projektnummer.

Wenn Sie den GKE-Dienst-Agent deaktivieren, können Sie ihn wiederherstellen. Folgen Sie dazu der Anleitung unter Dienstkonto aktivieren.

Wenn Sie die Berechtigungen des Dienst-Agents in Ihrem Projekt entfernen, können Sie sie wiederherstellen. Folgen Sie dazu der Anleitung unter Fehler 400/403: Dem Konto fehlen Bearbeitungsberechtigungen.

Wenn Sie den GKE-Dienst-Agent löschen, können Sie ihn wiederherstellen. Folgen Sie dazu der Anleitung unter Dienstkonto wiederherstellen.

Standardmäßiges GKE-Knotendienstkonto

Standardmäßig verwenden GKE-Knoten das Compute Engine-Standarddienstkonto. Standardmäßig wird diesem Dienstkonto die Rolle „Bearbeiter“ (roles/editor) zugewiesen und es hat mehr Berechtigungen als für GKE-Knoten erforderlich. Verwenden Sie eine Rolle mit den Mindestberechtigungen, die zum Ausführen von Knoten im Cluster erforderlich sind.

Deaktivieren Sie das Compute Engine-Standarddienstkonto nur, wenn Sie zu von Nutzern verwalteten Dienstkonten migrieren.

Mindestberechtigungen

GKE benötigt einen Mindestsatz an IAM-Berechtigungen für den Betrieb Ihres Clusters. Eine Anleitung zum Erstellen eines IAM-Dienstkontos mit minimalen Berechtigungen finden Sie unter Google-Dienstkonten mit minimalen Berechtigungen verwenden.

Wann sollte ein bestimmtes Dienstkonto verwendet werden?

Welche Art von Dienstkonto Sie verwenden, hängt von der Art der Identität ab, die Sie für Ihre Anwendungen bereitstellen möchten:

  • Identität für die Pods zur Verwendung im Cluster bereitstellen: Verwenden Sie ein Kubernetes-ServiceAccount. Jeder Kubernetes-Namespace hat ein default-ServiceAccount. Wir empfehlen jedoch, für jede Arbeitslast in jedem Namespace neue ServiceAccounts mit minimalen Berechtigungen zu erstellen.
  • Identität für Pods zur Verwendung außerhalb des Clusters bereitstellen: Verwenden Sie Workload Identity-Föderation für GKE. Mit Workload Identity Federation für GKE können Sie Kubernetes-Ressourcen wie ServiceAccounts als Hauptkonten in IAM-Richtlinien angeben. Verwenden Sie beispielsweise Workload Identity-Föderation für GKE, wenn Sie Google Cloud APIs wie Secret Manager oder Spanner über Ihre Pods aufrufen.
  • Standardidentität für Knoten bereitstellen: Verwenden Sie beim Erstellen von GKE-Clustern oder -Knoten ein benutzerdefiniertes IAM-Dienstkonto mit minimal Berechtigungen. Wenn Sie kein benutzerdefiniertes IAM-Dienstkonto verwenden, nutzt GKE das Compute Engine-Standarddienstkonto, das umfassende Berechtigungen innerhalb Ihres Projekts hat.

Nächste Schritte