Questa pagina mostra come utilizzare la funzionalità Shielded GKE Nodes. I nodi GKE schermati forniscono un'identità e un'integrità del nodo solide e verificabili per aumentare la sicurezza dei nodi Google Kubernetes Engine (GKE).
Per i cluster GKE Autopilot, la funzionalità Shielded GKE Nodes è abilitata per impostazione predefinita e non può essere sostituita. Per i cluster GKE Standard, la funzionalità Shielded GKE Nodes è abilitata per impostazione predefinita, ma può essere sostituita.
Informazioni su Shielded GKE Nodes
I nodi Shielded GKE si basano sulle Shielded VM di Compute Engine. Senza Shielded GKE Nodes, un malintenzionato può sfruttare una vulnerabilità in un pod per esfiltrare le credenziali di bootstrap e simulare l'identità dei nodi nel cluster, consentendo agli utenti malintenzionati di accedere ai secret del cluster. Quando Shielded GKE Nodes è abilitato, il control plane GKE verifica in modo crittografico che:
- Ogni nodo del cluster è una macchina virtuale in esecuzione nel data center di Google.
- Ogni nodo fa parte del gruppo di istanze gestite (MIG) di cui è stato eseguito il provisioning per il cluster.
- Al kubelet viene fornito un certificato per il nodo su cui è in esecuzione.
In questo modo, un utente malintenzionato non può simulare l'identità di un nodo nel cluster, anche se è in grado di esfiltrare le credenziali di bootstrap del nodo. Le
credenziali di bootstrap, contenute nei metadati del nodo
(TPM_BOOTSTRAP_KEY), hanno solo la possibilità di creare richieste di firma
di certificati. Questi certificati non verranno approvati automaticamente dal control
plane e non diventeranno certificati dei nodi di lavoro a meno che non vengano soddisfatte le condizioni elencate in precedenza e la CSR contenga un'attestazione dal vTPM del nodo. Se vuoi, puoi anche
impedire a kubelet sui nodi di creare oggetti Node nel cluster
attivando la creazione di nodi del control plane
(anteprima), che
limita l'impatto anche se un nodo viene compromesso dopo l'approvazione di una richiesta di firma del certificato.
I nodi del control plane del cluster GKE utilizzano sempre Shielded GKE Nodes, anche se disabiliti la funzionalità sul cluster. L'attivazione o la disattivazione di Shielded GKE Nodes influisce solo sull'utilizzo della funzionalità da parte dei nodi worker che eseguono i tuoi workload.
Prezzi
Non sono previsti costi aggiuntivi per l'esecuzione di Shielded GKE Nodes. Tuttavia, Shielded GKE Nodes genera circa 0,5 KB di log in più all'avvio rispetto ai nodi standard. Per i dettagli, consulta la pagina dei prezzi di Cloud Logging.
Prima di iniziare
Prima di iniziare, assicurati di aver eseguito le seguenti operazioni:
- Abilita l'API Google Kubernetes Engine. Abilita l'API Google Kubernetes Engine
- Per utilizzare Google Cloud CLI per questa attività,
installala e poi
inizializza
gcloud CLI. Se hai già installato gcloud CLI, scarica l'ultima
versione eseguendo il comando
gcloud components update. Le versioni precedenti di gcloud CLI potrebbero non supportare l'esecuzione dei comandi in questo documento.
Abilitazione di Shielded GKE Nodes in un nuovo cluster
Puoi creare un nuovo cluster con Shielded GKE Nodes abilitati utilizzando gcloud CLI o la console Google Cloud .
gcloud
Quando crei un nuovo cluster, specifica l'opzione --enable-shielded-nodes:
gcloud container clusters create CLUSTER_NAME \
--enable-shielded-nodes
Console
Nella console Google Cloud , vai alla pagina Crea un cluster Kubernetes.
Nel riquadro di navigazione, fai clic su Impostazioni avanzate.
Nella riga Nodi schermati, seleziona la casella di controllo Attivazione rapida.
Configura il cluster come preferisci.
Fai clic su Crea.
Per maggiori dettagli sulla creazione di cluster, consulta Creare un cluster.
Abilitazione di Shielded GKE Nodes in un cluster esistente
Puoi abilitare i nodi GKE schermati in un cluster esistente utilizzando Google Cloud CLI o la console Google Cloud .
In che modo GKE abilita Shielded GKE Nodes
Dopo aver attivato Shielded GKE Nodes, i nodi worker vengono ricreati come Shielded VM. I nodi del cluster vengono ricreati in modo sequenziale per ridurre al minimo i tempi di inattività.
Dopo aver abilitato Shielded GKE Nodes, GKE aggiorna il cluster con i seguenti passaggi:
- GKE ricrea immediatamente il control plane, ignorando la disponibilità per la manutenzione.
- GKE ricrea i nodi worker come Shielded VM, rispettando la disponibilità della manutenzione. GKE utilizza gli upgrade surge� per aggiornare ciascun node pool. Questo dipende dalla disponibilità delle risorse. La disabilitazione degli upgrade automatici dei nodi non impedisce questa modifica.
Per informazioni dettagliate su questa modifica specifica, trova la riga corrispondente nella tabella Modifiche manuali che ricreano i nodi utilizzando una strategia di upgrade dei nodi e rispettando le norme di manutenzione. Per saperne di più sugli aggiornamenti dei nodi, consulta Pianificazione delle interruzioni dell'aggiornamento dei nodi.
Abilita Shielded GKE Nodes
gcloud
Quando aggiorni il cluster, specifica l'opzione --enable-shielded-nodes:
gcloud container clusters update CLUSTER_NAME \
--enable-shielded-nodes
Console
Vai alla pagina Google Kubernetes Engine nella console Google Cloud .
Fai clic sul nome del cluster da modificare.
In Sicurezza, nel campo Nodi GKE schermati, fai clic su edit Modifica nodi GKE schermati.
Seleziona la casella di controllo Abilita Shielded GKE Nodes.
Fai clic su Salva modifiche.
Verifica che Shielded GKE Nodes sia abilitato
Puoi verificare che il tuo cluster utilizzi Shielded GKE Nodes con Google Cloud CLI o la console Google Cloud .
gcloud
Descrivi il cluster:
gcloud container clusters describe CLUSTER_NAME
Se Shielded GKE Nodes è abilitato, l'output del comando includerà queste righe:
shieldedNodes:
enabled: true
Console
Per verificare che un cluster utilizzi i nodi GKE schermati:
Vai alla pagina Google Kubernetes Engine nella console Google Cloud .
Fai clic sul nome del cluster che vuoi ispezionare.
In Sicurezza, nel campo Nodi GKE schermati, verifica che i nodi GKE schermati siano abilitati.
Puoi anche monitorare l'integrità delle Shielded VM sottostanti dei tuoi nodi. Per la procedura, consulta Monitoraggio dell'integrità sulle istanze Shielded VM.
Disabilitazione di Shielded GKE Nodes
Puoi disattivare i nodi GKE Shielded con Google Cloud CLI o la console Google Cloud .
In che modo GKE disabilita Shielded GKE Nodes
Dopo aver disabilitato Shielded GKE Nodes, GKE aggiorna il cluster con i seguenti passaggi:
- GKE ricrea immediatamente il control plane, ignorando la disponibilità per la manutenzione.
- GKE ricrea i nodi worker come VM non protette, rispettando la disponibilità della manutenzione. GKE utilizza gli upgrade con capacità aggiuntiva per aggiornare ciascuno dei node pool. Questo dipende dalla disponibilità delle risorse. La disabilitazione degli upgrade automatici dei nodi non impedisce questa modifica.
Per informazioni dettagliate su questa modifica specifica, trova la riga corrispondente nella tabella Modifiche manuali che ricreano i nodi utilizzando una strategia di upgrade dei nodi e rispettando le norme di manutenzione. Per saperne di più sugli aggiornamenti dei nodi, consulta Pianificazione delle interruzioni dell'aggiornamento dei nodi.
Disabilita Shielded GKE Nodes
gcloud
Quando aggiorni il cluster, specifica l'opzione --no-enable-shielded-nodes:
gcloud container clusters update CLUSTER_NAME \
--no-enable-shielded-nodes
Console
Vai alla pagina Google Kubernetes Engine nella console Google Cloud .
Fai clic sul nome del cluster da modificare.
In Sicurezza, nel campo Nodi GKE schermati, fai clic su edit Modifica nodi GKE schermati.
Deseleziona la casella di controllo Abilita Shielded GKE Nodes.
Fai clic su Salva modifiche.
Integrità dei nodi
Se vuoi, puoi configurare i controlli dell'integrità dei nodi sui pool di nodi per fornire una protezione avanzata da rootkit e bootkit per i tuoi nodi. Shielded GKE Nodes, Avvio protetto e Monitoraggio dell'integrità sono funzionalità indipendenti che possono essere abilitate o disabilitate singolarmente.
Avvio protetto
L'avvio protetto è un'impostazione del pool di nodi che autentica i componenti di avvio delle VM dei nodi, come il kernel e il bootloader, durante il processo di avvio. L'avvio protetto è disattivato per impostazione predefinita nei node pool.
Prima di abilitare l'avvio protetto nei node pool, tieni presente quanto segue:
- L'abilitazione dell'avvio protetto nei nodi Ubuntu impedisce il caricamento dei moduli del kernel di terze parti non firmati in questi nodi.
- L'attivazione dell'avvio protetto nei nodi Container-Optimized OS non ha alcun effetto sul caricamento dei moduli kernel perché le immagini dei nodi Container-Optimized OS controllano la possibilità di caricare moduli kernel di terze parti separatamente dall'avvio protetto. Se vuoi modificare questa impostazione per i nodi Container-Optimized OS, Configura il caricamento sicuro dei moduli del kernel.
Per abilitare l'avvio protetto, utilizza Google Cloud CLI o la console Google Cloud .
gcloud
Per abilitare l'avvio protetto durante la creazione di un cluster:
gcloud container clusters create CLUSTER_NAME \
--shielded-secure-boot
Per abilitare l'avvio protetto durante la creazione di un pool di nodi:
gcloud container node-pools create POOL_NAME \
--shielded-secure-boot
L'avvio protetto è disattivato per impostazione predefinita. Puoi disabilitarlo esplicitamente durante la creazione di un cluster o di pool di nodi con l'opzione --no-shielded-secure-boot.
Console
Per abilitare l'avvio protetto durante la creazione di un pool di nodi:
Vai alla pagina Google Kubernetes Engine nella console Google Cloud .
Fai clic sul nome del cluster da modificare.
Fai clic su add_box Aggiungi pool di nodi.
Nel menu di navigazione, fai clic su Sicurezza.
Nella sezione Opzioni per nodi schermati, seleziona la casella di controllo Abilita l'avvio protetto.
Fai clic su Crea.
Monitoraggio dell'integrità
Il monitoraggio dell'integrità è un'impostazione del pool di nodi abilitata per impostazione predefinita su GKE. Puoi disattivare il monitoraggio dell'integrità con Google Cloud CLI o la console Google Cloud .
gcloud
Per disattivare il monitoraggio dell'integrità per i componenti di sistema durante la creazione di un pool di nodi:
gcloud container node-pools create POOL_NAME \
--no-shielded-integrity-monitoring
Il monitoraggio dell'integrità è abilitato per impostazione predefinita. Puoi attivarlo esplicitamente durante la creazione di un pool di nodi con l'opzione --shielded-integrity-monitoring.
Console
Per disattivare il monitoraggio dell'integrità durante la creazione di un pool di nodi:
Vai alla pagina Google Kubernetes Engine nella console Google Cloud .
Fai clic sul nome del cluster da modificare.
Fai clic su add_box Aggiungi pool di nodi.
Nel riquadro di navigazione, fai clic su Sicurezza.
In Opzioni per nodi schermati, deseleziona la casella di controllo Abilita il monitoraggio dell'integrità.