Questo documento spiega i vantaggi e le limitazioni dell'isolamento dei nodi in un cluster Kubernetes air-gapped di Google Distributed Cloud (GDC). L'isolamento dei nodi con node pool 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 carichi di lavoro offre alcuni vantaggi, ad esempio:
- Rischio ridotto di attacchi di escalation dei privilegi nel cluster Kubernetes.
- Maggiore controllo sui pod che richiedono risorse aggiuntive.
In questi casi, valuta la possibilità di isolare i carichi di lavoro con container in node pool dedicati per un maggiore controllo e ottimizzazione. Assicurati di considerare anche le limitazioni per prendere una decisione informata su il costo di manutenzione aggiuntivo richiesto dall'isolamento dei nodi.
Questo documento è rivolto a destinatari come gli amministratori IT del gruppo di amministratori della piattaforma responsabili della gestione dei node pool di un cluster Kubernetes e agli sviluppatori di applicazioni del gruppo di operatori di applicazioni responsabili della gestione dei carichi di lavoro con container. Per saperne di più, consulta la sezione Destinatari della documentazione air-gapped di GDC.
Perché devo isolare i miei carichi di lavoro?
Sebbene non sia obbligatorio, dedicare i node pool a carichi di lavoro con 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 funzionalità specifiche del cluster, come la raccolta di 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 eseguire l'escalation dei privilegi nel cluster.
I node pool 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 carichi di lavoro su un pool di nodi dedicato:
- Incompatibilità dei nodi: indica al cluster Kubernetes di evitare di pianificare i carichi di lavoro 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 avanzato di difesa in profondità che devi utilizzare solo insieme ad altre funzionalità di isolamento, come container e account di servizio con privilegi minimi. L'isolamento dei nodi potrebbe non coprire tutti i percorsi di escalation 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 carichi di lavoro, devi:
Contrassegnare e etichettare un pool di nodi per i carichi di lavoro.
Aggiornare i carichi di lavoro con la tolleranza e la regola di affinità dei nodi corrispondenti.
Questa guida presuppone che tu inizi con un pool di nodi nel cluster. L'utilizzo dell'affinità dei nodi in aggiunta alle incompatibilità dei nodi non è obbligatorio, ma lo consigliamo perché puoi usufruire di un maggiore controllo sulla pianificazione.
Consigli e best practice
Dopo aver configurato l'isolamento dei nodi, ti consigliamo di:
Quando crei nuovi node pool, impedisci alla maggior parte dei carichi di lavoro gestiti da GDC di essere eseguiti 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 carichi di lavoro che utilizzano autorizzazioni elevate sui nodi condivisi.
Limitazioni
Ai pod in esecuzione in un pool di nodi isolato si applicano le seguenti limitazioni:
Gli utenti malintenzionati possono comunque avviare attacchi Denial of Service (DoS) dal nodo compromesso.
Se esegui il deployment di risorse
DaemonSetcon autorizzazioni elevate e che possono tollerare qualsiasi incompatibilità, 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
- Isolare i carichi di lavoro con container in node pool dedicati
- Panoramica del cluster Kubernetes
- Carichi di lavoro con container in GDC