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 |
|
IAM-Dienstkonto |
|
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.
- Die Grundlagen von Kubernetes-ServiceAccounts finden Sie in der Kubernetes-Dokumentation unter ServiceAccounts.
- Informationen zum Erstellen neuer ServiceAccounts, zum Erteilen von Berechtigungen mithilfe von rollenbasierter Zugriffssteuerung (Role-Based Access Control, RBAC) und zum Zuweisen von ServiceAccounts zu Pods finden Sie unter Dienstkonten für Pods konfigurieren.
- Best Practices für die Verwaltung von Kubernetes-ServiceAccounts finden Sie unter Best Practices für RBAC.
- Rufen Sie zum Lesen der OIDC-Konfiguration des Kubernetes API-Servers für einen Cluster die Methode
projects.locations.clusters.well-known.getOpenid-configuration
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.