Jump to section

Shift left e shift right a confronto

Copia URL

Eseguire test durante tutto il ciclo di vita dello sviluppo del software è fondamentale per stare al passo con le aspettative degli utenti, i requisiti di funzionalità e le misure di sicurezza. Shift left significa anticipare i test di sicurezza alle prime fasi del ciclo di vita, anziché integrarli solo in quelle avanzate, per trovare vulnerabilità e correggere i difetti fin da subito. Shift right vuol dire monitorare il comportamento e l'utilizzo degli utenti, nonché le prestazioni e le metriche di sicurezza del software in fase di produzione per verificarne l'operatività.

Entrambi gli approcci si basano su modalità di test continui e sono finalizzati a valutare e garantire la qualità e le prestazioni di nuovi prodotti durante l'intero processo DevOps e il ciclo di vita dello sviluppo del software (SDLC). Nel contesto di una procedura agile, i principi di shift left e shift right servono a individuare e risolvere gli eventuali problemi in maniera tempestiva per evitare che si trasformino in scenari difficilmente rimediabili.

Per comprendere le metodologie shift left e shift right, è utile innanzitutto immaginare che il ciclo di vita dello sviluppo di un software sia come un percorso lineare che va da sinistra a destra. A sinistra si trovano le fasi di programmazione e sviluppo, a destra quella di produzione, che include la distribuzione e il monitoraggio del software.

Tradizionalmente, i test di sicurezza dei software venivano aggiunti solo a metà dell'SDLC, poco prima dell'invio alla produzione. Ritardare i test, tuttavia, aumenta la probabilità che le falle nella sicurezza non vengano rilevate mano a mano che il ciclo di vita del software avanza. Questo significa che quando una vulnerabilità viene rilevata, i team devono gestire i complessi e costosi rimaneggiamenti necessari per isolare e rimediare alle falle compilate nell'applicazione fino a quel momento.

Alla fine, le organizzazioni hanno appurato che rimuovendo gli ostacoli nelle fasi iniziali dell'SDLC, avrebbero affrontato costi inferiori per la correzione di errori e falle, risparmiato risorse e realizzato prodotti finiti migliori. In questo contesto si è inserito il concetto di "shift left", o spostamento a sinistra della sicurezza, che da allora è diventato fondamentale per lo sviluppo moderno del software.

Lo sviluppatore non deve necessariamente essere anche un esperto di sicurezza. Gli sviluppatori faticano già a stare al passo con la frequenza dei rilasci, soprattutto se hanno la responsabilità di correggere o modificare il codice scritto da un altro sviluppatore che potrebbe aver introdotto una vulnerabilità grave per errore.

L'architettura software sta diventando più complessa e decentralizzata ed è sempre più difficile monitorare e gestire in modo efficace la sicurezza di un'organizzazione. I metodi moderni di distribuzione dei software che adottano il deployment continuo in ambienti ibridi richiedono un nuovo approccio alla sicurezza, che fornisca protezioni in fasi precedenti del processo di sviluppo delle applicazioni e sicurezza automatizzata a ogni passaggio, trasformando la sicurezza in un elemento di supporto per le aziende.

Gli sviluppatori adottano la strategia shift left come misura proattiva che aiuta a migliorare la sicurezza delle applicazioni, identificando e correggendo i difetti prima che si spingano troppo avanti nella pipeline. Questa strategia implica l'integrazione di pratiche di sicurezza e test il prima possibile durante il processo di sviluppo, anziché relegarli a un ruolo di secondo piano. Il metodo shift left è strettamente legato alla diffusione di DevSecOps, che promuove l'integrazione della sicurezza fin da subito e in modo continuo. 

Gli incidenti di sicurezza si verificano durante le fasi di sviluppo, distribuzione e runtime. Implementare e automatizzare DevSecOps con un approccio shift left fornisce protezioni a misura di sviluppatori che possono ridurre gli errori degli utenti in fase di sviluppo e distribuzione e proteggere i carichi di lavoro al momento del runtime.

Le tecniche di test shift left possono includere:

  • Test SAST (Static Application Security Testing): analisi della sorgente di un'applicazione, di un bytecode o di un codice binario in cerca di vulnerabilità di sicurezza.
  • Strumenti DAST (Dynamic Application Security Testing): metodo di test blackbox usato per scoprire potenziali falle di sicurezza eseguendo scansioni di sicurezza di un target in esecuzione.
  • Modellazione delle minacce: processo che permette di valutare ogni decisione presa in un dato sistema e di estrapolare come tali decisioni possono influire sul profilo di sicurezza, nell'immediato o in futuro.
  • Revisione dell'architettura di sicurezza: identificazione, valutazione e mitigazione dei rischi per potenziare le misure di sicurezza di un'organizzazione contro minacce e rischi attuali ed emergenti.
  • Scansione delle immagini dei container: analisi di un'immagine dei container livello per livello per rilevare potenziali minacce alla sicurezza.
  • Firma del codice: metodo che consiste nell'apporre una firma digitale sull'aggiornamento di un programma, file o software in modo che l'integrità e l'autenticità possano essere verificate al momento dell'installazione e dell'esecuzione. 

