Ein Kubernetes-Dienstkonto (KSA) bietet eine Identität für Prozesse, die in einem Pod ausgeführt werden.
Kubernetes-Dienstkonten unterscheiden sich von den Google Cloud -Dienstkonten, mit denen Anwendungen autorisierte Aufrufe an Google Cloud -APIs ausführen.
Google Distributed Cloud verwendet einen privaten kryptografischen Schlüssel zum Signieren der KSA-Tokens, die für Pods ausgestellt 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, Google Cloud wird derselbe öffentliche Schlüssel zur Authentifizierung der Identität des Pods verwendet.
Beim Erstellen eines Nutzerclusters generiert Google Distributed Cloud die privaten und öffentlichen Schlüssel. Auch während der Clustererstellung registriert Google Distributed Cloud den Cluster bei einer Flotte und stellt den öffentlichen Schlüssel für Google Cloudbereit.
Sie können das private/öffentliche Schlüsselpaar später rotieren. 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 hatGoogle Cloud den neuen öffentlichen Schlüssel.
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 über projizierte Volumes an Pods verteilt. Legacy-Tokens laufen nie ab und werden in Kubernetes-Secrets aufbewahrt: Wir empfehlen gebundene Tokens, da sie sicherer sind.
Sowohl gebundene Tokens als auch Legacy-Tokens werden bei einer Schlüsselrotation aktualisiert.
Beschränkungen
- Wenn Sie den Cluster mit
enableAdvancedCluster
auftrue
festgelegt haben (was für die Einrichtung von Topologie-Domains erforderlich ist), wird die Schlüsselrotation nicht unterstützt.
Schlüsselrotation starten
Beachten Sie vor dem Starten einer Schlüsselrotation Folgendes:
Während einer Schlüsselrotation können Sie keine weitere Schlüsselrotation, Zertifizierungsstellenrotation oder 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 ansehen
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 ausgeführt wird, 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]}