DevSecOps: principi e strumenti per la sicurezza integrata

Secondo l’ultimo rapporto Clusit, l’Italia, nel 2022, ha subito il 7,6% degli attacchi globali, contro il 3,4% del 2021: nonostante le imprese investano sempre di più in sicurezza, la crescita degli attacchi è continua e inarrestabile. Ciò che desta maggior preoccupazione è che le tecniche utilizzate dagli hacker e dai malintenzionati sono rimaste pressoché invariate rispetto a trent’anni fa, ma i danni che riescono a infliggere sono sempre più gravi. È quindi necessario cambiare radicalmente approccio al problema.

È oggi essenziale integrare la sicurezza lungo l’intero ciclo di vita del software (SDLC – Software Development Lifecycle ) in tutti gli ambienti. È fondamentale che la sicurezza dei prodotti e servizi sia integrata fin dall’inizio del processo di sviluppo e non è più sufficiente limitarsi a considerarla solamente durante la fase di realizzazione, quando ormai molte scelte sono già state fatte e le opportunità di intervento sono ridotte. Questo concetto di security by design deve essere applicato a tutte le attività, dalle scelte architetturali alla selezione o sviluppo di soluzioni, per le modalità on-premise e on cloud. Si tratta di uno dei pilastri dell’approccio DevSecOps, che integra la sicurezza nell’intero processo di sviluppo e distribuzione del software, dalla pianificazione alla manutenzione.

Che cos’è DevSecOps

DevSecOps – DEVelopment, SECurity, OPeration – è un approccio che mira ad automatizzare l’integrazione della sicurezza in ogni fase dell’SDLC, dalla progettazione iniziale, al test, fino alle fasi finali di deployment e monitoraggio. Rappresenta la naturale – e necessaria – evoluzione di DevOps e della gestione della sicurezza nelle imprese, che tradizionalmente prende in considerazione la sicurezza alla fine del ciclo di sviluppo, quasi come se fosse un aspetto secondario. Se l’approccio tradizionale era gestibile quando gli aggiornamenti software erano rilasciati solamente un paio di volta l’anno e l’SDLC era molto esteso, ora che dura settimane, se non giorni, non è più possibile considerare la sicurezza come un’appendice.

DevSecOps affronta i problemi non appena emergono e cioè quando sono più facili, più veloci e meno costosi da aggiustare. Inoltre, questo approccio, rende la sicurezza una responsabilità condivisa tra i team di sviluppatori, sistemisti e di sicurezza, in contrapposizione all’approccio tradizionale che vede i professionisti della cyber security come gli unici responsabili. Ciò significa che le decisioni relative a tutti gli aspetti dello sviluppo del software, come ad esempio quanti controlli di sicurezza sono necessari o quanto è importante la velocità di distribuzione, devono essere prese in modo collaborativo. In altre parole, scegliere un approccio DevSecOps vuole anche dire integrare la sicurezza in modo continuo, ad esempio determinando la propensione al rischio e conducendo analisi rischio/beneficio.

> Scarica la checklist e scopri come implementare una metodologia DevSecOps efficace utilizzando l’automazione dell’IT 

DevSecOps: sicurezza integrata nell'SDLC

I principi DevSecOps

Come estensione di DevOps, DevSecOps ne condivide i principi, ma pone la sicurezza al primo posto.

  • Cultura: la cultura DevOps promuove la collaborazione tra i team di sviluppo e gli addetti alle operations e la co-responsabilità della distribuzione di un software. DevSecOps include la collaborazione con il team di cyber security, promuovendo una cultura in cui anche gli addetti alle operations e gli sviluppatori integrano la sicurezza nel proprio lavoro. Questo significa coinvolgere il team di sicurezza già dalle fasi iniziali di pianificazione ed assicurarsi che la sicurezza sia una responsabilità condivisa da tutti.
  • Automazione: DevSecOps promuove l’automazione della sicurezza, in modo da tenere il passo di un SDLC molto breve. Lo scopo ultimo dovrebbe essere l’automazione totale dei controlli di sicurezza, senza che quest’ultima intralci in alcun modo l’agilità propria di DevOps.
  • Monitoraggio: DevSecOps promuove l’utilizzo e lo sviluppo di metriche che tracciano potenziali minacce e vulnerabilità lungo tutto il ciclo di sviluppo, spesso in real time.
  • Condivisione: DevSecOps include il team di sicurezza nell’ambiente di condivisione DevOps. La condivisione dei team delle sfide e dei problemi di tutti i giorni migliora il processo di sviluppo.
  • Spostare la sicurezza a sinistra (Shift left): immaginiamo per un attimo la linea di rappresentazione del tradizionale processo di sviluppo: la sicurezza è solamente un passo prima della fine. DevSecOps sposta la sicurezza a sinistra, quindi all’inizio del processo, includendola di fatto in ogni fase dell’SDLC.

