DevSecOps applicato ad Azure DevOps

di Matteo Tumiati, in ,

In un articolo precedente, abbiamo già avuto modo di vedere alcuni degli aspetti legati alla security che più impattano gli sviluppatori. In quel caso specifico si è indagato sugli strumenti che offre Synopsis per fare analisi statica del codice ed evidenziare problemi di sicurezza applicativa: questi problemi potevano essere, infatti, difficilmente individuati dagli sviluppatori (immaginiamo il classico "edge-case"), piuttosto che semplici distrazioni (credenziali lasciate per sbaglio nel source control) o, ancora, vulnerabilità "esterne" dovute, ad esempio, a dipendenze (come pacchetti di npm o NuGet) soggetti ad altrettanti problemi di sicurezza noti tramite CVE.

In questo articolo, invece, vogliamo prendere il contesto security da un'altra angolazione e, di fatto, vogliamo introdurre tutti i concetti legati a Secure DevOps, altresì chiamato anche DevSecOps.

La security è un argomento molto vasto e anche molto complesso: nelle aziende, solitamente, ci sono persone dedicate alla security e a temi specifici di sicurezza, come quella infrastrutturale, quella applicativa, quella architetturale e così via. Esattamente come successo già tra sviluppatori e sistemisti, in cui i ruoli si sono fusi in quelli del DevOps Engineer, e considerando anche l'importanza che assume la sicurezza, anche in questo caso si vuole convogliare le best-practice a tutti, in modo tale che chiunque in azienda abbia le basi e gli strumenti giusti per identificare vulnerabilità nei sistemi. Si fa quindi quello che è chiamato "shift-left" in security, ovvero si cerca di individuare i problemi quanto prima e questo lo si può fare solo se si ha già applicato determinati processi di DevOps.

Quelle che introdurremo in questo articolo sono alcune delle tematiche più importanti individuate da esperti e consigliate da Microsoft stessa per trarre il meglio e per imparare a gestire situazioni critiche. Per ovvi motivi, non tutto sarà applicabile a tutti i contesti, ma vedremo caso per caso.

Microsoft ha istituito un sito dedicato per trattare questi argomenti multidisciplinari e li ha raggruppati in:

  • Training: è necessario assicurarsi che tutti i membri del team siano in grado di identificare possibili vulnerabilità prima della scrittura del codice (indipendentemente dal fatto che sia applicativo, infrastrutturale o altro), gestire eventuali vulnerabilità note e fare escalation dei problemi più rilevanti e potenzialmente dannosi. Senza un adeguato training, non sarà possibile porre i rimedi richiesti e sarà come non aver applicato nessuna delle best-practice di security;
  • Definizione dei requisiti: esattamente come per le pratiche DevOps, è necessario individuare l'obiettivo che si vuole raggiungere con l'integrazione della security. Non si parla solamente di rendere più sicure le applicazioni, ma di come farlo, di individuare gli strumenti e i processi giusti;
  • Metriche, compliance e reportistica: anche se abbiamo individuato i processi e gli strumenti, non possiamo dire che il nostro sistema è sicuro se non abbiamo mezzi con cui paragonare il pregresso con l'esistente;
  • SCA e governance: avere un buon sistema di composition analysis e strumenti di governance aiutano tutto il team, compreso il management, ad avere una overview completa di cosa succede nei prodotti che stiamo costruendo e vendendo e a costruire una roadmap per migliorare via via la sicurezza;
  • Threat modeling: non è fondamentale applicare sistemi di machine learning (ML) per identificare problemi di sicurezza, ma è sufficiente affidarsi a sistemi collaudati e offerti da vendor affermati nel settore per avere strumenti che ci aiutino ad identificare meglio le possibili vulnerabilità e il rischo di sicurezza a cui siamo esposti;
  • Strumenti, processi e automazioni: è impensabile credere di migliorare la sicurezza, senza applicare controlli rigorosi ogni volta che viene effettuata una change nel prodotto, quindi è fondamentale inserire sin da subito gli strumenti adeguati nei processi che sono stati costruiti nel tempo grazie alle practice DevOps, alla pipeline di continuous integration e continuous deployment e così via;
  • Gestione delle credenziali: la sicurezza applicativa e soprattutto quella infrastrutturale spesso dipende da come gestiamo secret, codici o altre chiavi che, se non salvate accuratamente ed esposte al "pubblico", potrebbero causare gravi danni, anche involontariamente;
  • Continuous Learning e monitoring: le applicazioni e i sistemi non diventano sicuri per magia e non lo rimangono per sempre, purtroppo. Infatti, sono moltissime le falle di sicurezza che vengono trovate anche in software datato e non più aggiornato, ma lo stesso vale per ogni change che viene applicata perché queste possono contenere nuove vulnerabilità e quindi vanno verificate. Inoltre, è bene imparare dai propri errori e migliorare ogni singola volta una parte del processo se questo è fallito in passato o ci ha esposto a rischi.

Alcuni di questi temi li abbiamo già affrontati, altri li affronteremo in qualche articolo dedicato, mentre tematiche come compliance e governance vanno oltre quello che può essere espresso in un "semplice" articolo introduttivo all'argomento e, pertanto, richiedono training specifico. Prima di addentrarci nelle tematiche tecniche, cerchiamo di imparare come funziona lo strumento che usiamo tutti i giorni per "fare DevOps", ovvero Azure DevOps.

4 pagine in totale: 1 2 3 4
Contenuti dell'articolo

Commenti

Visualizza/aggiungi commenti

| Condividi su: Twitter, Facebook, LinkedIn

Per inserire un commento, devi avere un account.

Fai il login e torna a questa pagina, oppure registrati alla nostra community.

Approfondimenti

Top Ten Articoli

Articoli via e-mail

Iscriviti alla nostra newsletter nuoviarticoli per ricevere via e-mail le notifiche!

In primo piano

I più letti di oggi

In evidenza

Misc