SEC11-BP02 Automazione dei test lungo il ciclo di vita di sviluppo e test
Automatizza i test per le proprietà di sicurezza lungo il ciclo di vita di sviluppo e test. L'automazione semplifica l'identificazione coerente e ripetibile dei potenziali problemi nel software prima del rilascio, riducendo il rischio di riscontrare problemi di sicurezza nel software fornito.
Risultato desiderato: l'obiettivo dei test automatici è fornire un metodo programmatico per rilevare inizialmente e regolarmente i potenziali problemi lungo l'intero ciclo di vita di sviluppo. Automatizzando i test di regressione, puoi ripetere l'esecuzione di test funzionali e non funzionali per verificare che il software testato in precedenza continui ad avere le prestazioni previste dopo una modifica. Quando definisci unit test di sicurezza per verificare la presenza di configurazioni errate comuni, come autorizzazioni non corrette o mancanti, puoi identificare e correggere i problemi all'inizio del processo di sviluppo.
Per l'automazione dei test vengono usati test case dedicati per la convalida delle applicazioni, in base ai requisiti e alle funzionalità desiderate. Il risultato dei test automatici è basato sul confronto dell'output di test generato con quello previsto, che accelera l'intero ciclo di vita dei test. Metodologie di test come i test di regressione e le suite di unit test sono le più adatte per l'automazione. L'automazione dei test delle proprietà di sicurezza permette agli sviluppatori di ricevere automaticamente feedback senza attendere una revisione della sicurezza. I test automatici sotto forma di analisi statica o dinamica del codice possono migliorare la qualità del codice e semplificare il rilevamento dei potenziali problemi software all'inizio del ciclo di vita di sviluppo.
Anti-pattern comuni:
-
Mancata comunicazione dei test case e dei risultati dei test automatici.
-
Esecuzione dei test solo immediatamente prima di un rilascio.
-
Automazione dei test case con requisiti che cambiano spesso.
-
Assenza di linee guida su come gestire i risultati dei test di sicurezza.
Vantaggi dell'adozione di questa best practice:
-
Riduzione della dipendenza da valutazioni personali delle proprietà di sicurezza dei sistemi.
-
Migliore coerenza grazie a risultati uniformi tra più flussi di lavoro.
-
Minore probabilità di introdurre problemi di sicurezza nel software di produzione.
-
Intervallo di tempo più breve tra il rilevamento e la correzione grazie all'identificazione più tempestiva dei problemi software.
-
Maggiore visibilità su comportamenti sistematici o ripetuti tra più flussi di lavoro, che può essere usata per favorire miglioramenti in tutta l'organizzazione.
Livello di rischio associato alla mancata adozione di questa best practice: medio
Guida all'implementazione
Durante lo sviluppo del software, adotta diversi meccanismi di test in modo da avere la certezza di testare l'applicazione per requisiti funzionali, basati sulla logica di business, e non funzionali, incentrati sull'affidabilità, sulle prestazioni e sulla sicurezza dell'applicazione.
I test di sicurezza statici dell'applicazione analizzano il codice sorgente in cerca di modelli di sicurezza anomali e forniscono indicazioni per un codice privo di errori. I test di sicurezza statici dell'applicazione si basano su input statici, come la documentazione (definizione dei requisiti, documentazione sulla progettazione e specifiche di progettazione) e il codice sorgente dell'applicazione, per testare un'ampia gamma di problemi di sicurezza noti. Gli analizzatori di codice statici possono contribuire ad accelerare l'analisi di volumi elevati di codice. Il NIST Quality Group
Integra i test statici con metodologie di test della sicurezza tramite analisi dinamica, che eseguono test sull'applicazione in esecuzione per identificare potenziali comportamenti imprevisti. I test dinamici possono essere usati per individuare potenziali problemi non rilevabili tramite l'analisi statica. L'esecuzione di test nelle fasi di repository, compilazione e pipeline del codice permette di verificare potenziali problemi di tipi diversi, evitandone la presenza nel codice. Amazon CodeWhisperer
Il workshop sulla sicurezza per gli sviluppatori
Lungo il ciclo di vita di sviluppo del software definisci un processo iterativo che includa revisioni periodiche dell'applicazione con il team responsabile della sicurezza. Il feedback raccolto da queste revisioni della sicurezza deve essere affrontato e convalidato come parte della revisione dell'idoneità per il rilascio. Queste revisioni permettono di stabilire una solida posizione di sicurezza per l'applicazione e forniscono agli sviluppatori feedback di utilità pratica per affrontare i potenziali problemi.
Passaggi dell'implementazione
-
Implementa un ambiente IDE, una revisione del codice e strumenti CI/CD coerenti che includano test di sicurezza.
-
Determina le fasi del ciclo di vita di sviluppo del software in cui è appropriato bloccare le pipeline anziché informare semplicemente gli sviluppatori riguardo alla necessità di risolvere i problemi.
-
Il workshop sulla sicurezza per gli sviluppatori
fornisce un esempio di integrazione di test statici e dinamici in una pipeline di rilascio. -
L'esecuzione di test o di analisi del codice tramite strumenti automatici, come Amazon CodeWhisperer
integrato con gli ambienti IDE degli sviluppatori e il Amazon CodeGuru Reviewer per l'analisi del codice in fase di commit, permette agli sviluppatori di ottenere feedback tempestivo. -
Se sviluppi soluzioni usando AWS Lambda, puoi usare Amazon Inspector
per analizzare il codice dell'applicazione nelle funzioni. -
Il workshop sull'integrazione continua e sulla distribuzione continua in AWS
fornisce un punto di partenza per la creazione di pipeline CI/CD in AWS. -
Quando le pipeline CI/CD includono test automatici, devi usare un sistema di gestione dei ticket per tenere traccia della notifica e della correzione dei problemi software.
-
Per test di sicurezza che possono generare risultati, il collegamento a linee guida per la correzione permette agli sviluppatori di migliorare la qualità del codice.
-
Analizza regolarmente i risultati ottenuti dagli strumenti automatici per definire le priorità delle successive iniziative di automazione, formazione degli sviluppatori o creazione di campagne di sensibilizzazione.
Risorse
Documenti correlati:
-
Partner con competenze nella sicurezza AWS
per la sicurezza delle applicazioni -
Monitoraggio di eventi CodeCommit in Amazon EventBridge e Amazon CloudWatch Events
-
Accelerazione delle implementazioni su AWS con una governance efficace
-
Approccio di AWS all'automazione di implementazioni pratiche e sicure
Video correlati:
Esempi correlati: