Vai al paragrafo

La sicurezza nel ciclo di vita dello sviluppo del software

Copia URL

Il ciclo di vita dello sviluppo del software (SDLC) è un framework usato per sviluppare, distribuire ed eseguire la manutenzione dei software. Tale framework prevede l'esecuzione di svariati processi e attività che vengono suddivisi in fasi (da sei a otto) allo scopo di migliorare la qualità dei software. Strutturare le attività in fasi agevola la misurazione e l'analisi, due strumenti indispensabili per ottimizzare i software, e consente di monitorare i progressi e i costi. 

Le fasi dell'SDLC:

  • Pianificazione: definisci lo scopo e le finalità del software
  • Requisiti: definisci le funzionalità del software
  • Progettazione: definisci i parametri chiave come architettura, piattaforme e interfacce utente
  • Sviluppo: crea e implementa il software
  • Documentazione: redigi i materiali che aiuteranno utenti e stakeholder a utilizzare il software
  • Test: convalida il software verificando che soddisfi i requisiti
  • Deployment: rendi il software disponibile ai suoi utenti finali
  • Manutenzione: risolvi i bug e le vulnerabilità del software

Avendo entrambi a che fare con lo sviluppo e la gestione del software, l'SDLC e la gestione del ciclo di vita dell'applicazione (ALM) possono sembrare due concetti interscambiabili. In realtà l'SDLC è solo una parte dell'ALM incentrata principalmente sulla fase di sviluppo e su una singola applicazione. L'ALM invece è utilizzato per ottenere una visione più ampia sulla gestione della gamma di prodotti software.  

Le otto fasi dell'SDLC vengono eseguite in sequenza e ciò potrebbero indurre a pensare che l'SDLC segua una metodologia di sviluppo del software specifica, quella a cascata. Occorre tuttavia tenere presente che tutti i modelli di sviluppo — a cascata, agile, DevOps, snello, iterativo e a spirale — sono metodologie adottate dal framework SDLC. Da un modello all'altro possono variare i nomi delle fasi, il numero di fasi o l'ordine in cui vengono eseguite. Ad esempio, la pianificazione e l'analisi dei requisiti potrebbero essere accorpate in un'unica fase. Ma a prescindere da queste differenze, l'SDLC fornisce un framework che aiuta a capire ed esaminare le attività necessarie per lo sviluppo del software.

Metodologie SDLC come quella agile e DevOps pongono l'accento sulla natura iterativa dello sviluppo del software a differenza dell'approccio lineare fornito dal modello a cascata.

È ancora pratica comune nel settore dello sviluppo del software aspettare la fase di test per occuparsi delle attività relative alla sicurezza. Questo significa che un aspetto importante come la sicurezza viene introdotto solo in una delle ultime fasi del processo, quando le principali attività di progettazione e implementazione sono già state completate. Inoltre, i controlli di sicurezza eseguiti durante la fase di test sono spesso superficiali, si limitano a scansioni e test di penetrazione, che potrebbero non rilevare i problemi di sicurezza più complessi. 

"Shift left" e "shift right" sono termini che indicano metodi per rispondere all'esigenza di dare maggior peso alla sicurezza nelle varie fasi dell'SDLC. Adottando questi principi, i team riescono a risolvere in anticipo le falle nella sicurezza, a risparmiare denaro che verrebbe altrimenti speso per costose rilavorazioni e ad aumentare la probabilità di ridurre i ritardi per la messa in produzione.

Per adottare un processo di sicurezza efficace occorre anticipare l'adozione della sicurezza nell'SDLC e assicurarsi di integrarla in ogni fase, dall'ideazione del progetto fino alla sua realizzazione. Un ciclo di vita dello sviluppo del software sicuro (SSDLC) richiede di integrare le attività di sicurezza in ogni sua fase. Queste includono:

Fase dell'SDLC

Attività di sicurezza