> Leggi anche: Modello di sicurezza Zero Trust: i principi fondamentali

Gli strumenti e le fasi di DevSecOps

Pur essendo un approccio universalmente riconosciuto, DevSecOps non è una metodologia e non delinea fasi standardizzate. Questo lascia la libertà ad ogni azienda, team o progetto di variare e reiterare ogni fase al bisogno. Possiamo però elencarne 6 fasi principali:

  1. Pianificazione: in questa fase i team di sviluppo, IT Operation e di sicurezza definiscono gli obiettivi del progetto, le modalità e la frequenza dei controlli di sicurezza. Per quanto questa fase non lasci molto spazio all’automazione, possono essere utilizzati strumenti come IriusRisk per la progettazione collaborativa e la modellazione delle minacce.
  2. Codice: in questa fase, il codice viene scritto e testato. Alcuni strumenti impiegati in questa fase per l’analisi del codice statico sono: SpotBugs, PMD e CheckStyle, che si adattano a più linguaggi di programmazione e IDE.
  3. Build: il codice sorgente viene tradotto in un pacchetto eseguibile o in un artefatto del software. Questa fase si focalizza sull’analisi automatica della sicurezza dell’artefatto, impiegano alcuni strumenti open source quali: OWASP Dependency-Check e SonarQube. Questi strumenti possono essere integrati in una pipeline CI/CD per automatizzare i test. > Leggi anche: Metodo CI/CD: una best practice DevOps
  4. Test: il codice viene sottoposto a test di qualità e sicurezza per garantire che soddisfi gli standard di qualità e che sia sicuro per il rilascio. Questa fase utilizza strumenti di test della sicurezza delle applicazioni dinamiche (DAST) per rilevare flussi di applicazioni live. A questa fase appartengono strumenti open source come JMeter o OWASP ZAP che consentono di eseguire test di sicurezza automatizzati e di identificare eventuali vulnerabilità.
  5. Rilascio e distribuzione: l’artefatto della fase di build viene distribuito in produzione. Questa è una fase critica perchè si possono verificare problemi derivanti da eventuali differenze tra l’ambiente di produzione e di staging e quello di sviluppo, che devono necessariamente essere esaminate. In questa fase, l’automazione della sicurezza può essere implementata grazie a strumenti open source di verifica runtime come Osquery e Falco. Gli strumenti di gestione della configurazione sono gli altri protagonisti di questo step, perché permettono di modificare la stessa infrastruttura secondo le esigenze di sicurezza. I team possono utilizzare strumenti open source come Ansible, Terraform, Docker e Chef per automatizzare il processo di configurazione dell’infrastruttura.
  6. Monitoraggio: una volta che l’applicazione è stata distribuita e stabilizzata, è necessario che venga monitorata costantemente, al fine di rilevare eventuali minacce o vulnerabilità. Strumenti open source come Nagios o Prometheus possono essere utilizzati per il monitoraggio e l’analisi delle prestazioni del sistema.

Considerando la sicurezza in ogni fase, è quindi possibile progettare software e applicazioni sicure. Man mano che la tecnologia evolve, l’attenzione verso ogni aspetto della cyber security deve essere impeccabile. L’approccio DevSecOps aiuta aziende e team a sviluppare più rapidamente software e applicazioni qualitativamente migliori e sicure.

Scarica la checklist

5 modi per implementare una metodologia DevSecOps efficace utilizzando l’automazione dell’IT

I modelli di sicurezza tradizionali spesso entrano in conflitto con le metodologie agili di sviluppo delle applicazioni e le procedure DevOps, ma l’automazione dell’IT, tramite Red Hat® Ansible® Automation Platform, può aiutare a implementare con successo iniziative DevSecOps, garantendo una strategia di automazione efficace che coinvolge tutta l’azienda. Scopri come!