Kubernetes è una piattaforma open source di orchestrazione dei container per il ridimensionamento e l'automazione delle distribuzioni dei container. È stata inizialmente sviluppata per gestire i carichi di lavoro containerizzati in ambienti di produzione e ha aiutato gli utenti a definire i confini delle risorse delle applicazioni. La virtualizzazione è una pratica dell'architettura di sicurezza di Kubernetes che consente un utilizzo corretto delle risorse sui server fisici e migliora la stabilità. Kubernetes migliora le prestazioni hardware e riduce le spese operative aggiungendo la virtualizzazione. Ogni macchina virtuale funziona con il proprio set di componenti e dispone di sistemi operativi designati.
Le distribuzioni dell'architettura di sicurezza Kubernetes sono agili, promuovono lo sviluppo e l'integrazione continui e aggiungono affidabilità alla creazione e alla distribuzione di immagini container. La piattaforma facilita l'immutabilità delle immagini, monitora lo stato di salute e le prestazioni delle applicazioni e semplifica la portabilità della distribuzione del sistema operativo. Tuttavia, uno svantaggio dell'utilizzo dell'architettura di sicurezza Kubernetes è che deve essere più sicura per impostazione predefinita. Gli utenti possono andare incontro a tempi di inattività o ritardi operativi durante l'esecuzione di sistemi distribuiti, e ci sono problemi di sicurezza con il bilanciamento del carico, la gestione della configurazione e il rollout automatizzato.
L'architettura di sicurezza Kubernetes offre flessibilità e osservabilità, ma non limita le applicazioni né impone la registrazione, l'auditing e il monitoraggio. Gli autori di minacce dannose possono sfruttare le vulnerabilità e i rischi della catena di fornitura possono creare problemi durante tutto il ciclo di creazione dei container. È necessario proteggere diversi componenti dell'architettura Kubernetes, come i nodi di lavoro, le applicazioni containerizzate e i piani di controllo. Anche la possibilità di minacce interne è elevata e gli amministratori Kubernetes con intenzioni malevole potrebbero abusare di privilegi speciali, divulgare informazioni sensibili o causare violazioni dei dati.
Questa guida descrive le principali sfide dell'architettura di sicurezza Kubernetes. Spiega come configurare e proteggere questi cluster per correggere le minacce e prevenire errori di configurazione comuni. Cominciamo.
Che cos'è l'architettura di sicurezza di Kubernetes?
L'architettura di sicurezza Kubernetes utilizza cluster, piani di controllo e una o più macchine virtuali (o server fisici) denominate nodi di lavoro. I nodi di lavoro sono noti per ospitare pod che contengono uno o più container.
I container Kubernetes sono ambienti di runtime che contengono pacchetti software e memorizzano tutte le loro dipendenze. Le immagini dei container contengono codice eseguibile e contenuti per popolare gli ambienti dei container.
Il processo decisionale del cluster viene eseguito dal piano di controllo. Esso pianifica l'esecuzione dei container, rileva i guasti e avvia nuovi pod. I componenti critici del piano di controllo sono il controller manager, il server API (Application Programming Interface) di Kubernetes, lo scheduler e il cloud controller manager.
I nodi worker di Kubernetes ospitano anche Kubelet e Kube-proxy, due servizi che consentono l'orchestrazione dei container. Esegue anche un motore di container e il servizio CSP Kubernetes ospita i cluster. Le organizzazioni devono gestire vari aspetti del servizio di Kubernetes, come l'autorizzazione e l'autenticazione, poiché le configurazioni CSP predefinite non sono sicure.
Quando progettano l'architettura di sicurezza di Kubernetes, le organizzazioni devono comprendere le proprie responsabilità e sapere come mantenere i cluster Kubernetes.
Come proteggere l'architettura di sicurezza di Kubernetes?
Esistono molti modi per proteggere l'architettura di sicurezza di Kubernetes. Il primo passo è impedire l'esecuzione di root per impostazione predefinita. Gli utenti possono eseguire container non root o utilizzare un motore di container senza root per ridurre le possibilità di compromissione dei container. Dovrebbero inoltre testare le applicazioni Kubernetes e progettarle in modo che vengano eseguite come utenti non root. L'integrazione dell'esecuzione non root nella fase di compilazione migliora la garanzia di qualità e assicura che le applicazioni Kubernetes funzionino senza intoppi senza privilegi root.
Per i principianti è molto più semplice configurare singoli cluster per applicazioni su larga scala. Gli utenti che utilizzano servizi Kubernetes commerciali o gestiti possono ottimizzare l'utilizzo delle risorse utilizzando K8s Namespaces e sfruttando il supporto multi-tenancy.
Di seguito sono riportati i migliori consigli di sicurezza per migliorare l'architettura di sicurezza di Kubernetes per i principianti:
1. Utilizzare file system container immutabili
Gli attori malintenzionati sono in grado di ottenere privilegi di esecuzione illimitati, scaricare script e modificare le applicazioni all'interno dei container. Gli utenti possono prevenire tali casi montando file system secondari di lettura/scrittura in directory specifiche e utilizzando file system container immutabili.
2. Creare immagini container sicure
La scansione delle immagini container Kubernetes è in grado di rilevare vulnerabilità, prevenire l'iniezione di codice dannoso e garantire distribuzioni sicure. La scansione delle immagini container Kubernetes identifica le librerie obsolete, protegge le porte e previene configurazioni errate note. La scansione delle immagini dei container è parte integrante dell'architettura di sicurezza di Kubernetes e può fornire un'efficace risoluzione delle minacce. Il controller di ammissione di Kubernetes può bloccare automaticamente le distribuzioni se un'immagine del container viola la politica di sicurezza dell'organizzazione. È inoltre essenziale creare e procurarsi immagini da repository affidabili e verificare la reputazione degli editori. Gli utenti dovrebbero eseguire solo immagini firmate digitalmente nei cluster Kubernetes.
3. Implementare il rafforzamento dei container Kubernetes
Il rafforzamento dei container Kubernetes può limitare drasticamente la portata delle superfici di attacco, prevenire violazioni dei dati e proteggere le applicazioni. In generale, esistono tre approcci: containerizzazione supportata da hypervisor, soluzioni basate su kernel e sandbox delle applicazioni.
Lo strumento seccomp può essere utilizzato per la registrazione degli audit e il rilevamento attivo delle minacce. Molte soluzioni di motori container consentono agli utenti di aggiungere un livello di isolamento tra il kernel host e l'applicazione containerizzata. I confini di isolamento costringono le applicazioni a operare all'interno di sandbox virtuali e proteggono i sistemi operativi host da invasioni dannose. I motori container possono essere configurati per applicare la virtualizzazione e fornire una protezione migliore rispetto alle tradizionali soluzioni di isolamento dei container.
4. Separazione e rafforzamento della rete
Il clustering di rete viene utilizzato per migliorare le comunicazioni tra i container. L'applicazione della crittografia e della separazione delle risorse può impedire il movimento laterale nelle reti. Gli utenti possono utilizzare le politiche di rete per isolare le risorse Kubernetes e proteggere il piano di controllo. Si consiglia di crittografare il traffico e i dati sensibili inattivi (compresi i segreti) e di applicare un firewall. Gli spazi dei nomi Kubernetes possono partizionare le risorse del cluster tra team, utenti e applicazioni. Gli spazi dei nomi non sono isolati per impostazione predefinita, ma gli utenti possono specificare l'autorizzazione utilizzando RBAC e politiche di rete.
Gli indirizzi IP dei pod possono cambiare e le applicazioni non possono dipendere dai pod con indirizzi IP statici. L'utilizzo di un servizio Kubernetes con l'architettura di sicurezza Kubernetes può risolvere questo problema. È in grado di assegnare più indirizzi IP univoci a pod diversi e utilizzare etichette per le configurazioni. Questi indirizzi non cambiano mentre il servizio è ancora in uso. Le politiche di rete Kubernetes possono controllare il traffico in entrata e in uscita.
Altre due raccomandazioni dell'architettura di sicurezza Kubernetes per la progettazione di politiche di rete solide sono: l'utilizzo di plugin CNI che supportano l'API NetworkPolicy e la creazione di linee guida per pod selezionati utilizzando namespaceSelector e podSelector.
5. Host Kubernetes sicuri
Gli utenti possono distribuire Kubernetes in diversi modi: on-premise, bare metal e tramite build su cloud pubblico. I container Kubernetes sono altamente portabili; i clienti possono passare da un'installazione all'altra e migrare i carichi di lavoro. Un alto grado di personalizzazione comporta anche l'introduzione di ulteriori vulnerabilità di sicurezza. Un modo per ovviare a questo problema è rafforzare gli host sottostanti e installare le ultime versioni dei sistemi operativi. È essenziale implementare sistemi di gestione della configurazione, gestione delle patch, firewall e applicare misure di sicurezza adeguate in base agli ambienti dei data center designati.
L'esecuzione dell'ultima versione di Kubernetes mitiga le principali minacce potenziali. Applica correzioni di bug comuni e mantenere aggiornate le applicazioni previene complicazioni inutili. Gli aggiornamenti continui sono molto popolari tra gli sviluppatori e le migrazioni dei pool di nodi completano gli aggiornamenti con tempi di inattività o interruzioni minimi.
6. Integrare gli strumenti di sicurezza Kubernetes
Gli strumenti di sicurezza Kubernetes Strumenti come i firewall di nuova generazione (NGFW) e i gateway di controllo dell'accesso web dovrebbero essere integrati con i cluster Kubernetes esistenti e i set di strumenti di sicurezza. Un ottimo modo per farlo è incorporare le porte TCP/UDP e gli indirizzi IP utilizzati dai carichi di lavoro negli strumenti di sicurezza perimetrale. Ciò consentirà agli utenti di identificare e proteggere le risorse Kubernetes.
Limitare la connettività di rete ai nodi Kubernetes e utilizzare i gruppi di sicurezza dei provider cloud può anche allinearsi con le pratiche di gestione dell'architettura di sicurezza Kubernetes.
7. Conformità automatizzata
È possibile garantire una sicurezza ottimale durante l'esecuzione raccogliendo dati e automatizzando la generazione di report di conformità. La conformità di Kubernetes deve rispettare i più recenti standard di riferimento del settore, come HIPAA, PCI-DSS, GDPR, NIST e SOC2. È fondamentale puntare a una conformità automatizzata e continua. Se un pod non supera un controllo di conformità, i cluster dovrebbero aggiornare automaticamente le immagini dei container o spegnerlo fino a quando il problema non viene risolto. Gli utenti dovrebbero crittografare i dati in transito, cosa che può essere ottenuta abilitando la crittografia TLS per i carichi di lavoro Kubernetes. Un'altra ottima opzione è quella di abilitare il TLS reciproco, utilizzare service mesh o strumenti come SentinelOne.
8. Accesso sicuro all'API Kubernetes
La maggior parte delle operazioni del cluster Kubernetes avviene nel Kube-apiserver. Lo strumento di utilità di controllo Kube può essere utilizzato per controllare l'accesso all'API e funge da prima linea di difesa. Il Kubelet può assegnare una classe di qualità del servizio (QoS) ai pod e assistere nella loro pianificazione e nella conseguente rimozione, se necessario. Kubelet può aiutare gli utenti a prendere decisioni più intelligenti e i team DevOps possono garantire che i container ricevano risorse sufficienti per funzionare correttamente. Tutti i container devono avere limiti di CPU e memoria imposti senza eccezioni.
SentinelOne dispone di una piattaforma completa di protezione delle applicazioni cloud native (CNAPP) con una soluzione Kubernetes Security Posture Management (KSPM) integrata. È in grado di applicare politiche di sicurezza dettagliate, limitare le comunicazioni tra i carichi di lavoro e le app di terze parti e limitare l'accesso all'API. Lo strumento rileva e mitiga le minacce persistenti avanzate utilizzando l'apprendimento automatico e l'intelligenza artificiale e include anche un motore di sicurezza offensivo che applica un approccio basato su regole alla sicurezza e al monitoraggio delle minacce. L'implementazione di un modello di microsegmentazione scalabile, unificato e unico per host Kubernetes, VM e container può fornire la sicurezza Kubernetes necessaria in distribuzioni multi-cluster, multi-cloud e ibride.
Vedere SentinelOne in azione
Scoprite come la sicurezza del cloud basata sull'intelligenza artificiale può proteggere la vostra organizzazione con una demo individuale con un esperto dei prodotti SentinelOne.
Richiedi una demoConclusione
Le aziende stanno adottando sempre più piattaforme di orchestrazione dei container come Kubernetes e si sta assistendo a un passaggio alla protezione delle infrastrutture e allo sfruttamento dei carichi di lavoro e delle applicazioni containerizzati. Kubernetes offre funzionalità e impostazioni di sicurezza complete, ma non è sicuro per impostazione predefinita e deve essere configurato. I container possono essere eseguiti correttamente e le minacce devono essere risolte prima che si aggravino. Si inizia progettando una pratica architettura di sicurezza Kubernetes. Esistono vari strumenti che le organizzazioni possono utilizzare per iniziare e sul mercato sono disponibili molte soluzioni open source.
Stanno ottenendo una visibilità continua, migliorando l'osservabilità e garantendo che i container funzionino nel modo più sicuro possibile. Gli strumenti di sicurezza Kubernetes possono monitorare il processo di compilazione e scoprire vulnerabilità nascoste, aiutando così le organizzazioni a rimanere protette.
Domande frequenti sull'architettura di sicurezza di Kubernetes
L'architettura di sicurezza Kubernetes è il progetto e l'insieme di controlli volti a proteggere un cluster Kubernetes. Si concentra sulla protezione del piano di controllo, dei nodi, dei carichi di lavoro e della rete per impedire accessi non autorizzati e attacchi.
Include difese a più livelli come autenticazione, autorizzazione, politiche di rete e gestione dei segreti strutturate per salvaguardare ogni parte dell'ambiente di orchestrazione dei container.
La sicurezza di rete Kubernetes utilizza politiche e segmentazione per controllare il traffico tra pod e client esterni. Le politiche di rete definiscono quali pod o intervalli IP possono comunicare. L'architettura spesso include comunicazioni crittografate tra componenti e firewall per limitare l'accesso.
Questa configurazione limita i movimenti laterali degli aggressori e protegge i servizi sensibili all'interno del cluster.
Una configurazione Kubernetes sicura include il controllo degli accessi basato sui ruoli (RBAC) per le autorizzazioni, TLS per la crittografia del traffico API, politiche di rete per la segmentazione dei pod, politiche di sicurezza dei pod o controller di ammissione per garantire la sicurezza dei container, crittografia dei segreti, registrazione degli audit e scansione periodica delle vulnerabilità. Questi livelli lavorano insieme per ridurre i rischi e mantenere l'integrità del cluster.
Kubernetes supporta vari metodi di autenticazione come certificati, token e integrazione con provider di identità (OIDC, LDAP). Una volta autenticate, le richieste vengono sottoposte a controlli di autorizzazione, principalmente utilizzando RBAC, che applica il principio del privilegio minimo concedendo l'accesso in base a ruoli e politiche definiti. Ciò garantisce che solo gli utenti e i componenti affidabili eseguano le azioni consentite.
Gli esempi includono l'applicazione di RBAC per limitare le azioni degli utenti, l'utilizzo di politiche di rete per isolare i pod con dati sensibili, l'abilitazione dei log di audit per tracciare gli eventi del cluster, la crittografia dei segreti memorizzati in etcd, l'implementazione di controller di ammissione per bloccare configurazioni non sicure e l'esecuzione di container con privilegi limitati. La combinazione di queste pratiche rafforza la sicurezza del cluster da più punti di vista.

