I problemi di sicurezza più comuni di Kubernetes e come mitigarli
Pubblicato: 2021-03-30Kubernetes e container promettono tre cose:
- Sviluppo e rilascio di applicazioni più rapidi.
- Correzioni di bug più rapide.
- Aumento della velocità delle funzioni.
Tuttavia, spesso viene a scapito di una sicurezza compromessa e questo è qualcosa che non è accettabile in nessuna tecnologia di sviluppo web.
Per realizzare lo stato della sicurezza di Kubernetes, ecco due fattori da un sondaggio condotto da StackRox alla fine del 2020:
- Il 90% dei partecipanti al sondaggio ha riferito di aver subito un incidente di sicurezza relativo a container e Kubernetes negli ultimi 12 mesi.
- Il 44% dei partecipanti ha dovuto ritardare il rilascio dell'applicazione a causa di problemi di sicurezza relativi a Kubernetes.
Quali sono i motivi più comuni alla base di questi problemi di sicurezza?
I problemi di sicurezza più comuni relativi a Kubernetes
1. Configurazioni errate
I sondaggi hanno rivelato che le esposizioni causate da configurazioni errate sono il rischio più diffuso per la sicurezza degli ambienti container e Kubernetes.
Quando si utilizza Kubernetes per creare app containerizzate, la gestione della configurazione rappresenta il rischio maggiore per i professionisti della sicurezza.
Ciò è dovuto principalmente al fatto che il mercato è pieno di strumenti di scansione delle vulnerabilità, ma la gestione della configurazione si basa ancora in gran parte sulla considerazione umana.
Ecco alcuni consigli sulla configurazione di alcuni dei componenti comuni di un'app containerizzata per assicurarsi che la sicurezza non sia compromessa.
Immagini:
Evitare di utilizzare qualsiasi software che non sia assolutamente necessario. Ciò include gestori di pacchetti, strumenti di rete e client come curl o shell Unix.
Ricorda, l'utilizzo di qualsiasi software aumenta il rischio per la sicurezza. Inoltre, usa solo immagini provenienti da fonti affidabili.
Segreti:
Evita di inserire segreti nelle immagini o di esporli in altro modo inutilmente.
Come pratica sicura, utilizzare strumenti di gestione dei segreti affidabili per garantire che le distribuzioni montino i segreti solo se e quando sono necessari.
Spazi dei nomi:
Usa generosamente gli spazi dei nomi. Fungono da confine per Kubernetes e le politiche di rete. L'uso degli spazi dei nomi può limitare gli effetti di un attacco e può contenere errori e attacchi in modo che non possano diffondersi e causare ulteriore distruzione.
Privilegi di runtime:
C'è solo una regola di privilegi: consenti al minor numero di essi per rendere il software il più sicuro.
Politiche di rete
Secondo le impostazioni predefinite, i pod possono dialogare indipendentemente tra loro in Kubernetes. Tuttavia, è buona norma implementare criteri di rete per limitare l'interazione dei pod. Ciò può impedire che qualsiasi minaccia si diffonda nel contenitore e nell'intera app.
Archiviazione persistente
È necessario disporre di un'adeguata visibilità sulla configurazione e sull'utilizzo dell'archiviazione persistente. Questo perché questo è l'unico vettore persistente in una configurazione di container altrimenti effimera.
Piano di controllo
Se gestisci i cluster Kubernetes da solo, è molto importante configurare il piano di controllo. Questo perché alcuni cluster possono prendere decisioni globali e se un cluster è infetto ciò può compromettere l'intero ecosistema.
L'approccio migliore per mitigare questi e vari altri problemi di sicurezza relativi alla configurazione consiste nell'utilizzare una combinazione di sforzi manuali e automatizzati per assicurarsi che la configurazione sia eseguita in modo tale da garantire la sicurezza di Kubernetes e di conseguenza del software di cui fanno parte di.
2. Vulnerabilità
Negli ultimi anni sono state rilevate e sfruttate diverse vulnerabilità in Kubernetes e in altri container.
Gli exploit più comuni delle vulnerabilità includono:
- Minerario di criptovalute.
- Installazione di malware.
- Aumento dei privilegi.
- Accesso host.
L'approccio efficace per la gestione della vulnerabilità è qualcosa che deve continuare per tutto il ciclo di vita del contenitore e dovrebbe includere quanto segue:
- Identificazione e risoluzione delle vulnerabilità nelle immagini, comprese quelle nel sistema operativo installato.
- Rilevare e mitigare tutte le vulnerabilità nelle librerie di runtime dei linguaggi di programmazione in uso.
- Adottare misure per impedire che le immagini con vulnerabilità rischiose raggiungano il registro dei contenitori accessibile in produzione.
- Adottare misure per contenere le minacce che presentano un rischio per la sicurezza superiore a un certo livello.
- Utilizzo di controller di ammissione di terze parti nei cluster Kubernetes per impedire la pianificazione dei componenti del contenitore vulnerabili.
3. Minacce di runtime
Dopo aver mitigato tutti i problemi nella sicurezza di Kubernetes, la fase di runtime ha il proprio set unico di minacce alla sicurezza.
Anche se hai enfatizzato la sicurezza e ridotto al minimo i rischi in ogni modo possibile, possono esserci varie minacce da parte di avversari in fase di esecuzione.
Ecco alcune cose che puoi fare per mitigare queste minacce:
Monitoraggio dell'attività di runtime:
Avvia il processo di monitoraggio con il maggior numero di attività del contenitore più rilevanti per la sicurezza. Ciò include attività del genere, comunicazioni di rete all'interno e attraverso servizi containerizzati e comunicazioni da e verso server e client esterni.
Approfitta dei dati dichiarativi
Utilizza le informazioni sul tempo di compilazione e distribuzione per valutare la differenza tra l'attività osservata e quella prevista per sapere se sono presenti attività sospette.
Mantieni la comunicazione di rete limitata
Il runtime è il momento in cui è possibile vedere la differenza tra il tipo di traffico di rete consentito e quello necessario per eseguire il sistema. Questa è l'opportunità che può essere utilizzata per rimuovere qualsiasi comunicazione non necessaria che potrebbe rappresentare una minaccia per la sicurezza di Kubernetes.
Osservare i processi da vicino
Osservare l'applicazione per un periodo di tempo per conoscere tutti i processi che vengono eseguiti per il corretto funzionamento dell'applicazione. Fai un elenco di tutti i processi essenziali e controlla l'applicazione in modo casuale per vedere se viene eseguito un processo diverso dal solito.
4. Verifica della conformità fallita
Una delle cose principali che garantiscono la sicurezza di Kubernetes e dei container è la conformità. Se la sicurezza non viene debitamente sottolineata nel ciclo di vita dello sviluppo del software, può portare a un audit di conformità non riuscito.
Esistono numerosi standard di conformità che possono essere utilizzati per Kubernetes e la sicurezza dei container.
PCI-DSS, HIPAA e SOC 2 sono standard di conformità specifici del settore.
Uno dei principali errori commessi a questo proposito è non rendere gli audit di conformità una parte dell'SDLC fin dall'inizio o considerarli solo in fase di esecuzione. Per assicurarsi che tutto nel software sia conforme:
- Rendi la conformità una parte dell'SDLC sin dall'inizio.
- Utilizzare gli standard del settore per rendere conformi i componenti del software.