Stabilire una disciplina di sicurezza per lo sviluppo

Questo articolo aiuta i team della sicurezza e della tecnologia a stabilire e modernizzare una disciplina di sicurezza di sviluppo. Questa disciplina aiuta i team di sicurezza, ingegneria e tecnologia a garantire che il software sia progettato, costruito, integrato e distribuito in modo sicuro, senza rallentare l'innovazione.

Le discipline di sicurezza sono raggruppamenti di lavoro correlati alla sicurezza che aiutano le organizzazioni a offrire costantemente risultati di sicurezza nell'intero patrimonio tecnologico. All'interno del modello di adozione della sicurezza, le discipline consentono di fornire un ponte tra scenari aziendali e implementazione tecnica, garantendo che gli investimenti per la sicurezza si traduca in risultati misurabili reali come parte del modello di adozione della sicurezza.

Perché questa disciplina?

Il software è profondamente interconnesso con identità, dati, infrastruttura e processi aziendali. Quando la sicurezza di sviluppo è debole o incoerente, ogni versione del software può introdurre nuove vulnerabilità che gli utenti malintenzionati sfruttano per ottenere l'accesso ad asset aziendali più ampi.

Senza una disciplina di sicurezza dello sviluppo efficace, le organizzazioni in genere sperimentano:

  • Maggiore rischio da vulnerabilità software introdotte durante lo sviluppo.
  • Compromissione dell'applicazione che consente lo spostamento laterale tra identità e dati.
  • Interruzione delle operazioni aziendali e dei ricavi.
  • Esposizione o uso improprio dei dati dei clienti e dei dati regolamentati.
  • Accumulo di debito tecnico che aumenta il rischio a lungo termine e i costi di correzione.

Una disciplina avanzata per la sicurezza dello sviluppo garantisce che ogni versione riduca i rischi, invece di complicarla.

Obiettivi e risultati

La disciplina Sicurezza di sviluppo riduce il rischio dell'organizzazione assicurando che tutto il software, sviluppato internamente o dai partner, sia progettato, costruito, integrato e distribuito in linea con gli standard di sicurezza, senza rallentare la distribuzione o l'innovazione.

Le organizzazioni che maturano questa disciplina ottengono:

  • Sicurezza integrata nei processi di sviluppo anziché aggiunta in ritardo.
  • Identificazione e correzione precedenti dei difetti di progettazione e implementazione.
  • Cicli di rilascio più prevedibili e sicuri.
  • Riduzione delle operazioni di rielaborazione, correzioni di emergenza e interruzione operativa.
  • Minore accumulo di debito tecnico e di sicurezza nel tempo.

La sicurezza dello sviluppo garantisce che il comportamento di sicurezza migliora continuamente con ogni versione, anziché essere reimpostato periodicamente.

Modifiche al lavoro del team

È importante che una disciplina sicurezza di sviluppo soddisfi gli sviluppatori e i team di prodotto in cui si trovano, concentrandosi sull'integrazione della sicurezza nei flussi di lavoro di sviluppo esistenti, anziché introdurre controlli in fase di ritardo, processi di revisione a elevato impatto o persino ignorare la sicurezza nei processi di sviluppo.

Questo approccio viene spesso descritto come spostarsi a sinistra, introducendo il pensiero di sicurezza in precedenza nell'ideazione, nella progettazione e nell'implementazione, quando i problemi sono più semplici e meno costosi da risolvere. Lo spostamento a sinistra non significa dire nulla in precedenza nel processo. Introduce invece una discussione con informazioni sulla sicurezza in anticipo per migliorare le decisioni relative ai prodotti e garantire che le soluzioni soddisfino i requisiti aziendali e di sicurezza.

