KSA-Signaturschlüssel rotieren

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 senden.

Google Distributed Cloud verwendet einen privaten kryptografischen Schlüssel zum Signieren der KSA-Tokens, die an Pods ausgegeben werden. Sie 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 zum Aufrufen von Google Cloud APIs verwendet, verwendet Google Cloud denselben öffentlichen Schlüssel, um die Identität des Pods zu authentifizieren.

Während der Erstellung des 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 Cloud bereit.

Später können Sie das Paar aus privatem und öffentlichem Schlüssel rotieren. Durch die Rotation werden automatisch neue Tokens 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 gibt es in Google Cloud einen neuen öffentlichen Schlüssel.

Gebundene Tokens und alte Tokens

Ein Pod kann beim Aufrufen 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 mithilfe von projizierten 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 Token als auch Legacy-Tokens werden während einer Schlüsselrotation aktualisiert.

Schlüsselrotation starten

Beachten Sie die folgenden Punkte, bevor Sie eine Schlüsselrotation starten:

  • 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: Pfad der Konfigurationsdatei des Nutzerclusters

  • ADMIN_KUBECONFIG_FILE: der Pfad der kubeconfig-Datei des Administratorclusters

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

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]}