Il tuo carrello รจ attualmente vuoto!
In questo episodio parliamo della sicurezza in ottica DevOps.
Come si affronta la la sicurezza nell’ambito della velocitร e delle tecniche e pratiche di DevOps? Abel Wang ce ne da una prima interpretazione in questo video.
I team piรน mauturi integrano, nei loro processi CI/CD, pratiche di information security. Gli engineer infosec sono coinvolti in ogni fase di produzione del valore dando il loro feedback e contributo – dal design alle demo all’inserimento nelle suite di test di test automatizzati in ottica security. Questo, tuttavia, deve essere fatto in modo da non rallentare il processo di sviluppo, integrando le pratiche di sicurezza nella quotidianitร .
La triade C.I.D.
Quando si parla di sicurezza nell’ambito informatico si fa riferimento a tre caratteristiche:
- Confidenzialitร : protezione dei dati e delle informazioni scambiate tra un mittente e uno o piรน destinatari nei confronti delle terze parti.
- Integritร : impedire che i dati vengano modificati in modo non autorizzato o indesiderato.
- Disponibilitร : capacitร di garantire che le informazioni siano accessibili e utilizzabili da un utente autorizzato.
100:10:1
- 100 developer
- 10 operation
- 1 security
Questo sono le proporzioni della numerositร di figure professionali con queste specializzazioni.
Ecco perchรฉ cambiare approccio e adottare un mindset “DevSecOps” e investire in automazione รจ diventato necessario. 1 solo security engineer non puรฒ “controllare” alla vecchia maniera l’operato di 10 operation e 100 developer.
I team che iniettano nella quotidianitร un approccio strutturato alla sicurezza sono piรน efficaci nella applicazione di continuous delivery. Un elemento chiave รจ assicurarsi che i team di sicurezza informatica rendano disponibile un elenco pre-approvato e facile da consultare di librerie, pacchetti, strumenti e processi disponibili per developer e operations da usare nel loro lavoro. Quando gli strumenti pre-approvati rendono la vita piรน facile agli engineer che li usano, verranno adoperati spontaneamente. Per ottenere questo bisogna concentrarsi sull’effettiva usabilitร dei tool scelti internamente da dev e ops, allo stesso modo in cui un team si conentra su propri utenti finali del loro prodotto o servizio. In questo caso i “clienti” sono gli engineer.
Rugged manifesto
Nel corso degli anni sono stati proposti dei nomi per estendere il concetto di DevOps per includere le tematiche di infosec quali DevSecOps, per esempio. Un altro รจ rugged DevOps. Rugged DevOps รจ la combinazione di DevOps col Rugged Manifesto
- I am rugged and, more importantly, my code is rugged.
- I recognize that software has become a foundation of our modern world.
- I recognize the awesome responsibility that comes with this foundational role.
- I recognize that my code will be used in ways I cannot anticipate, in ways it was not designed, and for longer than it was ever intended.
- I recognize that my code will be attacked by talented and persistent adversaries who threaten our physical, economic, and national security.
- I recognize these things – and I choose to be rugged.
- I am rugged because I refuse to be a source of vulnerability or weakness.
- I am rugged because I assure my code will support its mission.
- I am rugged because my code can face these challenges and persist in spite of them.
- I am rugged, not because it is easy, but because it is necessary and I am up for the challenge.
Shifting-left
Applicare il principio di shift-left significa spostare a sinistra, cioรจ anticipare una pratica che di solito รจ eseguita verso le fasi finali di un processo software. Questa mentalitร puรฒ essere applicata anche alle tematiche di infosec, con appositi tool e processi. In questo modo si evitano lunghi e costosi audit o controlli a fine progetto o iterazione di sviluppo. Inoltre, questi controlli potrebbero essere anche troppo lenti per essere svolti a fine iterazioni, rendendoli di fatto impossibili da praticare in una realtร dove si continua a sviluppare in modo iterativo e incrementale come con le metodologie Agile.
Per applicare shift-left in questo ambito significa cominciare a considerare aspetti di sicurezza giร nelle fasi di progettazione applicativa e architetturale; questo include condurre review del design orientate alla sicurezza coinvolgendo il team di infosec e utilizzare una lista di strumenti, librerie, pacchetti e processi giร approvate dal team di infosec in modo automatizzato in processi CI/CD.
Automatizzando queste attivitร possiamo generare prove on-demand che dimestrano che i nostri controlli sono operativi e possono servire ad auditor o a chiunque altro voglia consultarli attraversando il processo di creazione del valore.
Alla fine, non solo avremmo migliorato l’approccio alla sicurezza ma anche creato processi che sono piรน facili da ispezionare per audit che supportano la compliance in casi dove sono presenti regolamentazioni legali o contrattuali. Per ottenere questo:
- La sicurezza deve essere parte del lavoro di ciascuno
- Si integrano controlli preventivi sulla sicurezza dei nostri repository (es.: Cred Scan)
- Si integrano le pratiche di sicurezza nelle pipeline CI/CD – i test relativi a tematiche di sicurezza devono essere integrati nell’automazione a fianco dei test “applicativi / – funzionali” ed essere eseguiti a ogni run dell’automazione.
- Si applica una corretta gestione dei segreti (stringhe di connessione, chiavi di crittazione, PAT token, …)
- Si integra la sicurezza nelle pratiche di telemetria (ad esempio conteggio login fallite, richieste di password reset, …)
- Protezione delle pipeline di deployment (esempio le pipeline non possono modificare ma solo leggere il codice).
- Ridurre la dipendenza e la separazione forte dei compiti.
Una miglior sicurezza, per un’azienda, significa essere piรน responsabili e protettivi nei confronti dei dati. Significa che si รจ piรน affidabili e con una maggiore continuitร di servizio e in grado di ripristinare il servizio piรน rapidamente.
Sicurezza applicativa
Di solito i team development si preoccupano di testare la correttezza delle funzionalitร e dei flussi logici, concentradosi sugli “happy path” cioรจ quei percorsi dove รจ previsto che l’applicazione possa andare.
Dall’altra parte, gli esperti di QA o sicurezza e frodi si concentrano sui “sad path” cioรจ quei percorsi del codice dove le cose vanno storte o di gestione delle condizioni di errore.
Invece che effettuare questi test manualmente potremmop generare dei test automatizzati (unit o funzionali/integrazione) che possono essere eseguite nelle pipeline. Nei nostri test vorremmo:
- Analisi statica del codice (SAST): un tipo di test che scansiona il codice sorgente a riposo per scoprire errori di programmazione, mancate best-practice, codice potenzialmente – dannoso, obsoleto,…
- Analisi dinamica: suite di test che รจ eseguita quando il nostro programma รจ in esecuzione. Tipocamente ci si concentra su problemi di gestione della memoria, performance – generali del sistema e OWASP TOP 10 con OWASP ZAP (Zed Attack Proxy). Possono anche essere eseguite alcune tipologie di penetration test.
- Scan delle dipendenze. Sempre della famiglia di analisi statica del codice, questa analisi si concentra sulle dipendenze/librerie che il nostro codice utilizza stilandone un – inventario e confrontandolo con un database di versioni con problemi noti, problemi di licenze e cosรฌ via.
Azioni
Esercizio 1 – Identifica le attuali pratiche orientate alla sicurezza
Esamina, da solo o in gruppo, le attuali pratiche orientate alla sicurezza nel tuo Application Lifecycle Management. Stai sfruttando funzionalitร del linguaggio che usi o dell’IDE (es. SonarLint o le regole di Roslyn per .NET). Quali sono le domande che il team si pone durante la progettazione di nuove feature in termini di sicurezza? C’รจ un team di infosec e quanto e come รจ coinvolto? Che pratiche ci sono in pipeline?
Esercizio 2 – Identifica la prima pratica orientata alla sicurezza che potresti implementare
Dopo aver analizzato la situazione attuale, quale ritieni possa essere il passo piรน rapido per implementare una pratica orientata alla sicurezza? Pianifica la sua implementazione in un orizzonte temporale breve (1 mese).
Esercizio 3 – Spiega la triade a qualcuno
Spiega i concetti di confidenzialitร , integritร e disponibilitร del dato a qualcuno.
Sharing is caring
Se conosci qualcuno che potrebbe trovare utile ricevere e-mail per migliorare l’organizzazione dei team di sviluppo software, DevOps e software engineering in generale inoltragli questa e-mail! Qui puรฒ iscriversi e cominciare a ricevere subito!
Lascia un commento