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

Il tuo indirizzo email non sarร  pubblicato. I campi obbligatori sono contrassegnati *