Il parere di Qualys su come integrare la sicurezza all’interno del processo di sviluppo dei container nelle imprese

redazione

La containerizzazione crea un ambiente più agile per gli sviluppatori, consentendo loro di supportare le esigenze aziendali per uno sviluppo e un deployment di produzione più veloci. Uno dei vantaggi principali dell’uso dei container è la scalabilità on-demand.

Grazie a strumenti di gestione automatizzata dei container come Kubernetes a supporto del processo, il risultato finale dovrebbe offrire applicazioni più affidabili e disponibili nel cloud e non.

Gartner stima che più del 75% delle aziende gestirà lo sviluppo di applicazioni containerizzate entro il 2022: più del doppio del numero delle attuali imprese che ne fanno uso attualmente! I container permettono di isolare il carico di lavoro, di astrarre l’applicazione dall’ambiente in cui viene eseguita e garantire l’immutabilità della stessa; tuttavia questo approccio non considera l’importanza che Security e IT Operations dovrebbero assumere a partire dalle prime fasi di utilizzo di questo paradigma.

Container e sicurezza – quali sono i potenziali problemi?

Poiché ciascuna istanza impiegata per il deployment dei container può essere creata, utilizzata per rispondere a una richiesta, quindi disattivata, i container minano alla base gli approcci tradizionali nella gestione delle risorse e della sicurezza. 

Alcune di queste istanze, inoltre, non lasciano alcuna traccia della loro presenza digitale, rendendo più complesso il lavoro del team di sicurezza IT. 

Per i responsabili aziendali, la diffusione sull’uso dei container dovrebbe avvenire in parallelo al coinvolgimento del team di sicurezza IT per l’intero iter, richiedendo una maggiore collaborazione tra i vari programmatori impegnati nello sviluppo del software. 

Nonostante l’immutabilità dei container rispetto alle immagini da cui derivano sia in grado di bloccare alcuni problemi che potrebbero colpire altre applicazioni, bisogna considerare ulteriori complicazioni. Ad esempio, una singola immagine poco sicura ospitata su un registry potrebbe essere ricreata più volte come container in istanze separate, creando una superficie d’attacco molto estesa.

Alcuni dei possibili problemi causati dall’implementazione dei container sono:

  • Problemi con l’host – se un worker node per container è mal configurato o possiede una vulnerabilità, allora può essere compromesso. 
    Analogamente, l’applicazione su tale worker node potrebbe essere vulnerabile a causa di un problema appena scoperto.
  • Immagine del container compromessa – questo si verifica quando all’interno di un’immagine di base, presente nel registro, viene incluso un software vulnerabile che verrà poi inserito automaticamente in tutti le istanze container create successivamente. 
  • Vulnerabilità del container – una vulnerabilità o un’errata configurazione nel container stesso costituisce un altro rischio potenziale.
  • Gli hacker possono individuare nuovi modi non conosciuti per uscire da un singolo container – entrando così in un ambiente più ampio – muovendosi lateralmente da un worker node o all’interno dell’ambiente di implementazione del container. 

Come affrontare la sicurezza per ottenere il massimo dai container

Per sviluppare la sicurezza nei container, ci sono alcune linee guida che si possono seguire durante il processo di sviluppo e implementazione del software. 
La prima consiste nell’applicare alcune best practice alla sicurezza nell’immagine del container, adottando regole che vietano gli accessi ssh nei container in esecuzione oppure negando al processo httpd di funzionare come webserver sulla porta 80 all’interno di un database container.

Il secondo aspetto consiste nel considerare la sicurezza come parte dell’intero processo di sviluppo software dei container.  I passaggi da compiere includono l’implementazione di scansioni di sicurezza all’interno della pipeline di creazione, nel registro dei container e nella fase di avvio istanze una volta attivati e operativi in produzione. 

Analizzando l’intero ciclo di vita dei container, dallo sviluppo del software alla sua messa in produzione, l’individuazione di eventuali problemi è più semplice ed efficace.

È fondamentale che questi aspetti rientrino anche nel processo di sviluppo. 

Al posto di applicare separatamente verifiche di sicurezza, l’approccio dovrebbe integrarsi con gli strumenti utilizzati dagli sviluppatori attraverso l’utilizzo di API.  

In caso contrario, si verificheranno problemi che intaccheranno la velocità e l’agilità dello sviluppo software. 

Infine, il team di sicurezza IT dovrebbe implementare alcune procedure sicurezza specificamente pensate per l’ambiente container, adattando modelli esistenti. Alcuni esempi possono includere la ricerca di potenziali compromissioni nel tempo utilizzando la telemetria collezionata da sensori più o meno specializzati, il monitoraggio dell’accesso ai file e alla rete. Questo approccio al runtime offre una visibilità completa sull’accesso a qualsiasi file, processo in esecuzione o indirizzi IP.

Qualunque cosa pensiate dei container, è un paradigma destinato a rimanere nei cicli di sviluppo e messa in produzione dei servizi. Diventa importante riuscire a garantire una maggiore sicurezza, senza ostacolare il loro corretto sviluppo e funzionamento. 

Le imprese devono quindi concentrare la propria attenzione su tutta la pipeline dello sviluppo, integrando il proprio lavoro con quello dei programmatori.