Pianificazione
  • Valuta il panorama delle minacce di sicurezza e dei rischi
  • Valuta l'impatto di eventuali incidenti di sicurezza per l'azienda, ad esempio il rischio reputazionale
Requisiti
  • Includi i requisiti di sicurezza quando definisci i requisiti funzionali
  • Individua e incorpora i requisiti di conformità alle normative vigenti
Progettazione
  • Introduci la modellazione delle minacce
  • Assicurati che gli aspetti legati alla sicurezza siano parte integrante della pianificazione dell'architettura
  • Valuta l'impatto sulla sicurezza delle scelte operate in fase di progettazione come la piattaforma e l'UI.
Sviluppo
  • Addestra gli sviluppatori sulle procedure di programmazione sicure
  • Introduci gli strumenti di valutazione della sicurezza nel processo di sviluppo
  • Esamina le dipendenze del software e riduci al minimo i rischi per la sicurezza
Documentazione
  • Documenta i processi e i controlli di sicurezza
  • Raccogli le informazioni necessarie per audit, controlli di conformità e verifiche di sicurezza
Test
  • Adotta processi di revisione del codice
  • Esegui test di sicurezza come i test SAST e IAST
Deployment
  • Valuta il livello di sicurezza dell'ambiente di deployment
  • Esamina le configurazioni alla ricerca di criticità di sicurezza
Manutenzione
  • Introduci attività di monitoraggio per rilevare le minacce
  • Preparati a rispondere a vulnerabilità e intrusioni con le correzioni adeguate

Per riuscire a gestire il numero crescente di minacce alla sicurezza, le organizzazioni hanno bisogno di aggiornare costantemente le procedure e i processi di sicurezza. Devono inoltre assicurarsi di anticipare quanto più possibile l'introduzione dei controlli di sicurezza ed estenderli a tutti i processi di sviluppo e deployment. L'adozione di processi DevOps e di pipeline di integrazione e distribuzione continue (CI/CD) automatizzate è diventata la scelta di molte organizzazioni per garantire la rapidità delle iterazioni. Per evitare eventuali intoppi, è necessario che anche la sicurezza sia un processo continuo e automatizzato. Insieme a progettazione, sviluppo, operazioni e manutenzione, i team di sviluppo devono anche tenere a mente la sicurezza delle applicazioni. 

DevSecOps è un insieme di pratiche che includono persone, processi e tecnologia pensato per migliorare la velocità e l'efficienza dello sviluppo del software e per incrementare la sicurezza, la coerenza, la ripetibilità e la collaborazione. Condividere la responsabilità tra i team di sviluppo, quelli operativi e quelli di sicurezza è la condizione alla base dell'approccio DevSecOps, le cui finalità includono:

  • Migliorare la sicurezza e ridurre i rischi. Risolvendo più vulnerabilità di sicurezza a monte nel ciclo di vita dello sviluppo dell'applicazione e dell'infrastruttura, si riduce la possibilità che si verifichino problemi in produzione.
  • Aumentare velocità ed efficienza dei cicli di rilascio DevOps. Gli strumenti e le procedure di sicurezza esistenti vengono sostituiti con soluzioni per l'automazione e la standardizzazione. Puntando su automazione e standardizzazione nella toolchain e implementando approcci Infrastructure as Code, Security as Code e Compliance as Code, si aumentano la ripetibilità e la coerenza, due aspetti indispensabili per garantire processi di sviluppo efficienti.
  • Diminuire i rischi e incrementare la visibilità. Implementando i controlli di sicurezza a monte nel ciclo di vita dello sviluppo dell'applicazione e dell'infrastruttura, si limita l'errore umano, si ottimizzano sicurezza, conformità, prevedibilità e ripetibilità, e si semplifica la fase di audit.

