Un service account di servizio (KSA) fornisce un'identità per i processi eseguiti in un pod.
I service account Kubernetes sono diversi dai Google Cloud service account che le applicazioni utilizzano per effettuare chiamate autorizzate alle API Google Cloud .
Google Distributed Cloud utilizza una chiave crittografica privata per firmare i token KSA che rilascia ai 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 Google Cloud le API, 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 privata e pubblica. 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, puoi ruotare la coppia di chiavi privata/pubblica. 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 vincolati e token legacy
Un pod può utilizzare un token legacy o un token associato per l'autenticazione e l'autorizzazione quando chiama il server dell'API Kubernetes. I token vincolati hanno una durata limitata e vengono distribuiti ai pod utilizzando i volumi proiettati. I token legacy non scadono mai e vengono conservati nei secret di Kubernetes. Ti consigliamo i token vincolati perché sono più sicuri.
Sia i token associati sia i token legacy vengono aggiornati durante la rotazione di una chiave.
Limitazioni
- Se hai creato il cluster con
enableAdvancedCluster
impostato sutrue
(obbligatorio per configurare i domini di topologia), rotazione della chiave non è supportata.
Avviare una rotazione della chiave
Prima di iniziare una rotazione della chiave, tieni presente questi punti:
Durante una rotazione della chiave, non puoi avviare un'altra rotazione della chiave, una rotazione dell'autorità di certificazione o un aggiornamento del cluster.
La rotazione della chiave non può essere sospesa o eseguita il rollback. Tutte le chiavi precedenti vengono eliminate.
La rotazione della chiave elimina i nodi del cluster esistenti e ne crea di nuovi.
Per avviare una 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.
Visualizzare lo stato di una rotazione della chiave
Per visualizzare lo stato di una rotazione della chiave:
gkectl update credentials ksa-signing-key status \ --config USER_CLUSTER_CONFIG \ --kubeconfig ADMIN_CLUSTER_KUBECONIFG
Se la rotazione della chiave è già stata completata, visualizzerai un messaggio simile a questo:
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 KSA è ancora in corso, vedrai un messaggio simile a questo:
State of KSASigningKeyRotation with KSASigningKeyVersion 2 is - status: False, reason: KSASigningKeyRotationProcessedReason, message:{"tokenVersion":2,"privateKeyVersion":2,"publicKeyVersions":[1,2]}