La pratica di shift left mira a trovare e correggere vulnerabilità precocemente, in fase di programmazione. In questo modo, non solo si garantisce una sicurezza maggiore, ma anche l'esperienza dell'utente e le funzionalità sono migliori, offrendo software di qualità più alta in con rapidità e frequenza maggiori. Inoltre, rilevare e risolvere i bug dei software precocemente durante il ciclo di sviluppo permette di accelerare l'efficienza di sviluppo e anche di ridurre i costi operativi. 

Le aziende sono consapevoli che basarsi soltanto su test shift left durante la fase di sviluppo non è sufficiente a proteggerle dalle minacce alla sicurezza in costante evoluzione, considerando che i vettori di minaccia sono sempre più sofisticati e le superfici di attacco continuano ad aumentare a un ritmo esponenziale.

Per questo motivo, allo shift left è stato affiancato un approccio complementare: i test shift right, che comportano la continuazione della pratica di test, controllo qualità e valutazione delle prestazioni in un ambiente post-produzione. 

Per implementare i test shift right, i team di sviluppo eseguono prove controllate verso la fine del ciclo di sviluppo del software allo scopo di esaminarne la funzionalità, le prestazioni, la tolleranza agli errori e l'esperienza dell'utente.

Le tecniche di test shift right per i controlli chiave e la visibilità in tempo reale possono includere:

  • SIEM: sigla che sta per sicurezza informatica e gestione eventi; è una soluzione che aiuta le organizzazioni a rilevare le minacce, analizzarle e intervenire.
  • SOAR: acronimo di Security Orchestration, Automation and Response; ha lo scopo di agevolare i compiti dei team IT attraverso la coordinazione, l'esecuzione e l'automatizzazione delle attività tra varie persone e strumenti.
  • Deployment canary: test di una nuova funzionalità su un sottoinsieme di utenti prima del rilascio all'intera base di utenti.
  • Anelli di distribuzione: distribuzione e verifica graduali delle modifiche all'estensione in fase di produzione, limitando gli effetti sugli utenti.
  • Test A/B: approccio che testa un'ipotesi creando un gruppo di controllo e introducendo varianti di scenari, funzionalità, aspetto ecc., misurando le reazioni nei vari scenari rispetto a quella pianificata.
  • Test di iniezione degli errori: introduzione voluta di errori in un sistema per testarlo.
  • Test di sicurezza delle APImonitoraggio del traffico e delle chiamate in uscita per comprendere il comportamento e rilevare incidenti di sicurezza. Istio è una piattaforma di service mesh che fornisce il canale di comunicazione di base e aiuta a gestire le attività di autenticazione, autorizzazione e crittografia della comunicazione tra i servizi adattandole in base ai requisiti.
  • Chaos engineering: pratica che serve a testare la resilienza di un sistema, provocando svariati tipi di problemi volontariamente.
  • Deployment blue green: modello di rilascio delle applicazioni che prevede il trasferimento graduale del traffico utente da una versione precedente di un'app a una nuova release quasi identica, anch'essa in produzione. 

Osservando il comportamento di un software in ambienti reali, i team possono rilevare in modo proattivo le minacce alla sicurezza durante il runtime e assicurarsi che le applicazioni funzionino nel modo previsto. I test shift right consentono di avere un ciclo di feedback continuo in tempo reale da parte degli utenti, nonché la possibilità di analizzare eventuali problemi non previsti. 

Con il passaggio delle organizzazioni a costrutti cloud native e la modernizzazione delle applicazioni per includere tecnologie come microservizi e container, è consigliabile adottare sia strategie shift left che shift right. Consentendo al team di eseguire test end to end in ogni fase dell'SDLC, la tua organizzazione è in grado di avvicinarsi all'obiettivo principale: ottenere integrazione e distribuzione continue (CI/CD).

I vantaggi di utilizzare entrambi i metodi comprendono maggiore efficienza e sicurezza, prodotti di qualità migliore, tempi di rilascio più rapidi e un miglioramento della soddisfazione degli utenti. Inoltre, le organizzazioni hanno rilevato che il costo relativo per correggere i bug, in base al momento del rilevamento, aumenta nel tempo. In sostanza, più si aspetta a correggere un problema, più potrebbe costare. Adottare la misura preventiva dei test shift left, pertanto, incide positivamente anche sugli introiti. 

Per proteggere la catena di distribuzione del software è necessario adottare un approccio esaustivo che incorpori livelli e aspetti diversi. La sicurezza della catena può essere migliorata in svariati modi, ognuno dei quali aiuta a consolidare ulteriormente la protezione per l'azienda e i clienti.

