Utilizzo di nodi GKE schermati

Questa pagina mostra come utilizzare la funzionalità Shielded GKE Nodes. Shielded GKE Nodes fornisce un'identità e un'integrità dei nodi forti 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

Shielded GKE Nodes si basa su Shielded VM di Compute Engine . Senza Shielded GKE Nodes, un utente 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 piano di controllo GKE verifica crittograficamente 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.
  • Viene eseguito il provisioning di un certificato per il kubelet sul nodo su cui è in esecuzione.

In questo modo, anche se un utente malintenzionato è in grado di esfiltrare le credenziali di bootstrap del nodo, la sua capacità di simulare l'identità di un nodo nel cluster è limitata. Le credenziali di bootstrap, contenute nei metadati dei nodi (TPM_BOOTSTRAP_KEY), hanno solo la possibilità di creare richieste di firma dei certificati. Questi certificati non verranno approvati automaticamente dal piano di controllo e non diventeranno certificati dei nodi di lavoro a meno che non vengano soddisfatte le condizioni elencate in precedenza e la CSR non contenga un'attestazione dal vTPM del nodo.

I nodi del piano di controllo del cluster GKE utilizzano sempre Shielded GKE Nodes, anche se disabiliti la funzionalità sul cluster. L'abilitazione o la disabilitazione di Shielded GKE Nodes influisce solo sul fatto che i nodi worker che eseguono i carichi di lavoro utilizzino la funzionalità.

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 maggiori dettagli, consulta la pagina dei prezzi di Cloud Logging.

Prima di iniziare

Prima di iniziare, assicurati di aver eseguito le seguenti attività:

  • Abilita l'API Google Kubernetes Engine.
  • Abilita l'API Google Kubernetes Engine
  • Se vuoi 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 gcloud components update comando. 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 abilitato utilizzando il gcloud CLI o la Google Cloud console.

gcloud

Quando crei un nuovo cluster, specifica l'opzione --enable-shielded-nodes:

gcloud container clusters create CLUSTER_NAME \
    --enable-shielded-nodes

Console

  1. Nella Google Cloud console, vai alla pagina Crea un cluster Kubernetes.

    Vai a Crea un cluster Kubernetes

  2. Nel riquadro di navigazione, in Cluster, fai clic su Sicurezza.

  3. Seleziona la casella di controllo Abilita Shielded GKE Nodes.

  4. Configura il cluster come preferisci.

  5. Fai clic su Crea.

Per maggiori dettagli sulla creazione dei cluster, consulta Creazione di un cluster.

Abilitazione di Shielded GKE Nodes in un cluster esistente

Puoi abilitare Shielded GKE Nodes in un cluster esistente utilizzando il Google Cloud CLI o la Google Cloud console.

Come GKE abilita Shielded GKE Nodes

Dopo aver abilitato Shielded GKE Nodes, i nodi worker vengono ricreati come Shielded VM. I nodi del cluster vengono ricreati in sequenza per ridurre al minimo i tempi di inattività.

Dopo aver abilitato Shielded GKE Nodes, GKE aggiorna il cluster con i seguenti passaggi:

Per i dettagli su questa modifica specifica, trova la riga corrispondente nella tabella delle modifiche manuali che ricreano i nodi utilizzando una strategia di upgrade dei nodi e rispettando le policy di manutenzione. Per saperne di più sugli aggiornamenti dei nodi, consulta Pianificazione delle interruzioni degli aggiornamenti 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

  1. Vai alla pagina Google Kubernetes Engine nella Google Cloud console.

    Vai a Google Kubernetes Engine

  2. Fai clic sul nome del cluster da modificare.

  3. In Sicurezza, nel campo Shielded GKE Nodes, fai clic su Modifica Shielded GKE Nodes.

  4. Seleziona la casella di controllo Abilita Shielded GKE Nodes.

  5. Fai clic su Salva modifiche.

Verifica che Shielded GKE Nodes sia abilitato