I principi chiave includono:

  • Integrazione anticipata: prendere in considerazione la sicurezza durante l'ideazione e la progettazione, non solo i test
  • Allineamento degli sviluppatori: soddisfare i team di sviluppo e di prodotto in cui lavorano già
  • Piccola modifica incrementale: preferire l'automazione e i miglioramenti a basso attrito
  • Miglioramento continuo: considerare la sicurezza come disciplina in corso, non come attività cardine

Nel corso del tempo, l'integrazione coerente riduce le esercitazioni sul fuoco e accelera il recapito anziché rallentarlo.

Come applicare questa disciplina

Per applicare la disciplina Sicurezza di sviluppo in modo efficace, concentrarsi sulla definizione di un approccio coerente alla creazione e alla gestione di applicazioni e servizi sicuri nell'organizzazione:

  1. Definire una strategia di sviluppo sicura allineata ai rischi aziendali
    Stabilire un approccio chiaro per il modo in cui le applicazioni e i servizi vengono progettati, compilati e mantenuti per ridurre il rischio di compromissione e proteggere le funzionalità aziendali critiche.
  2. Incorporare la sicurezza nei processi di sviluppo e progettazione
    Assicurarsi che le procedure di sicurezza siano integrate nelle attività di pianificazione, progettazione, sviluppo e distribuzione anziché applicate dopo il fatto.
  3. Stabilire procedure di sviluppo sicure standardizzate
    Fornire indicazioni chiare per garantire che le procedure di codifica, test e rilascio sicure vengano applicate in modo coerente tra team e progetti.
  4. Allineare la sicurezza dello sviluppo agli asset critici e agli scenari aziendali
    Classificare in ordine di priorità le protezioni per applicazioni e servizi che supportano asset di valore elevato e operazioni aziendali chiave.
  5. Migliorare continuamente in base a rischi, vulnerabilità e feedback
    Usare informazioni dettagliate da vulnerabilità, eventi imprevisti e risultati dei test per rafforzare le procedure di sviluppo e ridurre i rischi nel tempo.

Gestire il cambiamento

La sicurezza di sviluppo moderna viene in genere implementata tramite un approccio DevSecOps che combina la distribuzione agile con procedure essenziali di governance e qualità prima del rilascio.

Invece di scegliere tra velocità e sicurezza, DevSecOps si concentra sulla protezione degli aspetti chiave del ciclo di vita di sviluppo per ridurre i rischi urgenti, senza impedire cicli di rilascio rapidi:

Proteggere la progettazione : usare modelli di progettazione di sicurezza collaudati e convalidare le progettazioni tramite la modellazione delle minacce. Proteggere il codice : seguire procedure di codifica sicure e convalidare software e dipendenze. Proteggi la pipeline – Convalida il processo della pipeline e protegge i sistemi CI/CD da compromissioni e modifiche non autorizzate. Garantire la tracciabilità delle modifiche apportate alla pipeline e al software che passa attraverso la pipeline. Operazioni sicure: assicurarsi che i carichi di lavoro distribuiti seguano la configurazione, l'applicazione di patch e le procedure consigliate operative.

I team possono migliorare i risultati ottimizzando continuamente la collaborazione tra sviluppo, sicurezza e operazioni, bilanciando gli obiettivi di distribuzione funzionale con affidabilità e riduzione dei rischi.

Strategia DevSecOps che combina le procedure di sviluppo tradizionali con tecniche Agile.

Questo miglioramento incrementale continuo deve essere applicato sia alla produzione di lavoro (codice software prodotto nel ciclo di vita) sia alla maturità del ciclo di vita di sviluppo stesso.

Definire un processo DevSecOps

La sicurezza di sviluppo viene comunemente implementata tramite un modello operativo DevSecOps che si evolve nel tempo anziché essere completamente formato. DevSecOps riunisce lo sviluppo, la sicurezza e le operazioni per ottenere risultati migliori grazie al miglioramento continuo.

La maggior parte delle organizzazioni procede attraverso queste fasi:

