Panoramica
Kubernetes, anche noto come K8s o Kube, è una piattaforma open source per l'orchestrazione dei container, che permette di automatizzare il deployment, la gestione e la scalabilità delle applicazioni containerizzate. Organizza i container Linux in cluster e sfrutta le interfacce di programmazione delle applicazioni (API) per connettere i microservizi containerizzati. I vantaggi di questa tecnologia sono notevoli ma, considerando che tutti i livelli o servizi coinvolti da un deployment Kubernetes possono presentare delle vulnerabilità, garantire la sicurezza dei cluster Kubernetes può risultare complesso.
Mentre alcuni scelgono di gestire la sicurezza di Kubernetes adottando un approccio incentrato sui container, dove ci si concentra principalmente sulla sicurezza delle immagini e del runtime dei container, altri preferiscono la sicurezza Kubernetes native, un approccio più ampio che prevede di importare il contesto da Kubernetes e sfruttare i controlli integrati di Kubernetes per implementare procedure consigliate di sicurezza basate sul rischio in tutte le fasi del ciclo di vita di sviluppo dell'applicazione. La sicurezza Kubernetes native tiene conto anche dei rischi e delle vulnerabilità specifiche di Kubernetes, come ad esempio errori di configurazione nei criteri RBAC di Kubernetes, componenti inaffidabili nel piano di controllo di Kubernetes o utilizzo improprio dei segreti di Kubernetes.
Perché la sicurezza di Kubernetes è così importante?
Negli ultimi anni si è assistito a un aumento esponenziale nel numero di aziende che puntano su Kubernetes, una tecnologia relativamente recente per l'orchestrazione dei container. Purtroppo però a questo boom di adozioni non è corrisposto un aumento negli investimenti sulla sicurezza. Se a questa tendenza si uniscono anche la mancanza di consapevolezza circa l'importanza della sicurezza e di competenze tra i team, gli incidenti di sicurezza possono comportare gravi ripercussioni. Già i problemi legati alla sicurezza di container e Kubernetes sono spesso causa di rallentamenti o ritardi nello sviluppo e nel deployment delle applicazioni ma, quando si evolvono in veri e propri incidenti di sicurezza, possono causare perdite di fatturato o clienti, licenziamenti o discontinuità nell'operatività.
La containerizzazione e Kubernetes sono tecnologie utili che favoriscono l'agilità e la scalabilità di DevOps, ma introducono anche rischi per la sicurezza supplementari. Più aumenta il numero dei container, maggiore sarà la superficie di attacco e la difficoltà nell'individuare i container che presentano vulnerabilità ed errori di configurazione.
I rischi e le sfide più comuni
La comunicazione tra pod in Kubernetes
Uno dei vantaggi di Kubernetes è l'ampia gamma di opzioni di configurazione di rete con cui è possibile controllare la comunicazione tra pod all'interno di un cluster. Tuttavia, per impostazione predefinita Kubernetes non pone limiti alle comunicazioni tra i pod di un cluster e quindi, se non vengono assegnati criteri di rete rilevanti, ogni pod può comunicare senza vincoli con tutti gli altri pod. Questo significa che quando un pod è compromesso può diventare vettore di attacco per tutti gli altri pod del cluster. Inoltre, per i criteri di rete di Kubernetes si utilizzano i file YAML e questo è solo uno dei tanti motivi che rende l'applicazione dei criteri di rete di Kubernetes un'attività laboriosa, tanto che a volte si preferisce rinunciare alla segmentazione della rete a favore della velocità.
Gestione della configurazione
Gli errori di configurazione, che sono molto spesso da imputare a errori umani e all'assenza di scansioni di sicurezza automatizzate, rappresentano un grave rischio per gli ambienti Kubernetes e possono portare a violazioni. Data la natura dinamica dei container, identificare gli errori di configurazione e mantenere un profilo di sicurezza coerente può rivelarsi complicato. Kubernetes è una tecnologia concepita per garantire velocità e operatività per cui le sue configurazioni predefinite sono aperte/senza restrizioni, ma questa apertura rende anche le organizzazioni più vulnerabili agli attacchi informatici.
Problemi legati alla catena di distribuzione del software
Anche i problemi di sicurezza nella catena di distribuzione del software, che includono componenti applicativi vulnerabili, controlli degli accessi insufficienti, mancanza di distinta base (SBOM), fragilità nelle pipeline CI/CD, applicazione dei criteri non uniforme, sono motivo di grande preoccupazione per le aziende. Le catene di distribuzione del software ramificate, tipiche degli ambienti Kubernetes e cloud native, richiedono un particolare insieme di controlli. La sicurezza della catena di distribuzione del software deve essere una priorità dall'ambiente di sviluppo integrato (IDE) fino all'ambiente di runtime. Deve tenere conto di tutti i contenuti (codice sorgente, immagini, artefatti), degli strumenti (per sviluppatori e di sicurezza) e di tutti gli attori coinvolti nella catena di distribuzione. Analisi del codice sorgente, controllo degli accessi, attestazione, SBOM sono solo alcune delle soluzioni per garantire la sicurezza della catena di distribuzione del software.
Integrazione della sicurezza a monte
Strettamente collegato al concetto di sicurezza della catena di distribuzione del software c'è quello di integrazione della sicurezza a monte, secondo cui è essenziale adottare le iniziative per la sicurezza di Kubernetes fin dalle prime fasi del ciclo di vita del container. In questo caso la sfida sta nel responsabilizzare gli sviluppatori sulla sicurezza e fare in modo che dispongano del giusto grado di competenza e di strumenti giusti per prendere decisioni in merito alla sicurezza già all'interno dei loro flussi di lavoro. Tuttavia, la sicurezza di Kubernetes e container dovrebbe essere implementata principalmente a monte, perché questa strategia offre notevoli vantaggi alle aziende. Maggiore è il numero di problemi di sicurezza risolti in fase di compilazione, minore sarà la probabilità che si verifichino problemi durante il runtime e di conseguenza minori saranno i ritardi nei progetti.
Rilevamento del runtime e risposta
Il volume delle minacce al runtime nelle applicazioni containerizzate in esecuzione in ambienti Kubernetes rappresenta un ostacolo per i team incaricati di rilevare e rispondere a tali problemi. Le tecniche che gli hacker possono utilizzare per introdursi negli ambienti Kubernetes sono svariate: eseguire codice dannoso, escalation dei privilegi, raggiungere la persistenza, eludere il rilevamento. Una volta entrati possono poi muoversi lateralmente causando perdite o esfiltrazioni dei dati, perpetrando attacchi denial of service o hackerando le risorse. Per approfondire l'argomento, leggi l'articolo del blog relativo al framework MITRE ATT&CK® per Kubernetes.
Sicurezza dell'infrastruttura Kubernetes
Ogni livello di Kubernetes, dai componenti del piano di controllo come API server, kube-scheduler, kube-controller-manager, etcd, ai componenti dei nodi di lavoro in esecuzione nei carichi di lavoro containerizzati, pone specifiche problematiche di sicurezza. Per ottenere un ambiente cluster sicuro, è necessario configurare tutti questi servizi in modo puntuale. Inoltre, l'approccio alla sicurezza dei componenti di Kubernetes varia in base al tipo di sottoscrizione scelta, ovvero se si adotta Kubernetes come servizio autogestito o come servizio cloud completamente gestito. Negli ambienti autogestiti, per esempio, il cliente è responsabile non solo dei node ma anche di tutti i componenti del piano di controllo. Nel caso dei servizi gestiti Kubernetes, invece, la responsabilità della sicurezza è divisa tra il fornitore del servizio e il cliente e questo può causare altre difficoltà.
Risorse da Red Hat
Sicurezza in ogni fase
La containerizzazione e Kubernetes integrano diverse funzionalità utili per contenere i rischi associati i problemi di sicurezza dei container. Ad esempio:
- Quando i container presentano errori di sicurezza in fase di runtime, invece di aggiornarli o applicare patch mentre sono in esecuzione, si correggono in fase di compilazione e si ridistribuiscono. Conosciuta come immutabilità, questa funzione migliora la capacità di prevedere il comportamento dei container e di individuare le anomalie.
- I criteri di rete permettono di segmentare pod o gruppi di pod e i controller di ammissione applicano i criteri per ottimizzare la governance.
- Il controllo degli accessi basato sui ruoli (RBAC) consente di assegnare a ciascun account (utente o servizio) un determinato livello di autorizzazione.
- I segreti di Kubernetes sfruttano le chiavi di crittografia per tutelare i dati sensibili.
Tuttavia Kubernetes non è un piattaforma di sicurezza, questo significa che i team devono assicurarsi di applicare pratiche di valutazione dei rischi e risolvere le vulnerabilità in ogni livello dell'ambiente Kubernetes e per ogni fase del ciclo di vita di applicazioni e container. Per gestire la sicurezza di Kubernetes efficacemente, occorre usufruire del controlli di sicurezza Kubernetes native se disponibili e implementare procedure consigliate durante la fase di compilazione, deployment e runtime.
In che modo Red Hat può aiutarti?
Red Hat, azienda leader nel settore delle tecnologie di containerizzazione open source, aiuta le aziende ad adottare valide misure pensate per la sicurezza di Kubernetes, contribuendo a rendere l'implementazione dei container più sicura. Per agevolare l'identificazione e la risoluzione dei problemi di sicurezza relativi a K8s, Red Hat offre soluzioni di sicurezza Kubernetes native che integrano la sicurezza nel ciclo di vita del container e consentono ai team DevOps di creare e distribuire applicazioni production ready.
KubeLinter è uno strumento di analisi statica open source creato da StackRox e acquisito da Red Hat nel 2021 che rileva la presenza di errori di programmazione e configurazione nei deployment Kubernetes. KubeLinter esegue una serie di test con cui valuta l'integrità delle configurazioni di Kubernetes, identifica gli errori e genera avvisi ogni volta che si presenta un'anomalia rispetto alle procedure consigliate di sicurezza.
Red Hat Service Interconnect è dotato di una sicurezza integrata che per impostazione predefinita è scalabile in base ai cluster e ai cloud e al tempo stesso consente una comunicazione affidabile tra i server. Inoltre, Service Interconnect offre la flessibilità di eseguire attività di sviluppo su piattaforme tradizionali, container o Kubernetes, così gli sviluppatori hanno più opzioni per creare, modernizzare e distribuire le applicazioni aziendali di nuova generazione.
Red Hat® Advanced Cluster Security for Kubernetes (ACS) permette di creare, distribuire ed eseguire in modo più sicuro le applicazioni cloud native. La piattaforma, disponibile come soluzione autogestita o soluzione SaaS completamente gestita, consente di proteggere i carichi di lavoro containerizzati in tutti i principali ambienti cloud e hybrid cloud, aiuta i team DevOps e InfoSec ad applicare la sicurezza, riduce i costi operativi e rende i cicli di sviluppo più efficienti.
Il blog ufficiale di Red Hat
Leggi gli articoli del blog di Red Hat per scoprire novità e consigli utili sulle nostre tecnologie, e avere aggiornamenti sul nostro ecosistema di clienti, partner e community.