Che cos'è la sicurezza dei container  Docker?

Docker® presenta molti elementi dinamici e la sua protezione può essere più complessa di quella di altre tecnologie di distribuzione più datate. Richiede un approccio organico: dalla rete ai firewall applicativi, alla difesa del runtime dei container, fino alla protezione dell'host.

Sicurezza dei container di Docker

La protezione di un container di Docker non è diversa da quella di altri container. Richiede un approccio onnicomprensivo, proteggendo tutti gli elementi compresi nel percorso che va dall'host alla rete. A causa delle parti in movimento, garantire la sicurezza dei container è difficile per molte organizzazioni e richiede qualcosa di più di un livello di vigilanza rudimentale. 

Elementi da considerare

Ecco alcuni elementi da considerare per la protezione dei container di Azure:

  • Utilizzare quote di risorse
  • I container di Docker non devono essere eseguiti come root.
  • Garantire la sicurezza dei registri dei tuoi container di Docker
  • Utilizzare una sorgente affidabile
  • Andare alla sorgente del codice
  • Designare API e reti pensando alla sicurezza

 

Utilizzare quote di risorse

L'utilizzo di quote di risorse ti offre la possibilità di limitare il consumo di memoria e CPU da parte di un container. La configurazione di quote di risorse su ciascun container non si limita a incrementare l'efficienza dell'ambiente, ma può anche impedire uno squilibrio tra le risorse in tutti i container del tuo ambiente.

Ciò consente ai tuoi container di funzionare alla velocità da te prevista e, cosa più importante, incrementare la sicurezza. Se un container si infetta con un contenuto dannoso, non è in grado di fare entrare un'enorme quantità di risorse nel container, poiché la quota le limita, riducendo al minimo l'impatto degli attacchi. Si tratta di una tattica di sicurezza semplice che trae vantaggio e vene realizzata dall'utilizzo di flag nelle righe di comando.

I container di Docker non devono essere eseguiti come root.

Durante la creazione di un'applicazione, la pratica migliore è applicare il principio del privilegio minimo. Ciò comporta la limitazione dell'accesso dell'applicazione alle sole risorse necessarie per il funzionamento. È uno dei modi migliori per proteggere i tuoi container dagli accessi imprevisti.

Quando si tratta della sicurezza dei tuoi container di Docker, ciò è decisamente cruciale ed è il motivo per cui le impostazioni predefinite di Docker non prevedono l'esecuzione dei container come root. Ad esempio, se la tua applicazione in container è vulnerabile a un exploit e la esegui con l'utente root, la superficie di attacco si estende e crea un percorso semplice che consente agli hacker un'escalation privilegiata.

Garantire la sicurezza dei registri dei tuoi container di Docker

I registri dei container, in particolare quelli di Docker, sono ciò che rendono i container stessi una piattaforma molto solida. Grazie ai registri, puoi creare un deposito centrale di immagini che possono essere scaricate in modo facile e veloce. Ciononostante, in tutta la loro gloria presentano numerosi rischi per la sicurezza se non si utilizza un registro affidabile creato attraverso la ricerca, ad esempio su Docker Trusted Registry. Il registro di Docker si installa dietro al firewall già implementato nella tua infrastruttura IT per alleviare i rischi posti da Internet, ma anche allora occorre comunque impedire agli utenti di effettuare upload e download nel registro.

Sebbene sia molto allettante l'idea di evitare tutto quel lavoro e concedere un accesso libero, questo piccolo fastidio potrebbe evirare un'ampia violazione del registro. Una tattica utile per resistere a questa tentazione consiste nell'implementare un controllo degli accessi basato sui ruoli, che ti offre la possibilità di controllare esattamente chi accede a che cosa, in termini di registri.

Utilizzare una sorgente affidabile

Ora che il registro dei container è protetto, non è il caso di infettarlo con immagini di container ottenute da una sorgente non affidabile. Potrebbe sembrare pratico scaricare semplicemente le immagini di container disponibili al pubblico cliccando con il mouse. Tuttavia, è estremamente importante accertarsi che la sorgente del download sia affidabile e verificata.

Nell'interesse della cautela e della sicurezza, è veramente meglio evitare registri di container pubblici e attenersi a quelli offerti da Docker, come Docker Hub. Per fare un passo in più verso la protezione dei container di Docker, è opportuno utilizzare strumenti di scansione immagini per fare emergere le vulnerabilità nelle immagini di Docker e proteggerle. 

Andare alla sorgente del codice

Come menzionato in precedenza, è essenziale che la sorgente delle immagini dei container di Docker sia affidabile e sicura. Tuttavia, è inoltre una buona pratica investigare il codice nell'immagine per accertarsi che non contenga codici infetti, anche se l'immagine proviene da un registro affidabile. Le immagini di Docker presentano una combinazione di codice originale e pacchetti da sorgenti esterne, che potrebbero non derivare da sorgenti affidabili.

In questo contesto, la cosa migliore è utilizzare strumenti di analisi del codice sorgente. Dopo avere ottenuto le immagini, puoi scansionare i pacchetti per determinare se il codice proviene dal download delle sorgenti di tutti i pacchetti all'interno delle immagini di Docker. Ciò ti consente di scoprire se una o più immagini presentano vulnerabilità di sicurezza note, tenendole protette fin dalla prima creazione.

Designare API e reti pensando alla sicurezza

Affinché i container di Docker possano comunicare tra loro, si utilizzano interfacce di programmazione applicazioni (API) e reti. Tale comunicazione è fondamentale per un corretto funzionamento dei container, ma richiede una sicurezza e un monitoraggio adeguati. Sebbene API e rete non facciano effettivamente parte del container di Docker, ma siano risorse utilizzate insieme a Docker, presentano comunque un rischio per la sicurezza del container. Tenendo questo a mente, per avere la capacità di fermare rapidamente un'intrusione occorre progettare le API e la rete per un monitoraggio agevole e tenendo conto della sicurezza. 

Riassumendo

La protezione dei container di Docker non è certo un gioco da ragazzi, ma la fatica viene abbondantemente ripagata. Occorre adottare un approccio olistico e rinforzare l'ambiente dei container a tutti i livelli. Sebbene le best practice descritte in precedenza possano sembrare impegnative, ti risparmiano un'enorme quantità di tempo in futuro e mitigano i principali rischi per la sicurezza.