Sviluppo (sviluppo) : la prima versione di produzione è incentrata sulla distribuzione di un prodotto minimo funzionante (MVP) che soddisfi i requisiti aziendali di base. DevOps: dopo il rilascio iniziale, i team si concentrano su iterazioni rapide, stabilità operativa e governance tramite recapito continuo. DevSecOps: man mano che la collaborazione matura, lo sviluppo, la sicurezza e le operazioni collaborano per perfezionare continuamente i processi e bilanciare velocità, rischio e affidabilità.

Strategia DevSecOps che combina controlli di qualità tradizionali e sviluppo agile.

Questa progressione consente alle organizzazioni di migliorare i risultati della sicurezza senza sacrificare agilità o innovazione.

Definire una baseline sicura per l'MVP

Un passaggio chiave di questo modello consiste nel definire ciò che costituisce un prodotto minimo funzionante (MVP) dalle prospettive di sviluppo, sicurezza e operazioni. La definizione di questa baseline condivisa crea chiarezza tra i team e consente un miglioramento coerente nel tempo.

Componente Dettagli
Dev(elopment) Assicurarsi che il software soddisfi i requisiti aziendali e funzionali minimi.
Sec(urity) Assicurarsi che il software soddisfi i requisiti minimi di sicurezza e conformità.
Op(eration)s Assicurarsi che il software soddisfi i requisiti minimi di qualità, affidabilità e conformità operativa.

I requisiti MVP variano in base all'organizzazione e al settore e sono influenzati dall'appetito del rischio, dall'esposizione alle normative e dalla criticità aziendale. Questi requisiti spesso si evolvono man mano che l'organizzazione, il panorama delle minacce e i modelli di distribuzione cambiano.

Miglioramento continuo del software

Dopo la versione di produzione iniziale, i carichi di lavoro passano a cicli di miglioramento continuo. In questa fase, lo sviluppo, la sicurezza e le operazioni affinano sia il software che il processo di distribuzione. Le attività di sicurezza sono incentrate su:

  • Integrare la sicurezza in modo nativo nei flussi di lavoro di sviluppo, usando gli stessi strumenti e modelli di definizione delle priorità di altri lavori di progettazione
  • Identificare rapidamente, classificare in ordine di priorità e correggere i bug di sicurezza come parte dei cicli di rilascio standard.

Questo approccio è in linea con gli insegnamenti della Microsoft Secure Future Initiative (SFI), come i prpercorsi predefiniti, in cui le pratiche di sicurezza sono integrate in piattaforme e processi anziché imposte dall’esterno.

Nel corso del tempo, questo apprendimento continuo consente ai team di perfezionare i requisiti, semplificare la collaborazione e bilanciare meglio la velocità di recapito, la sicurezza e l'affidabilità.

Ruoli e collaboratori della disciplina

La disciplina Dev Security viene in genere eseguita dai team che eseguono lo sviluppo di app e prodotti.

I ruoli principali in questa disciplina in genere includono:

  • Distribuzione di tecnologie e product manager
  • Sviluppatori di software (incluso lo sviluppo di intelligenza artificiale)
  • Ingegneri della sicurezza del software
  • DevOps e tecnici della piattaforma
  • Ruoli di collaudo e ingegneria della qualità
  • Ruoli di sicurezza della supply chain e delle dipendenze

I collaboratori chiave includono:

  • Leadership aziendale e tecnica: fornire sponsorizzazione e definizione delle priorità
  • Ruoli dell'architettura: guida alle decisioni di progettazione e integrazione sicure
  • Ruoli della strategia di sicurezza, integrazione e governance: fornire criteri, istruzione e supervisione
  • Team di infrastruttura e piattaforma: abilitare ambienti di sviluppo sicuri
  • Operazioni di sicurezza (SecOps): monitorare e rispondere quando le applicazioni vengono attaccate

Allineamento con altre discipline

