Un account di servizio Kubernetes (KSA) fornisce un'identità per i processi eseguiti in un pod.
Gli account di servizio Kubernetes sono diversi dagli account di servizio Google Cloud utilizzati dalle applicazioni per effettuare chiamate autorizzate alle API Google Cloud.
Google Distributed Cloud utilizza una chiave di crittografia privata per firmare i token dell'Arabia Saudita che emette nei pod. Utilizza la chiave pubblica corrispondente per convalidare i token quando i pod inviano richieste al server API Kubernetes. Quando un pod utilizza Workload Identity per chiamare le API di Google Cloud, Google Cloud utilizza la stessa chiave pubblica per autenticare l'identità del pod.
Durante la creazione del cluster utente, Google Distributed Cloud genera le chiavi private e pubbliche. Inoltre, durante la creazione del cluster, Google Distributed Cloud registra il cluster in un parco risorse e fornisce la chiave pubblica a Google Cloud.
In un secondo momento potrai ruotare la coppia di chiavi privata/pubblica. La rotazione genera 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 offre la nuova chiave pubblica.
Token associati e token legacy
Un pod può utilizzare un token legacy o un token associato per l'autenticazione e l'autorizzazione quando chiama il server API Kubernetes. I token associati hanno una durata limitata e vengono distribuiti ai pod utilizzando volumi proiettati. I token legacy non scadono mai e sono conservati in Secret di Kubernetes. Ti consigliamo i token associati perché sono più sicuri.
I token associati e i token legacy vengono aggiornati durante una rotazione della chiave.
Avvia la rotazione della chiave
Prima di avviare una rotazione della chiave, considera questi punti:
Durante una rotazione della chiave, non puoi avviare un'altra rotazione della chiave, la rotazione dell'autorità di certificazione o l'aggiornamento del cluster.
La rotazione della chiave non può essere messa in pausa o rollback. Tutte le chiavi precedenti vengono eliminate.
Una rotazione della chiave 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 del file di configurazione del cluster utente
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 della chiave è già stata completata, verrà 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 al seguente:
State of KSASigningKeyRotation with KSASigningKeyVersion 2 is - status: False, reason: KSASigningKeyRotationProcessedReason, message:{"tokenVersion":2,"privateKeyVersion":2,"publicKeyVersions":[1,2]}