Sul successo del modello-container e di Docker non si discute. Leggero e versatile, motivo per cui si adatta perfettamente ai microservizi, altro trendo in forte crescita.
Non sorprende quindi che moltissime aziende siano rapidamente salite sul treno di Docker, tranne poi a chiedersi quanto la piattaforma sia davvero sicura, per la sua impostazione.
Questa domanda però è tanto lecita quanto non semplice poichè Docker piu che una piattaforma è un insieme di elementi la cui sicurezza viene fatta e valutata in modo differente
Un ambiente Docker è in ultima analisi composto dall’engine che si occupa di gestire i container (quello che di solito implicitamente si indica quando si cita Docker) e dai container stessi. La sicurezza va quindi considerata in maniera distinta per il primo e per i secondi.
Come si tutela l’engine
Il Docker Engine è la tecnologia che si occupa della struttura dei container, li esegue, assegna loro risorse, si occupa di storage e networking. E’ il vero cuore del sistema. La sua sicurezza è strettamente legata a due elementi che derivano dalla genesi Linux della tecnologia: i namespace e i cgroup.
I namespace fanno si che un container possa vedere solo una parte del sistema ma facendogli credere di essere l’unico elemento in esecuzione. In questo modo si ottiene l’isolamento tra i container. Nessun container sa cosa fanno gli altri ne cosa sia in esecuzione.
I control group (cgroup) sono un meccanismo per assegnare risorse (CPU, RAM, rete, I/O) a un gruppo di processi. Grazie ai cgroup abbiamo la sicurezza che un comportamento anomalo da parte di un container non influenzerà negativamente sulle performance degli altri container
Insieme, namespace e cgroup fanno in modo che i container non possano apportare danni al sistema consumando le sue risorse e nemmeno intervenire negativamente sul funzionamento delle altre applicazioni.
Come controllare i container
Il Docker Engine si occupa dell’isolamento dei container ma non del suo contenuto. All’interno del container infatti ci saranno servizi ed applicazioni in esecuzione che possono contenere vulnerabilità che potenzialmente possono mettere in crisi tutto il sistema. Questo aspetto non è da sottovalutare poiche proprio l’estrema versatilità dei container ci permette di pubblicare una nostra immagine e rendere disponibile ad altre migliaia di utenti, ma se la nostra immagine ha un problema di sicurezza ecco che presto questo problema verrà esteso anche ad altri.
Il modo per evitare questo rischio è ricavare immagini solo da fonti ufficiali e controllate. Nella gran parte dei casi questo significa scaricare dal Docker Hub, la piattaforma cloud che fa capo al progetto Docker e che viene comunemente usata dagli sviluppatori per condividere codice e container.
Il Docker Hub offre a pagamento un servizio per la scansione delle immagini dei container alla ricerca delle piu comuni vulnerabilità presentando poi un indici di sicurezza dell’immagine.