Puoi verificare che il cluster utilizzi Shielded GKE Nodes con Google Cloud CLI o la Google Cloud console.

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 Shielded GKE Nodes:

  1. Vai alla pagina Google Kubernetes Engine nella Google Cloud console.

    Vai a Google Kubernetes Engine

  2. Fai clic sul nome del cluster che vuoi ispezionare.

  3. In Sicurezza, nel campo Shielded GKE Nodes, verifica che Shielded GKE Nodes sia abilitato.

Puoi anche monitorare l'integrità delle Shielded VM sottostanti dei nodi. Per la procedura, consulta Monitoraggio dell'integrità su istanze Shielded VM .

Disabilitazione di Shielded GKE Nodes

Puoi disabilitare Shielded GKE Nodes con Google Cloud CLI o la Google Cloud console.

Come GKE disabilita Shielded GKE Nodes

Dopo aver disabilitato Shielded GKE Nodes, GKE aggiorna il cluster con i seguenti passaggi:

Per i dettagli su questa modifica specifica, trova la riga corrispondente nella tabella delle modifiche manuali che ricreano i nodi utilizzando una strategia di upgrade dei nodi e rispettando le policy di manutenzione. Per saperne di più sugli aggiornamenti dei nodi, consulta Pianificazione delle interruzioni degli aggiornamenti 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

  1. Vai alla pagina Google Kubernetes Engine nella Google Cloud console.

    Vai a Google Kubernetes Engine

  2. Fai clic sul nome del cluster da modificare.

  3. In Sicurezza, nel campo Shielded GKE Nodes, fai clic su Modifica Shielded GKE Nodes.

  4. Deseleziona la casella di controllo Abilita Shielded GKE Nodes.

  5. Fai clic su Salva modifiche.

Integrità dei nodi

Facoltativamente, puoi configurare i controlli dell'integrità dei nodi sui node pool per fornire una protezione avanzata da rootkit e bootkit per i nodi. Shielded GKE Nodes, l'avvio protetto e il monitoraggio dell'integrità sono funzionalità indipendenti che possono essere abilitate o disabilitate singolarmente.

Avvio protetto

L'avvio protetto è un'impostazione 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 è disabilitato 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 kernel di terze parti non firmati in questi nodi.
  • L'abilitazione 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 i 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 kernel.

Per abilitare l'avvio protetto, utilizza Google Cloud CLI o la Google Cloud console.

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 quando crei un cluster o pool di nodi con l'opzione --no-shielded-secure-boot.

Console

Per abilitare l'avvio protetto durante la creazione di un pool di nodi:

  1. Vai alla pagina Google Kubernetes Engine nella Google Cloud console.

    Vai a Google Kubernetes Engine

  2. Fai clic sul nome del cluster da modificare.

  3. Fai clic su Aggiungi pool di nodi.

  4. Nel menu di navigazione, fai clic su Sicurezza.

  5. Nella sezione Opzioni per nodi schermati, seleziona la casella di controllo Abilita l'avvio protetto.

  6. Fai clic su Crea.

Monitoraggio dell'integrità

Il monitoraggio dell'integrità è un'impostazione del pool di nodi abilitata per impostazione predefinita in GKE. Puoi disabilitare il monitoraggio dell'integrità con Google Cloud CLI o Google Cloud la console.

gcloud

Per disabilitare 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 abilitarlo esplicitamente quando crei un pool di nodi con l'opzione --shielded-integrity-monitoring.

Console

Per disabilitare il monitoraggio dell'integrità durante la creazione di un pool di nodi:

  1. Vai alla pagina Google Kubernetes Engine nella Google Cloud console.

    Vai a Google Kubernetes Engine

  2. Fai clic sul nome del cluster da modificare.

  3. Fai clic su Aggiungi pool di nodi.

  4. Nel riquadro di navigazione, fai clic su Sicurezza.

  5. In Opzioni per nodi schermati, deseleziona la casella di controllo Abilita il monitoraggio dell'integrità.

Passaggi successivi