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 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. Der entsprechende öffentliche Schlüssel wird verwendet, 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.

Während der Erstellung von Nutzerclustern generiert Google Distributed Cloud die privaten und öffentlichen Schlüssel. Während der Clustererstellung registriert Google Distributed Cloud den Cluster in einer Flotte und stellt den öffentlichen Schlüssel für Google Cloud bereit.

Später können Sie das private/öffentliche Schlüsselpaar 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. Google Cloud hat auch 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 mithilfe von projizierten 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 als auch Legacy-Tokens werden während einer Schlüsselrotation aktualisiert.

Schlüsselrotation starten

Bevor Sie mit der Schlüsselrotation beginnen, sollten Sie die folgenden Punkte beachten:

  • Während einer Schlüsselrotation können Sie keine weitere Schlüsselrotation, keine Zertifizierungsstellenrotation 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 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 anzeigen

So zeigen Sie den Status einer Schlüsselrotation an:

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