Completare le quattro fasi del modello di maturità DevSecOps permette di integrare la sicurezza nella pipeline CI/CD e di adattarla all'evoluzione delle esigenze aziendali e/o globali. L'Open Web Application Security Project® (OWASP) è una fondazione senza scopo di lucro che contribuisce a migliorare la sicurezza del software nei progetti open source realizzati dalla community e si impegna ad aumentare la consapevolezza sui principi della sicurezza IT. OWASP offre gratuitamente progetti, strumenti e documentazione che aiutano a migliorare il ciclo di vita di sviluppo della sicurezza.

La sicurezza della catena di distribuzione del software combina le procedure consigliate per la gestione del rischio ai principi della sicurezza informatica allo scopo di tutelare la catena di distribuzione del software da possibili vulnerabilità. Con catena di distribuzione del software si intende l'insieme delle tecnologie, dei processi e delle persone coinvolti in qualsiasi attività che riguardi il codice durante l'SDLC, dallo sviluppo applicativo alla pipeline CI/CD, al deployment. 

La sicurezza della catena di distribuzione del software è importante per le organizzazioni, per i loro clienti e per qualsiasi azienda che basi il suo lavoro su contributi open source. Le organizzazioni oggi non devono soltanto tutelate i loro sistemi da eventuali violazioni, ma devono preoccuparsi anche di non diventare veicolo di attacchi perpetrati ai danni di altre aziende. Riuscire a proteggere la catena di distribuzione del software è indispensabile per garantire la sicurezza di tutti. 

Di seguito alcune procedure consigliate per i team di sicurezza:

  • Adotta il principio del privilegio minimo per l'accesso alle risorse in tutta la catena di distribuzione (ad esempio strumenti per sviluppatori, repository del codice sorgente e altri sistemi software), abilita l'autenticazione a più fattori e usa password complesse.
  • Rafforza la sicurezza di tutti i dispositivi connessi e dei dati sensibili.
  • Assicurati di conoscere i fornitori con cui collabori, a partire dalle aziende più importanti. Esegui una valutazione del rischio per stabilire il livello di sicurezza informatica dei fornitori e le loro policy pubbliche sulle vulnerabilità.

Red Hat offre un approccio alla sicurezza affidabile e strutturato su più livelli che coinvolge l'infrastruttura, lo stack e il ciclo di vita applicativi per migliorare la sicurezza dei carichi di lavoro on premise, nel cloud o all'edge. Le tecnologie Red Hat sono concepite per garantire la sicurezza della catena di distribuzione del software. Disponendo di una base orientata alla sicurezza, le organizzazioni possono concentrarsi sullo sviluppo, sulla gestione e sul controllo degli ambienti ibridi, adottare una strategia di automazione ed estendere la sicurezza nell'SDLC con le procedure DevSecOps.

Red Hat e il suo ecosistema dei partner di sicurezza offrono un approccio DevSecOps completo che permette alle organizzazioni di continuare a dedicarsi all'innovazione senza compromettere la sicurezza. Grazie alle sue competenze e capacità, Red Hat è in grado di affiancare le aziende nel loro percorso di adozione di DevSecOps offrendo un'ampia gamma di soluzioni per la creazione, la distribuzione e l'esecuzione di applicazioni orientate alla sicurezza in ambienti cloud ibridi e aperti.

Keep reading

ARTICOLO

Cos'è la metodologia DevSecOps?

Per sfruttare tutta l'agilità e la reattività di un approccio DevOps, occorre tenere conto anche di un altro elemento cruciale dell'intero ciclo di vita delle tue applicazioni: la sicurezza IT.

ARTICOLO

La sicurezza nel cloud

I problemi di sicurezza hanno un impatto sia sui sistemi IT tradizionali che su quelli cloud. Scopri perché la sicurezza nel cloud è differente.

ARTICOLO

Cosa si intende con SOAR?

L'acronimo SOAR indica 3 capacità chiave utilizzate dai team che si occupano di sicurezza: gestione dei casi e dei flussi di lavoro, automazione delle attività e sistema centralizzato di accesso, query e condivisione dei dati di intelligence sulle minacce.