La capacità dei gruppi di sicurezza informatica di essere coinvolti nei progetti innovativi dell’azienda e il successo nel far nascere le nuove soluzioni digitali con all’interno i requisiti di sicurezza informatica è un indicatore di maturità organizzativa. Un approccio basato sul “security by design” è in grado di aumentare la robustezza delle soluzioni e al tempo stesso di garantire migliore efficienza grazie alla riduzione delle costose “rilavorazioni” prima della messa in campo (release management).
Indice degli argomenti
Il concetto di “shift left”
La capacità di inserire da subito la sicurezza nei processi di sviluppo software sequenziale (che prevedono nell’ordine la definizione dei requisiti, l’analisi, la progettazione, la creazione del codice software, il test delle funzionalità e i rilasci in produzione), ha portato gli esperiti di “software development” a coniare il termine “shift left”.
Lo “shift left” si applica sempre di più anche al mondo dei test (compresi quelli di sicurezza) che in passato venivano eseguiti solo alla fine del processo di creazione del codice software delle applicazioni.
I problemi applicativi identificati in fase avanzata del processo di sviluppo software, causano costose riprogettazioni e ritardi (aumento del Time To Market). L’idea dello “shift left” applicata al test è quella di coinvolgere le squadre di testers nelle prime fasi del processo e di effettuare i test durante tutto il ciclo di sviluppo software. La seguente immagine mostra graficamente questo concetto.
Esistono quattro modalità per spostare i test all’inizio del ciclo di vita; queste modalità di sviluppo sono denominate “shift left” test tradizionale, incrementale, Agile/DevOps e “model based”.
Nell’articolo mi soffermo solo su quello che ho sperimentato personalmente in azienda, quindi Shift Left Testing Tradizionale ed Shift Left Agile/DevOps.
Shift Left Testing Tradizionale
Il tradizionale Shift Left Testing sposta l’attività di test più in basso ed a sinistra nel modello a V (tipico dei framework di validazione applicativa), come mostrato nella prossima immagine.
In aggiunta al classico test delle funzionalità end to end a fine del processo (per esempio test di sistema, test dell’interfaccia utente), lo Shift Left Testing Tradizionale si concentra sui test unitari e di integrazione eseguiti direttamente nell’ambiente di sviluppo sia a livello di codice statico che dinamico.
Shift Left Testing Agile/DevOps
Negli ultimi anni tantissime aziende alle prese con la trasformazione digitale dei loro sistemi legacy IT o la digitalizzazione dei loro processi di vendita (si pensi alla tematica dell’omni-channel), hanno adottato metodologie di sviluppo agile, utilizzando un approccio allo sviluppo software che prevede gruppi di lavoro misti di sviluppatori ed esperiti di User Experience e di Marketing (“squads” e “tribes”). Lo sviluppo avviene con cicli incrementali e rilasci veloci (di solito ogni 15 giorni).
Nel caso specifico del DevOps si utilizzano metodologie di sviluppo software e tools basati sul “continuous integration” (CI) e “continuous delivery” (CD). (5, 6)
Le metodologie Agile e DevOps prevedono quindi numerosi V (“sprint”) di breve durata al posto di un numero singolo o piccolo di V; i numerosi “sprint” sono rappresentati in Figura 3 e rappresentano la più significativa differenza rispetto allo “shift-left” testing tradizionale.
Shift Left applicato alla security (Shift Left Security)
I vantaggi dello “shift left” non sono esclusivi del processo di test del ciclo di sviluppo (quality assurance) ma possono anche aiutare a migliorare l’efficacia dei controlli di sicurezza informatica sui nuovi prodotti e servizi.
Se dall’inizio dello sviluppo vengono effettuati i controlli sull’applicazione per identificare problemi di sicurezza, è altamente improbabile che si presentino gravi problemi nella fase finale del collaudo, con il rischio di dover bloccare la messa in produzione della soluzione.
Un test di sicurezza effettuato nelle fasi iniziali dello sviluppo software porta a identificare problemi che di solito sono circoscritti e meno costosi da sistemare.
Un altro importante beneficio dello “Shift Left Security” è legato alla identificazione a priori degli standard di sicurezza da adottare durante lo sviluppo delle applicazioni (penso ad esempio a OWASP per le applicazioni web).
Quando gli sviluppatori sono informati in anticipo sugli standard di sicurezza che devono essere adottati, il gruppo di sviluppo può essere più consapevole dei passaggi che devono essere intrapresi per garantire la compliance a tali standard e per incorporarli nel proprio codice.
Nel caso di utilizzo di DevOps si può utilizzare la “continuous integration” (CI) per migliorare la sicurezza, oltre che per velocizzare lo sviluppo applicativo ed i cicli di controllo qualità. La “continuous integration” aiuta a creare e manutenere facilmente ambiente di sviluppo e test (si parla di “build applicative”) allineate all’ambiente di produzione. Questa capacità di creare “build applicative” ad hoc permette di salvaguardare l’ambiente di produzione (evitando qualsiasi alterazione dello stesso a seguito di configurazioni errate o conseguenze non volute di test di sicurezza) garantendo una maggiore libertà e flessibilità nella esecuzione dei test di sicurezza su ambienti allineati a quello di produzione.
Conclusione
La digitalizzazione delle applicazioni e l’avvento di nuove metodologie di sviluppo software (Agile/DevOps) a complemento di quelle tradizionali (sequenziale – waterfall) richiedono lo “shift left” dei requisiti e dei test di sicurezza.
L’approccio “shift left” è efficace nel garantire che la sicurezza sia presa in considerazione da subito nella progettazione della soluzione e nel permettere una rilevazione precoce di bug e problemi di sicurezza informatica, rendendo il ciclo di vita dello sviluppo software più veloce, affidabile e sicuro.