Come aumentare la sicurezza delle architetture applicative basate su container

Le applicazioni moderne basate su microservizi sono sempre più diffuse ed i container sono un interessante elemento costitutivo per la creazione di architetture applicative agili, scalabili ed efficienti. I microservizi offrono grandi vantaggi, grazie alla presenza di modelli di progettazione software ben noti e collaudati che si possono applicare, ma generano anche nuove sfide. Una di queste è sicuramente legata alla sicurezza di queste architetture, che impongono l’adozione di soluzioni all’avanguardia per raggiungere un elevato livello di protezione. In questo articolo viene riportato come la soluzione nativa del cloud per la protezione dei container, chiamata Microsoft Defender for Containers, è in grado di garantire la protezione delle architetture applicative basate su container, offrendo capacità avanzate per la rilevazione e per rispondere alle minacce di sicurezza.

Funzionalità offerte dalla soluzione

Grazie a Microsoft Defender for Containers è possibile migliorare, monitorare e mantenere la sicurezza dei cluster, dei container e delle relative applicazioni. Infatti, tale piano consente di ottenere i seguenti benefici:

  • Hardening dell’ambiente
  • Scansione delle vulnerabilità
  • Run-time threat protection per l’ambiente cluster e per i nodi

Nei paragrafi seguenti vengono dettagliati i benefici sopra elencati.

Hardening dell’ambiente

Mediante una assessment continuo degli ambienti cluster, Defender for Containers fornisce una visibilità completa su eventuali configurazioni errate e sul rispetto delle linee guida. Tramite la generazione delle raccomandazioni aiuta a mitigare potenziali minacce di sicurezza.

Inoltre, grazie all’utilizzo del controllo di ammissione di Kubernetes è possibile garantire che tutte le configurazioni vengano fatte rispettando le best practice di sicurezza. Infatti, adottando le Azure Policy for Kubernetes si dispone di un bundle di raccomandazioni utili per proteggere i workload dei container Kubernetes. Di default, abilitando Defender for Containers, avviene automaticamente il provisioning di queste policy. In questo modo, ogni richiesta al server API di Kubernetes verrà monitorata rispetto al set predefinito di best practice, prima di essere resa effettiva sull’ambiente cluster. Si può pertanto adottare questo metodo per applicare le best practice ed imporle per i nuovi workload che saranno attivati.

Scansione delle vulnerabilità

Defender for Containers include un vulnerability scanner integrato per l’analisi delle immagini presenti in Azure Container Registry (ACR). Grazie a questo strumento di scansione è possibile effettuare una scansione approfondita delle immagini che avviene in tre momenti:

  • In caso di push: ogni volta che un’immagine viene inviata all’ACR, viene eseguita automaticamente la scansione.
  • In caso di estrazione recente: poiché ogni giorno vengono scoperte nuove vulnerabilità, viene analizza, con cadenza settimanale, anche qualsiasi immagine per la quale è stata fatta un’estrazione negli ultimi 30 giorni.
  • Durante l’importazione: Azure Container Registry dispone di strumenti di importazione per far confluire le immagini al suo interno provenienti da Docker Hub, Microsoft Container Registry oppure da altri ACR. Tutte le immagini importate vengono prontamente analizzate dalla soluzione.

Nel caso vengano rilevate delle vulnerabilità sarà generata una notifica nella dashboard di Microsoft Defender for Cloud. Questo alert sarà accompagnato da una classificazione di gravità e da indicazioni pratiche su come è possibile correggere le specifiche vulnerabilità rilevate in ciascuna immagine.

Inoltre, Defender for Containers espande queste funzionalità di scansione introducendo la possibilità di ottenere una visibilità sulle immagini in esecuzione. Mediante la nuova raccomandazione, denominata “Vulnerabilities in running images should be remediated (powered by Qualys)”, raggruppa le immagini in esecuzione che presentano vulnerabilità, fornendo i dettagli sui problemi rilevati e su come risolverli.

Run-time threat protection per l’ambiente cluster e per i nodi

Microsoft Defender for Containers è in grado di fornire una protezione dalle minacce in tempo reale per gli ambienti containerizzati e genera avvisi nel caso vengano rilevate minacce oppure attività dannose, sia a livello di host che a livello di cluster AKS.

La protezione da minacce di sicurezza avviene a diversi livelli:

  • Cluster level: a livello cluster, la protezione dalle minacce si basa sull’analisi degli audit logs di Kubernetes. Si tratta di un monitor che permette di generare alert, monitorando i servizi gestiti di AKS, come ad esempio la presenza di dashboard Kubernetes esposte e la creazione di ruoli con privilegi elevati. Per consultare la lista completa degli alert generati da questa protezione è possibile accedere a questo link.
  • Host level: con oltre sessanta tipologie di analisi, mediante algoritmi di intelligenza artificiale e con la rilevazione delle anomalie sui workload in esecuzione la soluzione è in grado di rilevare attività sospette. Un team di ricercatori Microsoft sulla sicurezza monitora costantemente il panorama delle minacce e vengono aggiunti alert e vulnerabilità specifici sui container man mano che vengono scoperti. Inoltre, questa soluzione monitora la crescente superficie di attacco delle implementazioni Kubernetes multi-cloud e tiene traccia della matrice MITRE ATT&CK® per i container, un framework sviluppato dal Center for Threat-Informed Defense in stretta collaborazione con Microsoft e altri esponenti.

