Per apprezzare al massimo l'approccio DevSecOps in ambito Cloud Native, è fondamentale considerare la crescente complessità delle minacce informatiche, l'imperativo di sviluppare software sicuro e, soprattutto, l'integrazione organica della sicurezza nei flussi di lavoro DevOps.
L’evoluzione delle minacce e la necessità di Secure Code
Oggi, le minacce informatiche diventano sempre più sofisticate, frequenti e difficili da individuare. I cyber criminali adottano tecniche avanzate, come l'intelligenza artificiale generativa, per creare attacchi mirati che sfuggono ai tradizionali sistemi di sicurezza. Questo, unito a un costante aumento della superficie d’attacco, fa sì che le aziende non possano più fare totale affidamento su soluzioni di sicurezza tradizionali, ma debbano integrare la protezione direttamente nel ciclo di sviluppo del software.
Nel contesto appena descritto, lo sviluppo di software sicuro è fondamentale. Questo significa progettare e costruire applicazioni che integrino la sicurezza in ogni fase del ciclo di vita del software, dallo sviluppo dell'architettura iniziale fino alla scrittura del codice, passando per la gestione dei dati e delle configurazioni. Questa Security by Design supera l’approccio tradizionale che considerava la sicurezza come pensiero successivo allo sviluppo e, per questo, esponeva l’azienda a vulnerabilità incompatibili con lo stato attuale delle minacce.
Metodologie di lavoro moderne e DevSecOps
Nel frattempo, con l'introduzione di metodologie dinamiche e collaborative come quelle DevOps, che si fonda(semplificando) sull’integrazione tra le pratiche di sviluppo e le operations, ovvero tra chi sviluppa il codice e chi implementa e gestisce l’infrastruttura applicativa in un contesto moderno fondato su tecnologie Cloud Native come Docker e Kubernetes.
Il DevSecOps è un passo ulteriore nella medesima direzione, poiché considera la sicurezza informatica, gestita da un team separato rispetto allo sviluppo e all’infrastruttura, come una parte essenziale dei processi moderni di sviluppo e deployment del software. La sicurezza non è più una fase separata, ma è integrata fin dall'inizio nel flusso di lavoro DevOps, è un pensiero “continuo” che pervade ogni fase del software lifecycle.
I 6 pilastri di DevSecOps, dalla collaborazione alla misurazione continua
Quali sono, dunque, gli elementi costitutivi del paradigma DevSecOps e come si integra con il DevOps?
La Cloud Security Alliance, organizzazione dedicata allo sviluppo di best practice di sicurezza per gli ambienti di cloud computing, ha identificato i 6 pilastri principali del modello, il cui scopo è proprio quello di applicare i principi metodologici del DevOps ai processi di information security.
- Il primo pilastro è la responsabilità condivisa, tipico principio delle pratiche DevOps. Si auspica un vero e proprio cambiamento culturale che riguardi tutta l’organizzazione: a partire dagli sviluppatori, orientati a realizzare secure code, ma senza dimenticare gli utenti finali dei sistemi software.
- La collaborazione è l’elemento chiave del DevOps e, ovviamente, questo concetto si applica a tutte le sue declinazioni. I team Dev, Sec e Ops hanno competenze diverse, ma solo orientandole verso un obiettivo comune e creando sinergie si possono realizzare sistemi IT realmente sicuri.
- Occorre adottare un approccio pragmatico che tenga conto delle peculiarità di ogni progetto. La sicurezza va integrata nelle pratiche di sviluppo e nella toolchain in modo sartoriale e personalizzato.
- La Cloud Security Alliance afferma la necessità di colmare il gap tra compliance e sviluppo identificando i controlli necessari e traducendoli il prima possibile in misure software appropriate. All’interno del software lifecycle, questi controlli vanno inoltre automatizzati e misurati continuamente.
- Come si vedrà meglio successivamente, anche l’automazione è un pilastro del DevSecOps, come lo è del DevOps.
- Citando direttamente la CSA, “Le tipiche iniziative DevSecOps possono richiedere da mesi ad anni per essere implementate, a seconda della portata e della complessità. Senza metriche misurabili, non è possibile comprendere i progressi e individuare i fallimenti”.
DevSecOps e il tema dell’automazione
Oltre a essere integrata nel paradigma di sviluppo del software, la sicurezza può essere anche automatizzata. L'automazione è, infatti, un pilastro fondamentale dei moderni flussi di lavoro DevOps, che puntano a ottimizzare e accelerare il ciclo di vita del software.
L'integrazione continua (Continous Integration - CI) ne è un esempio evidente: attraverso l'automazione delle build, del testing e dell'integrazione del codice, la CI garantisce un feedback rapido e costante, riduce al minimo il rischio di errori, accelera il time to market e lo allinea alle pressanti richieste del business.
Nel contesto del DevSecOps, l'automazione si estende anche al dominio della sicurezza, dando vita a pipeline CI complete e fondate sul principio della security by design. Questo si ottiene incorporando all'interno della pipeline una serie di controlli di sicurezza automatizzati, che si attivano in modo trasparente e continuo. Alcuni esempi sono l’analisi statica del codice, la verifica delle configurazioni, l’analisi delle dipendenze e il security testing (automatizzato).
L’automazione dei controlli di sicurezza consente di rilevare vulnerabilità in tempo reale, riducendo significativamente i rischi e gli errori umani. Questo, coordinato con un approccio continuo all'integrazione, non si limita ad allineare sviluppo, operazioni e sicurezza, ma fa sì che l’azienda possa realizzare applicazioni moderne, resilienti e solide a prescindere dalla loro complessità e dalla necessità di continui aggiornamenti.
Senza un approccio di questo tipo, infatti, sarebbe pressoché impossibile sviluppare Secure Code e aggiornarlo a cadenza quotidiana senza causare un’esplosione di vulnerabilità. Con il DevSecOps, questo diventa possibile.