Ein Kubernetes-Dienstkonto (KSA) bietet eine Identität für Prozesse, die in einem Pod ausgeführt werden.
Kubernetes-Dienstkonten unterscheiden sich von Google Cloud-Dienstkonten, mit denen Anwendungen autorisierte Aufrufe zu Google Cloud APIs ausführen.
Google Distributed Cloud verwendet einen privaten kryptografischen Schlüssel, um die KSA-Tokens zu signieren, die an Pods ausgegeben werden. Er verwendet den entsprechenden öffentlichen Schlüssel, um die Tokens zu validieren, wenn Pods Anfragen an den Kubernetes API-Server senden. Wenn ein Pod Workload Identity verwendet, um Google Cloud APIs aufzurufen, verwendet Google Cloud denselben öffentlichen Schlüssel zur Authentifizierung der Identität des Pods.
Beim Erstellen eines Nutzerclusters generiert Google Distributed Cloud die privaten und öffentlichen Schlüssel. Außerdem wird während der Clustererstellung der Cluster von Google Distributed Cloud bei einer Flotte registriert und der öffentliche Schlüssel wird an Google Cloud gesendet.
Später können Sie das private/öffentliche Schlüsselpaar wechseln. Bei der Rotation werden automatisch neue Token ausgegeben, die mit dem neuen privaten Schlüssel signiert sind. Am Ende der Rotation hat der Cluster einen neuen privaten Schlüssel, einen neuen öffentlichen Schlüssel und aktualisierte Tokens. Außerdem ist der neue öffentliche Schlüssel in Google Cloud verfügbar.
Gebundene Tokens und Legacy-Tokens
Ein Pod kann entweder ein Legacy-Token oder ein gebundenes Token zur Authentifizierung und Autorisierung verwenden, wenn er den Kubernetes API-Server aufruft. gebundene Tokens haben eine begrenzte Lebensdauer und werden an Pods mithilfe von projizierten Volumes verteilt. Legacy-Tokens laufen nie ab und werden in Kubernetes-Secrets aufbewahrt: Wir empfehlen gebundene Tokens, da sie sicherer sind.
Sowohl gebundene als auch Legacy-Tokens werden bei einer Schlüsselrotation aktualisiert.
Schlüsselrotation starten
Beachten Sie vor dem Starten einer Schlüsselrotation Folgendes:
Während einer Schlüsselrotation können Sie keine weitere Schlüsselrotation, keine Rotation der Zertifizierungsstelle und keine Clusteraktualisierung starten.
Die Schlüsselrotation kann nicht pausiert oder rückgängig gemacht werden. Alle alten Schlüssel werden gelöscht.
Bei einer Schlüsselrotation werden vorhandene Clusterknoten gelöscht und neue Knoten erstellt.
So starten Sie eine Schlüsselrotation:
gkectl update credentials ksa-signing-key rotate \ --config USER_CLUSTER_CONFIG \ --kubeconfig ADMIN_CLUSTER_KUBECONIFG \ [--skip-prompt]
Ersetzen Sie Folgendes:
USER_CLUSTER_CONFIG: der Pfad Ihrer Nutzerclusterkonfigurationsdatei.
ADMIN_KUBECONFIG_FILE: der Pfad der kubeconfig-Datei des Administratorclusters
Geben Sie --skip-prompt
ein, wenn Sie nicht dazu aufgefordert werden wollen.
Status einer Schlüsselrotation abrufen
So rufen Sie den Status einer Schlüsselrotation auf:
gkectl update credentials ksa-signing-key status \ --config USER_CLUSTER_CONFIG \ --kubeconfig ADMIN_CLUSTER_KUBECONIFG
Wenn die Schlüsselrotation bereits abgeschlossen ist, wird eine Meldung wie die folgende angezeigt:
State of KSASigningKeyRotation with KSASigningKeyVersion 2 is - status: True, reason: KSASigningKeyRotationCompleted, message:{"tokenVersion":2,"privateKeyVersion":2,"publicKeyVersions":[2]}
Wenn die Rotation des KSA-Signaturschlüssels noch nicht abgeschlossen ist, wird eine Meldung wie die folgende angezeigt:
State of KSASigningKeyRotation with KSASigningKeyVersion 2 is - status: False, reason: KSASigningKeyRotationProcessedReason, message:{"tokenVersion":2,"privateKeyVersion":2,"publicKeyVersions":[1,2]}