KSA-Signaturschlüssel rotieren

Ein Kubernetes-Dienstkonto 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.

GKE on VMware verwendet einen privaten kryptografischen Schlüssel zum Signieren der KSA-Tokens, die an Pods ausgegeben werden. Der entsprechende öffentliche Schlüssel wird verwendet, um die Tokens zu validieren, wenn Pods Anfragen an den Kubernetes API-Server senden. Wenn ein Pod Google Cloud APIs über Workload Identity aufruft, verwendet Google Cloud denselben öffentlichen Schlüssel, um die Identität des Pods zu authentifizieren.

Beim Erstellen des Nutzerclusters generiert GKE on VMware die privaten und öffentlichen Schlüssel. Auch während der Clustererstellung registriert GKE on VMware den Cluster bei einer Flotte und stellt Google Cloud den öffentlichen Schlüssel zur Verfügung.

Später kannst du das Paar aus privatem und öffentlichem Schlüssel rotieren. Bei der Rotation werden automatisch neue Tokens ausgegeben, die vom neuen privaten Schlüssel signiert wurden. Am Ende der Rotation hat der Cluster einen neuen privaten Schlüssel, einen neuen öffentlichen Schlüssel und aktualisierte Tokens. Außerdem hat Google Cloud den neuen öffentlichen Schlüssel.

Gebundene Tokens und alte Tokens

Ein Pod kann beim Aufruf des Kubernetes API-Servers entweder ein Legacy-Token oder ein gebundenes Token zur Authentifizierung und Autorisierung verwenden. Gebundene Tokens haben eine begrenzte Lebensdauer und werden über projektierte Volumes an Pods verteilt. Legacy-Tokens laufen nie ab und werden in Kubernetes-Secrets gespeichert. Wir empfehlen gebundene Tokens, da sie sicherer sind.

Sowohl gebundene Tokens als auch Legacy-Tokens werden während einer Schlüsselrotation aktualisiert.

Schlüsselrotation starten

Bevor Sie eine Schlüsselrotation starten, sollten Sie die folgenden Punkte berücksichtigen:

  • Während einer Schlüsselrotation können Sie keine weitere Schlüsselrotation, die Rotation der Zertifizierungsstelle und keine Clusteraktualisierung starten.

  • Die Schlüsselrotation kann nicht pausiert oder zurückgesetzt 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 zur Konfigurationsdatei des Nutzerclusters

  • ADMIN_KUBECONFIG_FILE: Der Pfad der kubeconfig-Datei des Administratorclusters

Geben Sie --skip-prompt an, wenn Sie nicht dazu aufgefordert werden möchten.

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 diese 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 läuft, wird eine Meldung wie diese angezeigt:

State of KSASigningKeyRotation with KSASigningKeyVersion 2 is -
status: False,
reason: KSASigningKeyRotationProcessedReason,
message:{"tokenVersion":2,"privateKeyVersion":2,"publicKeyVersions":[1,2]}