Questa pagina spiega come ruotare le credenziali del cluster GKE. Pianificare e ruotare regolarmente le credenziali del cluster è fondamentale per mantenere i cluster in uno stato integro. In questa pagina imparerai a eseguire la rotazione delle credenziali. Scopri anche le best practice per pianificare rotazioni regolari.
Questa pagina è rivolta agli esperti di sicurezza responsabili del ciclo di vita delle credenziali nei cluster GKE. Per scoprire di più sui ruoli comuni e sulle attività di esempio a cui facciamo riferimento nei contenuti di Trusted Cloud by S3NS , consulta Ruoli utente e attività comuni di GKE Enterprise.
Informazioni sulle rotazioni delle credenziali in GKE
L'autorità di certificazione (CA) radice del cluster ha una durata limitata. Quando la CA
scade, tutte le credenziali firmate dalla CA non sono più valide,
inclusi il certificato client del cluster (dal campo API MasterAuth
), la
chiave e il certificato per il server API e i certificati client kubelet.
La durata delle credenziali del cluster dipende dalla data di creazione del cluster o dall'ultima rotazione delle credenziali. Per maggiori dettagli, controlla la durata delle credenziali.
Puoi eseguire una rotazione delle credenziali per revocare ed emettere nuove credenziali per il tuo cluster. Questa operazione ruota la chiave privata della CA del cluster e richiede la ricreazione dei nodi per utilizzare nuove credenziali. Devi avviare e completare una rotazione delle credenziali per il tuo cluster prima della scadenza delle credenziali attuali. Oltre alla rotazione delle credenziali, viene eseguita anche una rotazione dell'IP.
Quando eseguire una rotazione delle credenziali
Devi eseguire regolarmente le rotazioni delle credenziali e in anticipo rispetto alla data di scadenza delle credenziali attuali. La rotazione delle credenziali richiede la ricreazione del nodo per utilizzare le nuove credenziali, il che potrebbe interrompere i carichi di lavoro in esecuzione. Pianifica i periodi di manutenzione ed esegui le rotazioni durante le finestre di manutenzione per evitare tempi di inattività imprevisti del carico di lavoro o client API che non rispondono al di fuori del cluster.
Per scoprire di più su come la disponibilità della manutenzione influisce sulla rotazione delle credenziali del cluster e sul tipo di interruzione che si verifica nel cluster durante i passaggi di una rotazione, consulta la riga relativa alla rotazione delle credenziali nella tabella delle modifiche manuali che ricreano i nodi utilizzando una strategia di upgrade dei nodi e rispettando le norme di manutenzione. GKE dipende dalla disponibilità delle risorse per l'aggiornamento dei nodi. Per saperne di più sugli aggiornamenti dei nodi, consulta Pianificare le interruzioni dell'aggiornamento dei nodi.
Durata delle credenziali del cluster
La durata delle credenziali del cluster dipende in genere da quando è stato creato il cluster o da quando le credenziali sono state ruotate più di recente:
- I cluster creati prima di ottobre 2021 hanno una durata di 5 anni.
- I cluster creati dopo ottobre 2021 circa hanno una durata della CA di 30 anni.
- I cluster ruotati dopo circa gennaio 2022 hanno una durata della CA di 30 anni.
Trovare cluster con credenziali in scadenza o scadute
Se le credenziali del cluster scadranno nei prossimi 180 giorni o sono già scadute, GKE fornisce indicazioni con un approfondimento e un consiglio per spiegare che devi eseguire una rotazione delle credenziali per questo cluster. Queste indicazioni includono la data di scadenza
delle credenziali. Puoi visualizzare queste indicazioni nella console Trusted Cloud . In alternativa, puoi visualizzare queste indicazioni con gcloud CLI o l'API Recommender, specificando il sottotipo CLUSTER_CA_EXPIRATION
.
Se ricevi un approfondimento e un consiglio per un cluster, devi eseguire una rotazione delle credenziali oppure GKE avvia automaticamente una rotazione delle credenziali entro 30 giorni dalla data di scadenza dell'attuale CA, come spiegato nella sezione successiva. Una volta completata la rotazione delle credenziali, possono essere necessarie fino a 36 ore prima che l'approfondimento e il consiglio vengano risolti.
Policy di automazione GKE per prevenire interruzioni del cluster
Per evitare che il cluster entri in uno stato non recuperabile alla scadenza delle credenziali attuali, GKE avvia automaticamente una rotazione delle credenziali entro 30 giorni dalla data di scadenza dell'autorità di certificazione attuale. Ad esempio, la CA del cluster scade il 6 gennaio 2024 e non esegui la rotazione delle credenziali entro il 5 dicembre 2023. GKE avvia una rotazione automatica a partire dal 7 dicembre 2023 e tenta di completarla sette giorni dopo l'inizio dell'operazione. Questa rotazione automatica è un tentativo di ultima istanza per evitare un'interruzione del cluster e presenta le seguenti considerazioni:
- Le rotazioni automatiche in genere rispettano i periodi di manutenzione o le esclusioni dalla manutenzione, tuttavia GKE si riserva il diritto di eseguire passaggi entro 30 giorni dalla scadenza per ruotare le credenziali, indipendentemente dalla disponibilità della manutenzione. Entro 30 giorni, GKE ignora la disponibilità della manutenzione per il primo passaggio, ovvero l'avvio della rotazione.
- Se la disponibilità della manutenzione impedisce inizialmente a GKE di completare la rotazione, GKE continua a tentare di completarla fino alla data di scadenza delle credenziali, dopodiché il cluster diventa irrecuperabile.
- Al termine della rotazione delle credenziali, quelle in scadenza vengono revocate. I client API Kubernetes all'esterno del cluster, come kubectl negli ambienti locali, non funzioneranno finché non configuri i client in modo che utilizzino le nuove credenziali.
- La ricreazione dei pool di nodi durante la rotazione potrebbe causare interruzioni ai carichi di lavoro in esecuzione.
Prima di iniziare
Prima di iniziare, assicurati di aver eseguito le seguenti operazioni:
- Attiva l'API Google Kubernetes Engine. Attiva l'API Google Kubernetes Engine
- Se vuoi utilizzare Google Cloud CLI per questa attività,
installala e poi
inizializzala. Se hai già installato gcloud CLI, scarica l'ultima versione eseguendo
gcloud components update
.
Controllare la durata delle credenziali
Ti consigliamo di controllare la durata delle credenziali prima e dopo aver eseguito una rotazione delle credenziali, in modo da conoscere la validità della CA radice del cluster.
Per controllare la durata delle credenziali per un singolo cluster, esegui questo comando:
gcloud container clusters describe CLUSTER_NAME \
--location LOCATION \
--format "value(masterAuth.clusterCaCertificate)" \
| base64 --decode \
| openssl x509 -noout -dates
L'output è simile al seguente:
notBefore=Mar 17 16:45:34 2023 GMT
notAfter=Mar 9 17:45:34 2053 GMT
Se esegui questo comando dopo aver avviato una rotazione delle credenziali, l'output è la durata del certificato originale. Questo certificato rimane valido fino al completamento della rotazione. Dopo aver completato la rotazione, l'output è la durata del nuovo certificato.
Per controllare la durata delle credenziali per tutti i cluster di un progetto, esegui questo comando:
gcloud container clusters list --project PROJECT_ID \
--format="value(name,masterAuth.clusterCaCertificate)" | \
while read -r cluster ca; do \
expiry_date=$(echo -e "$ca" | base64 --decode | openssl x509 -noout -enddate | awk -F'=' '{print $2}'); \
printf "%-40s | %s\n" "$cluster" "$expiry_date" ; \
done | \
column -t | \
awk -F',' 'BEGIN{print "Cluster Name | Certificate Expiry Date"} {print}'
Eseguire una rotazione delle credenziali
La rotazione delle credenziali prevede i seguenti passaggi:
- Avvia la rotazione: il control plane inizia a gestire le richieste su un nuovo indirizzo IP oltre all'indirizzo IP originale. Le nuove credenziali vengono rilasciate ai carichi di lavoro e al control plane.
- Ricrea nodi: GKE ricrea i nodi del cluster in modo che utilizzino il nuovo indirizzo IP e le nuove credenziali, rispettando la disponibilità dei periodi di manutenzione e delle esclusioni. Puoi anche ricreare manualmente i nodi eseguendo un upgrade della versione del nodo alla stessa versione GKE già in esecuzione sui nodi.
- Aggiorna i client API: dopo aver avviato la rotazione, aggiorna tutti i client API del cluster, ad esempio le macchine di sviluppo che utilizzano
kubectl
, per comunicare con il piano di controllo utilizzando il nuovo indirizzo IP. - Completa la rotazione: il control plane interrompe la gestione del traffico tramite l'indirizzo IP originale. Le vecchie credenziali vengono revocate, incluse quelle statiche esistenti per i service account Kubernetes.
Quando avvii una rotazione delle credenziali o quando GKE avvia automaticamente una rotazione, GKE esegue automaticamente questi passaggi, incluso il tentativo di completare la rotazione. In ogni passaggio, se la scadenza del cluster è superiore a 30 giorni, GKE rispetta la disponibilità della manutenzione. Durante le rotazioni automatiche prima della scadenza del cluster, GKE si riserva il diritto di ignorare la disponibilità della manutenzione per impedire che il cluster diventi irrecuperabile. Entro 30 giorni, GKE ignora la disponibilità della manutenzione per il primo passaggio, ovvero l'avvio della rotazione.
Se non completi una rotazione delle credenziali entro sette giorni dall'inizio, GKE tenta di completare la rotazione per te. Se alcuni nodi del cluster utilizzano ancora le credenziali precedenti, l'operazione di completamento automatico non va a buon fine, ma GKE continua a tentare il completamento fino alla scadenza delle credenziali e il cluster diventa irrecuperabile. Devi pianificare di monitorare e completare manualmente tutte le rotazioni delle credenziali che avvii. Per ignorare i blocchi della disponibilità della manutenzione, esegui i comandi in ciascuna delle sezioni seguenti per attivare manualmente queste fasi del processo di rotazione. Non fare affidamento sul completamento automatico, che è una misura basata sul massimo impegno.
Avviare la rotazione
Per avviare una rotazione delle credenziali, esegui questo comando:
gcloud container clusters update CLUSTER_NAME \
--location LOCATION \
--start-credential-rotation
Questo comando crea nuove credenziali, le invia al piano di controllo e configura il piano di controllo in modo che utilizzi due indirizzi IP: l'indirizzo IP originale e un nuovo indirizzo IP.
Ricrea i nodi
Dopo aver riconfigurato il server API per la pubblicazione su un nuovo indirizzo IP, GKE aggiorna automaticamente i nodi in modo che utilizzino il nuovo indirizzo IP e le nuove credenziali se è disponibile la manutenzione. GKE esegue l'upgrade di tutti i nodi alla stessa versione di GKE già in esecuzione, ricreandoli. Per ulteriori informazioni, consulta la sezione Aggiornamenti del pool di nodi.
Per impostazione predefinita, GKE completa automaticamente le rotazioni delle credenziali sette giorni dopo l'inizio dell'operazione. Se una periodo di manutenzione attiva o un'esclusione nel cluster impedisce a GKE di ricreare alcuni nodi durante questo periodo di sette giorni, la rotazione delle credenziali inizialmente non viene completata. Tuttavia, GKE continua a tentare di ricreare i nodi e completare la rotazione finché la disponibilità della manutenzione non consente a GKE di procedere. Durante eventi importanti come Trusted Cloud Next, GKE potrebbe anche mettere in pausa le ricreazioni automatiche dei nodi in modo da non subire interruzioni.
Se utilizzi esclusioni dalla manutenzione o finestre di manutenzione che potrebbero comportare un errore di rotazione, esegui l'upgrade manuale del cluster per forzare la ricreazione dei nodi:
gcloud container clusters upgrade CLUSTER_NAME \ --location=LOCATION \ --cluster-version=VERSION
Sostituisci
VERSION
con la stessa versione di GKE già utilizzata dal cluster.Per maggiori informazioni, consulta Modifiche manuali che rispettano le policy di manutenzione di GKE.
Controllare l'avanzamento della ricreazione del pool di nodi
Per monitorare l'operazione di rotazione, esegui questo comando:
gcloud container operations list \ --filter="operationType=UPGRADE_NODES AND status=RUNNING" \ --format="value(name)"
Questo comando restituisce l'ID operazione dell'operazione di upgrade del nodo.
Per eseguire il polling dell'operazione, trasmetti l'ID operazione al seguente comando:
gcloud container operations wait OPERATION_ID
I pool di nodi vengono ricreati uno alla volta e ognuno ha la propria operazione. Se hai più node pool, utilizza queste istruzioni per eseguire il polling di ogni operazione.
Aggiornare i client API
Dopo aver avviato la rotazione delle credenziali, devi aggiornare tutti i client API all'esterno del cluster (ad esempio kubectl
sulle macchine degli sviluppatori) in modo che utilizzino le nuove credenziali e puntino al nuovo indirizzo IP del control plane.
Per aggiornare i client API, esegui questo comando per ogni client:
gcloud container clusters get-credentials CLUSTER_NAME \
--location LOCATION
Aggiorna le credenziali del service account Kubernetes
Se utilizzi credenziali statiche per ServiceAccount nel tuo cluster, passa a credenziali di breve durata. Il completamento della rotazione invalida le credenziali ServiceAccount esistenti. Se non vuoi utilizzare credenziali di breve durata, assicurati di ricreare le credenziali statiche per tutti i ServiceAccount nel cluster dopo aver completato la rotazione.
Aggiorna gli indirizzi IP hardcoded e le regole firewall
Se hai codificato l'indirizzo IP del control plane nel tuo ambiente o se hai regole firewall che hanno come target l'indirizzo IP del control plane, aggiorna gli indirizzi con il nuovo indirizzo IP. Se completi la rotazione senza aggiornare gli indirizzi IP nelle applicazioni e nelle regole firewall, queste risorse potrebbero subire interruzioni quando GKE smette di pubblicare contenuti sull'indirizzo IP del piano di controllo precedente.
Completa la rotazione
Dopo aver aggiornato i client API all'esterno del cluster, completa la rotazione per configurare il piano di controllo in modo che utilizzi solo le nuove credenziali e il nuovo indirizzo IP:
gcloud container clusters update CLUSTER_NAME \
--location=LOCATION \
--complete-credential-rotation
Se la rotazione delle credenziali non viene completata e restituisce un messaggio di errore simile al seguente, consulta Errore 400: il pool di nodi richiede la ricreazione:
ERROR: (gcloud.container.clusters.update) ResponseError: code=400, message=Node pool "test-pool-1" requires recreation.
GKE rispetta la disponibilità della manutenzione quando completa automaticamente la rotazione, ma potrebbe ignorare questa disponibilità entro 30 giorni dalla scadenza per evitare che il cluster diventi irrecuperabile. Se il completamento della rotazione non va a buon fine inizialmente e la rotazione è iniziata almeno sette giorni fa, GKE tenta di completare la rotazione fino alla data di scadenza delle credenziali, dopodiché il cluster diventa irrecuperabile.
Passaggi successivi
- Scopri di più sulla protezione dei metadati del cluster.
- Scopri di più sull'oggetto Kubernetes Secret.
- Scopri di più sulla rotazione dell'indirizzo IP.