La lista completa degli alert che si possono attenere abilitando questa protezione è consultabile in questo documento.

Architetture per i differenti ambienti Kubernetes

Defender for Containers è in grado di proteggere i cluster Kubernetes indipendentemente dal fatto che siano in esecuzione su Azure Kubernetes Service, Kubernetes on-premise/IaaS oppure Amazon EKS.

Azure Kubernetes Service (AKS) Cluster

Quando si abilita la protezione di Defender for Cloud per i cluster attivati mediante il servizio Azure Kubernetes (AKS), la raccolta degli audit log avviene senza dover installare degli agenti. Il profilo Defender, distribuito su ciascun nodo, fornisce la protezione runtime e raccoglie i segnali dai nodi utilizzando la tecnologia eBPF. Il componente Azure Policy add-on for Kubernetes raccoglie le configurazioni dei cluster e dei workload, come spiegato nei paragrafi precedenti.

Figura 1 – Architettura di Defender for Cloud per i cluster AKS

Azure Arc-enabled Kubernetes

Per tutti i cluster ospitati al di fuori di Azure è necessario adottare la soluzione Azure Arc-enabled Kubernetes per connettere i cluster ad Azure e fornire i relativi servizi, come Defender for Containers. Connettendo i cluster Kubernetes ad Azure, un’estensione Arc raccoglie gli audit log di Kubernetes da tutti i nodi del control plane del cluster e li invia nel cloud al back-end di Microsoft Defender for Cloud per ulteriori analisi. L’estensione viene registrata con un workspace di Log Analytics usato come pipeline di dati, ma i dati di audit non vengono archiviati in Log Analytics. Le informazioni sulle configurazioni dei workload vengono gestite dal componente aggiuntivo delle Azure Policy.

Figura 2 – Architettura di Defender for Cloud per i cluster Kubernetes Arc-enabled

Amazon Elastic Kubernetes Service (Amazon EKS)

Anche per questa tipologia di cluster, attivati in ambiente AWS, è necessario adottare Azure Arc-enabled Kubernetes per poterli proiettare in ambiente Azure. Inoltre, è necessario connettere l’account AWS a Microsoft Defender for Cloud. Risultano pertanto necessari i piani Defender for Containers e CSPM (per il monitor delle configurazioni e per le raccomandazioni).

Un cluster basato su EKS, Arc e l’estensione di Defender sono i componenti necessari per:

  • raccogliere i dati di policy e delle configurazioni dai nodi del cluster;
  • ottenere una protezione runtime.

L’Azure Policy add-on for Kubernetes colleziona le configurazioni dell’ambiente cluster e dei workload per garantire che tutte le configurazioni vengano rispettate. Inoltre, la soluzione AWS CloudWatch viene utilizzata per collezionare i dati di log dal Control plane.

Figura 3 – Architettura di Defender for Cloud per i cluster AWS EKS

Aggiornamento e costi della soluzione

Questo piano di Microsoft Defender unisce e sostituisce due piani esistenti, “Defender for Kubernetes” e “Defender for Container Registries“, fornendo funzionalità nuove e migliorate, senza deprecare nessuna delle funzionalità di tali piani. Le sottoscrizioni sulle quali sono stati attivati i piani precedenti non devono necessariamente essere aggiornate al nuovo piano Microsoft Defender for Containers. Tuttavia, per trarre vantaggio dalle nuove e migliorate funzionalità, devono essere aggiornate e per farlo è possibile utilizzare nel portale Azure l’icona di aggiornamento visualizzata accanto a loro.

L’attivazione di questi piani di protezione sono soggetti a costi specifici che possono essere calcolati utilizzando lo strumento Azure Pricing calculator. In particolare, il costo di Microsoft Defender for Containers viene calcolato sul numero di core delle VMs che compongono il cluster AKS. Questo prezzo include anche 20 scansioni gratuite per vCore, ed il conteggio sarà basato sul consumo del mese precedente. Ogni scansione aggiuntiva ha un costo di addebito, ma la maggior parte dei clienti non dovrebbe sostenere alcun costo aggiuntivo per la scansione delle immagini.

Conclusioni

Le architetture basate su microservizi consentono di scalare facilmente e di sviluppare le applicazioni in modo più rapido e semplice, permettendo di promuovere l’innovazione e accelerare il time-to-market di nuove funzionalità. La presenza di una soluzione come Microsoft Defender for Containers è fondamentale per consentire un adeguato livello di protezione per quanto riguarda le minacce di sicurezza, sempre più evolute per attaccare queste tipologie di architetture applicative.