Ruotare le chiavi di firma KSA

Un account di servizio Kubernetes (KSA) fornisce un'identità per i processi in esecuzione in un pod.

Gli account di servizio Kubernetes sono diversi Account di servizio Google Cloud usate dalle applicazioni per effettuare chiamate autorizzate alle API Google Cloud.

Google Distributed Cloud utilizza una chiave di crittografia privata per firmare Token dell'Arabia Saudita che emette ai pod. Utilizza la chiave pubblica corrispondente per verificare i token quando i pod inviano richieste al server API Kubernetes. Quando un pod utilizza Workload Identity per chiamare le API Google Cloud, Google Cloud utilizza la stessa chiave pubblica per autenticare l'identità del pod.

Durante la creazione del cluster di utenti, Google Distributed Cloud genera le chiavi private e pubbliche. Inoltre, durante la creazione del cluster, registra il cluster in un parco risorse e fornisce la chiave pubblica a Google Cloud.

In un secondo momento, puoi ruotare la coppia di chiavi private/pubbliche. La rotazione emette automaticamente nuovi token firmati dalla nuova chiave privata. Al termine della rotazione, il cluster ha una nuova chiave privata, una nuova chiave pubblica e token aggiornati. Inoltre, Google Cloud ha la nuova chiave pubblica.

Token associati e token legacy

Un pod può utilizzare un token legacy o un token vincolato per l'autenticazione e l'autorizzazione quando chiama il server dell'API Kubernetes. I token associati hanno una durata limitata e vengono distribuiti ai pod utilizzando volumi proiettati. I token legacy non scadono mai e vengono conservati nei secret Kubernetes. Consigliamo i token vincolati perché sono più sicuri.

Sia i token legati che quelli precedenti vengono aggiornati durante una rotazione delle chiavi.

Avvia la rotazione della chiave

Prima di iniziare una rotazione delle chiavi, prendi in considerazione i seguenti punti:

  • Durante una rotazione delle chiavi, non puoi avviare un'altra rotazione delle chiavi, una rotazione dell'autorità di certificazione o un aggiornamento del cluster.

  • La rotazione delle chiavi non può essere messa in pausa o annullata. Tutte le chiavi precedenti vengono eliminate.

  • Una rotazione delle chiavi elimina i nodi del cluster esistenti e ne crea di nuovi.

Per avviare la rotazione della chiave:

gkectl update credentials ksa-signing-key rotate \
    --config USER_CLUSTER_CONFIG \
    --kubeconfig ADMIN_CLUSTER_KUBECONIFG \
    [--skip-prompt]

Sostituisci quanto segue:

  • USER_CLUSTER_CONFIG: il percorso della configurazione del cluster utente file

  • ADMIN_KUBECONFIG_FILE: il percorso del file kubeconfig del cluster di amministrazione

Includi --skip-prompt se non vuoi che ti venga richiesto.

Visualizza lo stato della rotazione di una chiave

Per visualizzare lo stato della rotazione di una chiave:

gkectl update credentials ksa-signing-key status \
    --config USER_CLUSTER_CONFIG \
    --kubeconfig ADMIN_CLUSTER_KUBECONIFG

Se la rotazione delle chiavi è già stata completata, viene visualizzato un messaggio simile al seguente:

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

Se la rotazione della chiave di firma dell'Arabia Saudita è ancora in corso, verrà visualizzato un messaggio simile a questo:

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