Parlare di sicurezza nello sviluppo di applicazioni moderne richiede una visione veramente ampia da più punti di vista, ma in particolare nel suo sviluppo temporale. Se gli aspetti tecnologici e organizzativi ci permettono di scattare continue fotografie dello stato di avanzamento dello sviluppo di applicazioni, l’evoluzione delle normative e della sicurezza richiede un approccio rivolto al futuro, che garantisca la continuità del flusso di sviluppo anche al variare delle situazioni al contorno.
In questo senso, il ciclo di sviluppo del software è ormai consolidato intorno all’approccio DevOps. Nonostante siano possibili altri approcci, primo fra tutti l’Agile puro, il DevOps mostra oggi le migliori caratteristiche di robustezza e resilienza all’inglobamento di nuovi paradigmi, tra i quali oggi troneggiano IoT (Internet of Things), AI (Artificial Intelligence) e sicurezza.
Il modello DevOps si concentra su un processo di sviluppo continuo, end-to-end con test costanti e con consegna continua (continuous delivery) quotidiana. Ma soprattutto nell’approccio DevOps i membri del team hanno competenze diverse, il che permette con una certa semplicità di ampliare il loro raggio d’azione.
SecDevOps: la sfida del miglioramento
In Italia il paradigma è in fase di adozione. Secondo un’indagine del Politecnico di Milano, circa metà delle aziende italiane era poco incline al modello DevOps nel corso del 2020, che è stato un anno di blocco per gli effetti della pandemia. È estremamente probabile che già nel 2021 il recupero degli investimenti porti a un’accelerazione nell’adozione, con conseguente aumento della competitività della concorrenza in molti settori.
Guardando ai principali freni che limitano una piena adozione del DevOps, gli operatori della filiera segnalano la pervasività dei metodi di sviluppo tradizionali (nel 59% dei casi), la mancanza di competenze (57%) e di una cultura organizzativa in linea con i principi dell’Agile (55%) e la resistenza al cambiamento organizzativo (54%).
Un percorso di aggiornamento dell’approccio aziendale per i componenti dei vari Team, tramite il supporto di un partner di lunga esperienza, permette di superare agevolmente questi iniziali ostacoli.
La maggior parte dei player della filiera digitale riconosce che l’introduzione di strumenti e metodologie Agile e DevOps per la gestione dei progetti ha avuto un impatto rilevante sul proprio modello di business di sviluppo, insieme con la ricerca di elementi di differenziazione in un mercato sempre più competitivo. Visto dal cliente, l’approccio DevOps aumenta la soddisfazione (81% dei casi) e la collaborazione (69%).
Fig. 1 – L’utilizzo di strumenti e metodologie DevOps nei progetti IT da parte delle aziende italiane, 2020.
Fonte: Osservatorio Cloud Transformation
DevOps security fin dalla fase di design
Oggi il punto di partenza è la security by design: la sicurezza va progettata fin dall’inizio dello sviluppo di applicazioni, altrimenti aumentano a dismisura le probabilità di trovare dei colli di bottiglia molto onerosi da risolvere.
La fase di progettazione sta quindi diventando essenziale, insieme alla consapevolezza della centralità della gestione della security, grazie alla coesistenza dei relativi team.
Le app moderne sono microservizi che vengono eseguiti in contenitori, comunicano tramite API e distribuiscono il codice in CI/CD completamente automatizzate.
Tutte le operazioni devono essere svolte tramite tool molteplici, ciascuno con le sue specificità, ma tutti inseriti nello stesso modello SDLC, software-development life cycle. All’interno di questo ciclo devono essere inseriti quanti più tool possibili di ciascuna delle fasi di lavorazione (solitamente 7), per avere i massimi risultati nell’acquisizione delle competenze e anche nell’attrazione di nuovi talenti all’interno dell’organizzazione.
Fig. 2 – Il ciclo CI/CD ha a disposizione sempre più tools di ogni tipo.
Fonte: Nginx
Best practice: il WAF
Dal punto di vista degli strumenti, una pratica soluzione è un WAF, Web Application Firewall, modellato sul ciclo di sviluppo del software nell’accezione dell’approccio DevOps.
Per integrare la sicurezza, i team DevOps devono coesistere con team specifici che seguono lo stesso approccio senza rallentare la velocità di rilascio o le prestazioni. Gli ambienti di sviluppo devono restare integrati nel processo CI/CD. Uno strumento specifico è altamente consigliato, per non dire necessario.
Un WAF implementa l’integrazione di team e competenze tra sviluppo, operazioni e sicurezza, permettendo di partire con una security by design robusta nel tempo. Inoltre, riduce la complessità e la proliferazione di strumenti di sviluppo e controllo, diminuendo il downtime e soprattutto le violazioni del sistema.
Tra le soluzioni WAF oggi sul mercato troviamo ModSecurity, Amazon WAF e Nginx AppProtect. Un recente report di Gigaom confronta queste tre soluzioni nell’ambito delle alte prestazioni. Nonostante i molti elementi da valutare, il report sembra indicare una maggior diffusione di Nginx AppProtect negli ambiti ad alta prestazione.
In alcuni ambiti, ma con un’adozione in costante aumento, si evidenzia l’importanza di considerare i punti strategici che portano all’adozione di questo strumento. Può non essere necessario oggi, ma fa parte di un percorso di miglioramento che va tenuto presente il prima possibile.
Fig. 3 – Un corretto uso delle API è centrale in una strategia di DevOps security.
Fonte: Nginx