Per iniziare ad applicare i principi di shift left e shift right nel ciclo di vita dello sviluppo della tua organizzazione, è utile come primo passaggio implementare una distinta base (SBOM), ovvero un inventario nidificato di tutte le sorgenti e le dipendenze che compongono un artefatto, inclusi codice sorgente, librerie software e open source, middleware e framework di sviluppo.

Da questa fase in poi, inizia a implementare test automatizzati per raccogliere dati e analisi durante le attività di sviluppo e distribuzione del software. Il test continuo in ogni fase dell'SDLC è il modo migliore per monitorare le prestazioni e rilevare le cause root.

L'aspetto forse più importante è assicurarsi che i reparti collaborino e comunichino internamente e tra loro, per identificare aree problematiche all'interno di ogni team e trovare gli strumenti più corretti e adatti. 

Nel panorama tecnologico di oggi, in rapida evoluzione, le organizzazioni adottano sempre più spesso la containerizzazione per ottenere maggiore scalabilità, portabilità ed efficienza nel deployment delle applicazioni. Anche se offre diversi vantaggi, la containerizzazione può creare difficoltà per la sicurezza IT che vanno affrontate per migliorare la sicurezza, la riservatezza e l'accessibilità delle applicazioni containerizzate. Con l'utilizzo sempre più diffuso di app cloud native, è essenziale migliorare il profilo di sicurezza di container e Kubernetes.

Red Hat® si occupa con investimenti significativi della manutenzione di software open source per tutta la durata dei prodotti. Per i software di sua distribuzione, si assume la responsabilità di supportarli, ma anche di gestire le problematiche più temute, come la sicurezza.

Red Hat Trusted Software Supply Chain aiuta le organizzazioni a integrare la sicurezza nel ciclo di vita dello sviluppo del software fin dall'inizio. Con il software di sicurezza giusto, le organizzazioni possono proteggersi da rischi e vulnerabilità all'interno dei sistemi della catena di distribuzione. Senza una protezione adeguata, rischiano di perdere la fiducia di utenti, clienti e altri stakeholder. Con Red Hat Trusted Software Supply Chain, i clienti possono programmare, sviluppare e monitorare i propri software usando piattaforme collaudate, contenuti affidabili e scansione e correzione della sicurezza in tempo reale.

Red Hat OpenShift® promuove l'approccio shift left automatizzando DevSecOps e integrando la sicurezza nelle fasi iniziali e per tutto il ciclo di sviluppo. La sua gamma di strumenti per sviluppatori pronti all'uso, funzionalità CI/CD e l'attenzione alla sicurezza garantiscono una catena di distribuzione del software sicura ed efficiente. Si tratta di una piattaforma per applicazioni completa e basata su Kubernetes che aiuta le aziende a sviluppare, adottare, eseguire, gestire e fornire sicurezza con scalabilità per applicazioni innovative.

Red Hat Advanced Cluster Security for Kubernetes adotta l'approccio shift left e automatizza le procedure consigliate DevSecOps. Compatibile con qualsiasi ambiente Kubernetes e integrata con gli strumenti DevOps e di sicurezza, la piattaforma aiuta i team a rendere la catena di distribuzione, l'infrastruttura e i carichi di lavoro operativi e più sicuri.

Red Hat Ansible Automation Platform offre alle aziende un framework coerente di strumenti con cui creare e gestire l'automazione dell'IT in maniera scalabile, mettendo in sicurezza l'intero ciclo di vita dello sviluppo del software. Permette ai team di automatizzare sicurezza e conformità in tutta l'organizzazione e fornisce contenuti di automazione certificati per rispondere alle minacce in maniera sistematica, incluso il supporto sempre disponibile. Red Hat Ansible offre anche diverse integrazioni di sicurezza supportate sia da Red Hat che dai suoi partner tecnologici per la sicurezza.

Keep reading

ARTICOLO

Cos'è la metodologia DevSecOps?

Per sfruttare tutta l'agilità e la reattività di un approccio DevOps, occorre tenere conto anche di un altro elemento cruciale dell'intero ciclo di vita delle tue applicazioni: la sicurezza IT.

ARTICOLO

Cosa si intende con CI/CD?

Il metodo CI/CD introduce l'automazione costante e il monitoraggio continuo in tutto il ciclo di vita delle applicazioni, dalle fasi di integrazione e test a quelle di distribuzione e deployment.

ARTICOLO

Il ruolo di un ingegnere DevOps

Un ingegnere DevOps possiede competenze ed esperienze specifiche che promuovono collaborazione, innovazione e trasformazione all'interno di un'azienda.  

Scopri di più su DevOps

Prodotti

Un incontro conoscitivo approfondito con gli esperti di Red Hat in cui apprendere una metodologia agile e identificare gli strumenti open source più adatti a risolvere i problemi della tua azienda.

Collabora con il nostro team di consulenti strategici in grado di analizzare l'azienda nel suo insieme e valutare le sfide da affrontare, per aiutarti a superarle con soluzioni complete e convenienti.

Risorse