Sicurezza dei microservizi: linee guida per gli sviluppatori

pittogramma Zerouno

TechTarget Tech InDepth

Sicurezza dei microservizi: linee guida per gli sviluppatori

Nonostante i numerosi vantaggi, la granularizzazione dei servizi comporta una serie di vulnerabilità. Gli esperti spiegano nel dettaglio quali strategie servono a contrastarle.

01 Set 2020

di Laura Zanotti - Fonte TechTarget

Sicurezza dei microservizi all’ordine del giorno per i team DevOps. L’architettura permette un time-to-market più rapido, una migliore scalabilità e componenti debolmente accoppiati rispetto alle applicazioni monolitiche. Il rovescio della medaglia è che un conglomerato di numerosi piccoli servizi autonomi va a complicare la comunicazione da servizio a servizio, frammentando la coerenza dei dati e aumentando le superfici di attacco.

Quando si lavora su un’applicazione basata su microservizi, un semplice firewall non è sufficiente. La progettazione richiede una difesa molto più stratificata per combattere le minacce. La sicurezza dell’applicazione deve essere una parte fondamentale della sua architettura: gli sviluppatori di microservizi dovrebbero creare un framework di sicurezza dell’applicazione fin dall’inizio.

Sicurezza dei microservizi: quali sono le sfide

La natura distribuita dei microservizi crea complessità intrinseche e problemi di sicurezza che i team di sviluppo devono conoscere e risolvere. A minare la sicurezza dei microservizi varie concause:

  1. una grande superficie di attacco
  2. un’analisi dei log insufficiente
  3. scarsi test
  4. bassa tolleranza agli errori

#1 Superficie d’attacco

In un’applicazione basata su microservizi, la proliferazione delle interfacce di comunicazione aumenta la superficie di attacco complessiva del programma. Ogni API e canale di comunicazione esposti va a creare un potenziale vettore di attacco che gli sviluppatori devono gestire e risolvere.

#2 Logging

Un’applicazione basata sui microservizi in genere ha servizi distribuiti e senza stato, sviluppati attraverso tecnologie eterogenee. I registri non sono tutti nello stesso formato o generati allo stesso modo. È anche possibile che questi servizi interagiscano su grandi distanze geografiche. È fondamentale creare un sistema di aggregazione dei log in modo che permetta agli analisti della sicurezza di correlare gli eventi che si verificano su piattaforme diverse e disparate, avendo così massima comprensione relativa ad anomalie, minacce ed attacchi.

#3 Testing

Gli sviluppatori di microservizi possono creare, distribuire e gestire servizi indipendenti l’uno dall’altro, il che significa che possono rilasciare rapidamente servizi senza test approfonditi. Il testing, però, rimane un’attività fondamentale per rilevare le vulnerabilità. Sebbene uno dei maggiori vantaggi delle applicazioni basate su microservizi sia la libertà di rilascio frequente, l’agilità non può prescindere da test adeguati.

#4 Tolleranza ai guasti

In un’applicazione basata su microservizi la tolleranza ai guasti è molto più complessa rispetto a quella in un’applicazione monolitica. Quando aumenta il numero di servizi che comunicano sulla rete, la complessità aumenta, rendendo più probabili i guasti. Se un microservizio non è in grado di far fronte correttamente agli errori, può destabilizzare l’intera applicazione e qualsiasi altra applicazione con cui funziona.

Best practice sulla sicurezza dei microservizi

Esistono quattro best practice che garantiscono la sicurezza dei microservizi. Gli esperti suggeriscono di adottarli tutti quando si creano applicazioni.

#1 Difesa in profondità

La difesa in profondità è una strategia che prevede l’introduzione di diversi livelli di controllo in un’applicazione. I servizi più sensibili ottengono dei veri e propri livelli di copertura di sicurezza. In questo modo, nel momento in cui un potenziale aggressore sfrutta uno dei microservizi, gli viene impedito di attaccare un altro microservizio o altri livelli dell’applicazione.

Piuttosto che dipendere da un’unica misura di sicurezza apparentemente solida, è bene utilizzare tutte le misure di sicurezza che si hanno a disposizione per creare livelli di sicurezza che costituiscono delle barriere che frenano i potenziali aggressori, ovvero:

#2 Utilizzare il gateway API

Quando si parla di sicurezza dei microservizi l’ideale è che i consumatori di servizi non comunichino direttamente con i microservizi. Piuttosto, un gateway API dovrebbe fornire un unico punto di ingresso per il traffico. Questi gateway API spesso utilizzano l’autenticazione basata su token per gestire quali privilegi di dati hanno determinati servizi e dettare come possono interagire con quei dati.

sicurezza dei microservizi 1

Poiché i client non accedono direttamente ai servizi, non possono sfruttare i servizi da soli. Se si posiziona il gateway API dietro un firewall è possibile aggiungere un ulteriore livello di protezione: questo garantisce che tutti i microservizi utilizzati in una particolare applicazione siano sicuri.

#3 Concentrarsi sulla sicurezza di dati e API

I microservizi devono spesso comunicare tra loro tramite pacchetti di dati e API. A questo proposito è importante mantenere i certificati di sicurezza e assicurarsi che tutti i dati in transito siano crittografati.

Gli esperti suggeriscono anche di controllare attentamente le autorizzazioni delle API: solo gli utenti autorizzati dovrebbero averne accesso. Per farlo è bene utilizzare il principio del privilegio minimo, fornendo l’accesso a una risorsa solo in base alle necessità.

#4 Applicare le strategie DevSecOps

Le migliori pratiche di sicurezza dei microservizi non riguardano solo l’implementazione della tecnologia giusta. Affinché l’adozione dei microservizi abbia successo, i team di sviluppo e le operation dovrebbero convergere in linea con il concetto di DevOps, includendo una stretta relazione con i gruppi di sicurezza per comprendere i processi adeguati e imparare a mitigare i rischi associati alle vulnerabilità.

sicurezza dei microservizi devops

Questo approccio, noto come DevSecOps, impone agli sviluppatori e al personale operativo di rendere i team di sicurezza parte del processo di progettazione iniziale dell’applicazione. Gli sviluppatori e il personale addetto alla sicurezza dovrebbero collaborare da subito, aiutando a determinare come monitorare costantemente e automaticamente le potenziali minacce alle applicazioni basate su microservizi. Il monitoraggio centralizzato, ad esempio, può essere gestito attraverso strumenti come Prometheus e InfluxDB.

Anche la scansione automatica del codice e gli aggiornamenti continui del codice sono essenziali. DevOps e team di sicurezza dovrebbero collaborare strettamente per monitorare il codice e impedire qualsiasi accesso non autorizzato a una risorsa nell’applicazione.

Sinthera - White Paper - DevSecOps la guida per vincere la sfida della digital transformation

Z

Laura Zanotti - Fonte TechTarget

Giornalista

Ha iniziato a lavorare come technical writer e giornalista negli anni '80, collaborando con tutte le nascenti riviste di informatica e Telco. In oltre 30 anni di attività ha intervistato centinaia di Cio, Ceo e manager, raccontando le innovazioni, i problemi e le strategie vincenti delle imprese nazionali e multinazionali alle prese con la progressiva convergenza tra mondo analogico e digitale. E ancora oggi continua a farlo...

Argomenti trattati

Approfondimenti

M
Microservizi
Tech InDepth

Articolo 1 di 4