La sicurezza dello sviluppo è strettamente integrata con altre discipline SAF:

  • Accesso e identità: protegge le identità degli sviluppatori, dei carichi di lavoro e dei servizi.
  • Sicurezza dell'infrastruttura: protegge le piattaforme che eseguono applicazioni e pipeline.
  • Sicurezza dei dati: garantisce la protezione dei dati sensibili durante tutto il ciclo di vita del software.
  • SecOps: rileva e risponde agli attacchi a livello di applicazione.
  • Strategia di sicurezza, integrazione e governance: allinea le procedure di sviluppo alle priorità di rischio aziendali.

Insieme, queste discipline garantiscono che la sicurezza del software supporti risultati aziendali e di sicurezza più ampi.

Allineamento con i pilastri tecnologici

L'esecuzione della strategia per la disciplina di sicurezza dello sviluppo richiede controlli di sicurezza in più pilastri tecnologici.

Sicurezza nello sviluppo - mappatura sui pilastri tecnologici.

L'allineamento ai pilastri tecnologici comprende:

  • Identità: protegge le identità e le credenziali per sviluppatori e carichi di lavoro.
  • Endpoint: protegge le workstation per sviluppatori e i sistemi di compilazione.
  • Infrastruttura: protegge le piattaforme che ospitano codice, pipeline e carichi di lavoro.
  • App: forniscono un punto focale principale per le pratiche di sicurezza nello sviluppo.
  • Dati: protegge i dati usati, generati e archiviati dalle applicazioni.
  • Rete: progetta software per operare in modo sicuro su reti non attendibili.
  • Intelligenza artificiale: protegge i componenti e i modelli di intelligenza artificiale usati nelle applicazioni moderne.

Questa ampiezza garantisce che la disciplina affronti i percorsi di attacco reali.

Cosa succede dopo?

Altre linee guida per la strategia di sicurezza dello sviluppo sono incluse nella strategia di sicurezza dello sviluppo.

Fare un workshop

Microsoft Unified offre workshop esperti per aiutare le organizzazioni a modernizzare la disciplina di sicurezza dello sviluppo. Questi workshop includono:

  • Workshop di architettura e strategia - Il Security Adoption Framework (SAF) - Sessione di progettazione dell'architettura: workshop sulla sicurezza dell'infrastruttura e dello sviluppo è incentrato sull'accelerazione della modernizzazione della sicurezza dello sviluppo e della sua integrazione con la sicurezza dell'infrastruttura. Questo workshop è disponibile in una discussione di meno di quattro ore incentrata sulle procedure consigliate e sull'apprendimento chiave.
  • Workshop sull'adozione della tecnologia: Microsoft Unified offre workshop per aiutare le organizzazioni a comprendere, pianificare, implementare e ottimizzare l'uso di Microsoft Development Security Technology, come illustrato in questo diagramma.

Workshop sull'adozione della tecnologia di sviluppo

Esaminare il Microsoft Security Development Lifecycle

Il ciclo di vita di sviluppo continuo della sicurezza Microsoft fornisce una metodologia per sviluppare software in modo sicuro. Il ciclo di vita dello sviluppo della sicurezza (SDL) è l'approccio usato Microsoft per integrare la sicurezza nei processi DevOps (talvolta definito approccio DevSecOps). Le linee guida per la sicurezza dello sviluppo SAF consentono di adattare l'approccio e le procedure SDL all'organizzazione.

È possibile applicare le procedure descritte nell'approccio SDL a tutti i tipi di sviluppo software e a tutte le piattaforme, dalla cascata classica agli approcci DevOps moderni. Questo approccio di sicurezza software applicabile in genere funziona in qualsiasi tipo di software e piattaforma.

Per altre informazioni, vedere Microsoft Security Development Lifecycle (SDL).

Per una sicurezza di sviluppo efficace è necessario seguire un ciclo di vita di sviluppo della sicurezza (SDL) come Microsoft Security Development Lifecycle (SDL)

Passaggi successivi

Informazioni sul passaggio da DevOps a DevSecOps.