Panoramica dell'isolamento dei nodi

Questo documento spiega i vantaggi e i limiti dell'isolamento dei nodi in un cluster Kubernetes con air gap di Google Distributed Cloud (GDC). L'isolamento dei nodi con pool di nodi dedicati migliora la sicurezza del cluster, in quanto ti consente di controllare con precisione dove vengono eseguiti pod specifici all'interno del cluster.

L'isolamento dei workload offre alcuni vantaggi, ad esempio:

  • Rischio ridotto di attacchi di escalation dei privilegi nel tuo cluster Kubernetes.
  • Maggiore controllo sui pod che richiedono risorse aggiuntive.

Per questi casi, valuta la possibilità di isolare i workload dei container in node pool dedicati per un maggiore controllo e ottimizzazione. Assicurati di considerare anche le limitazioni per prendere una decisione informata sul costo di manutenzione aggiuntivo richiesto dall'isolamento dei nodi.

Questo documento è destinato a segmenti di pubblico come gli amministratori IT all'interno del gruppo di amministratori della piattaforma, responsabili della gestione dei node pool di un cluster Kubernetes, e agli sviluppatori di applicazioni all'interno del gruppo di operatori di applicazioni, responsabili della gestione dei carichi di lavoro dei container. Per ulteriori informazioni, consulta Segmenti di pubblico per la documentazione air-gapped di GDC.

Perché dovrei isolare i miei carichi di lavoro?

Sebbene non sia obbligatorio, dedicare i pool di nodi a workload di container specifici può prevenire potenziali problemi. Tuttavia, questo approccio richiede una maggiore gestione e spesso non è essenziale.

I cluster Kubernetes utilizzano carichi di lavoro con privilegi gestiti da GDC per abilitare funzionalità e caratteristiche specifiche del cluster, come la raccolta delle metriche. A questi carichi di lavoro vengono concesse autorizzazioni speciali per essere eseguiti correttamente nel cluster.

I carichi di lavoro di cui esegui il deployment sui nodi potrebbero essere compromessi da un'entità dannosa. L'esecuzione di questi carichi di lavoro insieme a carichi di lavoro con privilegi gestiti da GDC significa che un utente malintenzionato che esce da un container compromesso può utilizzare le credenziali del carico di lavoro con privilegi sul nodo per aumentare i privilegi nel cluster.

I pool di nodi dedicati sono utili anche quando devi pianificare pod che richiedono più risorse rispetto ad altri, ad esempio più memoria o più spazio su disco locale.

Puoi utilizzare i seguenti meccanismi per pianificare i tuoi workload in un pool di nodi dedicato:

  • Incompatibilità dei nodi: indica al tuo cluster Kubernetes di evitare di pianificare i workload su nodi specifici senza una tolleranza corrispondente.
  • Affinità dei nodi: indica al cluster Kubernetes di pianificare pod specifici su nodi dedicati.

L'isolamento dei nodi è un meccanismo di difesa in profondità avanzato che devi utilizzare solo insieme ad altre funzionalità di isolamento, come i service account e i container con privilegi minimi. L'isolamento dei nodi potrebbe non coprire tutti i percorsi di riassegnazione e non deve mai essere utilizzato come limite di sicurezza principale.

Come funziona l'isolamento dei nodi

Per implementare l'isolamento dei nodi per i tuoi workload, devi:

  1. Contamina ed etichetta un pool di nodi per i tuoi carichi di lavoro.

  2. Aggiorna i tuoi carichi di lavoro con la regola di tolleranza e affinità dei nodi corrispondente.

Questa guida presuppone che tu inizi con un pool di nodi nel cluster. L'utilizzo dell'affinità dei nodi in aggiunta ai taint dei nodi non è obbligatorio, ma lo consigliamo perché ti consente di avere un maggiore controllo sulla pianificazione.

Consigli e best practice

Dopo aver configurato l'isolamento dei nodi, ti consigliamo di procedere come segue:

  • Quando crei nuovi node pool, impedisci l'esecuzione della maggior parte dei carichi di lavoro gestiti da GDC su questi nodi aggiungendo la tua incompatibilità a questi node pool.

  • Ogni volta che esegui il deployment di nuovi carichi di lavoro nel cluster, ad esempio quando installi strumenti di terze parti, controlla le autorizzazioni richieste dai pod. Se possibile, evita di eseguire il deployment di workload che utilizzano autorizzazioni elevate nei nodi condivisi.

Limitazioni

Ai pod in esecuzione in un pool di nodi isolato si applicano le seguenti limitazioni:

  • Gli autori degli attacchi possono comunque avviare attacchi denial of service (DoS) dal nodo compromesso.

  • Se esegui il deployment di risorse DaemonSet con privilegi elevati e che possono tollerare qualsiasi taint, questi pod potrebbero essere un percorso per l'escalation dei privilegi da un nodo compromesso.

  • I nodi compromessi possono comunque leggere molte risorse, inclusi tutti i pod e gli spazi dei nomi nel cluster.

  • I nodi compromessi possono accedere a secret e credenziali utilizzati da ogni pod in esecuzione su quel nodo.

  • I nodi compromessi possono comunque ignorare i criteri di rete in uscita.

  • L'utilizzo di un pool di nodi separato per isolare i carichi di lavoro può influire sull'efficienza dei costi, sulla scalabilità automatica e sull'utilizzo delle risorse.

  • Alcuni carichi di lavoro gestiti da GDC devono essere eseguiti su ogni nodo del cluster e sono configurati per tollerare tutte le incompatibilità.

Passaggi successivi