Kubernetes illustration
Vai al paragrafo

Vantaggi della sicurezza Kubernetes native

Copia URL

Per garantire la sicurezza dei container è possibile scegliere fra due approcci principali, ovvero quella incentrata sui container e la sicurezza Kubernetes native. 

Le piattaforme incentrate sui container operano a livello di container, con l'obiettivo di proteggere le immagini e i runtime dei container. Questi strumenti forniscono controlli al livello del container stesso, utilizzando tecniche quali proxy inline o shim per controllare ad esempio le comunicazioni fra container.

La sicurezza Kubernetes native opera a livello di Kubernetes, ricavando il contesto da Kubernetes e inviando a Kubernetes le policy che deve applicare.

La sicurezza Kubernetes native sfrutta la completa integrazione con Kubernetes per importare il contesto e sfruttare i controlli nativi di Kubernetes. Questa architettura aumenta la sicurezza principalmente in due modi, ovvero fornendo contesto e informazioni dettagliate e rilevando le minacce specifiche di Kubernetes.

Sicurezza Kubernetes native

Le tecnologie cloud native introducono nuove problematiche di sicurezza, ma offrono anche l'opportunità di migliorare le strategie di sicurezza esistenti.

La sicurezza Kubernetes native parte dal presupposto che la protezione può essere implementata più efficacemente quando è in linea con il sistema che gestisce le applicazioni containerizzate. 

Per essere considerata Kubernetes native, una piattaforma di sicurezza deve presentare le seguenti caratteristiche:

  • Deve integrarsi direttamente con il server API Kubernetes per ottenere una visibilità immediata sui carichi di lavoro e sull'infrastruttura
  • Deve valutare le vulnerabilità nel software Kubernetes stesso
  • Le sue funzionalità di sicurezza, inclusa la gestione delle policy, devono essere basate sulle risorse disponibili all'interno del modello di oggetti Kubernetes, che include spazi dei nomi, deployment, servizi, pod e altro
  • Deve analizzare i dati dichiarativi delle configurazioni e dei componenti specifici di Kubernetes, come i manifest dei carichi di lavoro
  • Ove possibile, deve gestire l'applicazione utilizzando le funzionalità di sicurezza integrate in Kubernetes, in modo da aumentare i livelli di automazione, scalabilità e affidabilità
  • Deve essere distribuita ed eseguita come un'applicazione Kubernetes, incluse le integrazioni e il supporto degli strumenti comuni nelle toolchain cloud native

Oltre che nella configurazione dei container, la sicurezza Kubernetes native fornisce visibilità anche nel deployment Kubernetes stesso. 

È importante anche comprendere se, e come, i carichi di lavoro in uso sono isolati. Per impostazione predefinita, Kubernetes consente a tutti i deployment di comunicare con tutti gli altri deployment, all'interno e all'esterno dei relativi spazi dei nomi. La visibilità dettagliata sulle impostazioni delle policy di rete, preferibilmente in una forma grafica che evita la lettura di un file di testo YAML, permette di identificare velocemente i carichi di lavoro che non sono isolati.

Per determinare il livello di sicurezza complessivo, devi assicurarti che tutte le configurazioni Kubernetes, come le autorizzazioni basate sui ruoli, l'accesso ai segreti, il traffico di rete consentito e le impostazioni dei componenti del piano di controllo, siano bloccati, seguano le procedure consigliate e dispongano solo dei privilegi essenziali per l'esecuzione delle applicazioni.

Come accade anche per altre risorse di elaborazione, molte aziende scelgono di eseguire Kubernetes nel cloud. Per l'esecuzione di Kubernetes nel cloud sono disponibili diverse opzioni:

  • Kubernetes autogestito
  • Distribuzione commerciale di Kubernetes
  • Servizio Kubernetes gestito

Indipendentemente dal modello scelto, tu e il provider di servizi cloud avete la responsabilità "condivisa" di proteggere il deployment. Anche se a Kubernetes si applica il tipico modello di responsabilità condivisa, cosa che vale soprattutto per i servizi Kubernetes gestiti, non è sempre chiaro chi debba occuparsi dei diversi aspetti specifici della sicurezza.

Nel caso dei servizi Kubernetes gestiti, il provider di servizi cloud gestisce il piano di controllo Kubernetes, inclusi i componenti di Kubernetes che controllano il cluster, insieme ai dati relativi allo stato e alla configurazione del cluster.

I servizi includono in genere la configurazione del piano di controllo, la predisposizione della ridondanza di tali nodi, spesso eseguendoli in aree geografiche diverse al fine di prevenire le interruzioni in caso di indisponibilità di parte dell'infrastruttura del provider di servizi cloud.

Responsabilità tipiche del provider di servizi cloud:

  • Aggiornamento regolare di Kubernetes
  • Applicazione regolare delle patch al piano di controllo
  • Eventuale gestione delle patch del sistema operativo dei nodi (spesso questo aspetto dipende dal sistema operativo prescelto)
  • In genere, applicazione ai nodi delle immagini del sistema operativo ottimizzate per i container
  • A volte include scanner di vulnerabilità, ma tu devi creare le policy, ad esempio utilizzando un controller di ammissione per consentire o negare le autorizzazioni in base al risultato della scansione

Il cliente è sempre responsabile di proteggere il carico di lavoro Kubernetes, inclusa la gestione dei seguenti aspetti della sicurezza:

  • Immagini container: sorgente, contenuto e vulnerabilità
  • Deployment: servizi di rete, storage e privilegi
  • Gestione della configurazione: ruoli, gruppi, associazioni ai ruoli e account di servizio
  • Applicazione: gestione dei segreti, etichette e annotazioni
  • Segmentazione della rete: policy di rete nel cluster
  • Runtime: rilevamento delle minacce e risposta agli incidenti

Le piattaforme di sicurezza Kubernetes native offrono numerosi vantaggi chiave. 

Protezione superiore 

La sicurezza Kubernetes native fornisce informazioni più dettagliate, collegando i dati dichiarativi di Kubernetes allo scopo di individuare eventuali vulnerabilità sia in Kubernetes che nei container. 

Efficienza operativa superiore 

L'uso dello stesso framework per la gestione dell'infrastruttura e la sicurezza abbassa la curva di apprendimento di Kubernetes, mentre il contesto di Kubernetes accelera il rilevamento delle minacce e le valutazioni dei rischi prioritarie.

Rischio operativo inferiore 

L'uso dei controlli nativi di Kubernetes garantisce una sicurezza con lo stesso ritmo e la stessa scalabilità di Kubernetes. Dato che le policy sono incorporate in Kubernetes, non si rischia alcun conflitto tra i controlli esterni e l'agente di orchestrazione.

La sicurezza Kubernetes native contribuisce a ridurre i problemi operativi dovuti a configurazioni incoerenti, mancanza di coordinazione ed errori degli utenti.

Considerata la scarsa dimestichezza con Kubernetes dimostrata dalla maggior parte degli utenti, esiste un notevole rischio di errore, incluso quello di concedere privilegi elevati tramite il controllo degli accessi basato sui ruoli (RBAC) di Kubernetes, come l'assegnazione di autorizzazioni amministrative complete per il cluster a un account utente o di servizio, oppure quello di esporre inutilmente i segreti di Kubernetes permettendo ai deployment di eseguire il pull dei segreti anche quando non è necessario.

Le piattaforme dotate di sicurezza Kubernetes native sono in grado di identificare questi errori di configurazione in modo automatico e continuativo.

Incorporando i controlli di sicurezza direttamente in Kubernetes si elimina anche il rischio associato all'utilizzo di un software di controllo separato che, in caso di errore, potrebbe rimanere erroneamente aperto, consentendo il passaggio di tutto il traffico senza applicare alcuna protezione, o erroneamente chiuso, bloccando tutto il traffico applicativo.

Poiché i controlli delle policy vengono applicati dall'agente di orchestrazione Kubernetes, la sicurezza dispone immediatamente della stessa scalabilità di Kubernetes e può accedere alla sua gamma completa di opzioni per l'applicazione delle policy. 

L'utilizzo di proxy inline o shim per l'applicazione dei controlli introduce invece singoli punti di errore, problemi di scalabilità e limitazioni di prestazioni.

Kubernetes consente ad esempio di applicare le policy di rete per segmentare il traffico, utilizzare controller di ammissione al fine di applicare le policy alle richieste inviate al server API Kubernetes, utilizzare i segreti per memorizzare le credenziali sensibili e applicare il controllo degli accessi basato sui ruoli (RBAC) per autorizzare funzionalità specifiche a determinati account utente e di servizio.

Puoi anche utilizzare ulteriori strumenti standardizzati, come plug-in di rete che si integrano nella CNI (Container Network Interface), in aggiunta alla piattaforma di sicurezza Kubernetes native, e modificarli come necessario.

Fornendo una singola piattaforma unificata per i servizi di provisioning e infrastruttura operativa, Kubernetes snellisce e aggrega i flussi di lavoro dei team operativi e di sviluppo applicativo. 

Con il deployment di una piattaforma di sicurezza Kubernetes native, questo approccio consolidato, in cui tutti utilizzano la stessa infrastruttura e fanno riferimento a una fonte di attendibilità comune, può essere esteso anche alla sicurezza. 

Tale approccio consente di risparmiare tempo e denaro, abbreviando la curva di apprendimento e accelerando le attività di analisi e correzione.

Quando i team DevOps e di sicurezza utilizzano strumenti diversi, si verificano spesso conflitti dovuti al modo in cui sono configurati. 

Ad esempio, il team DevOps potrebbe specificare una policy di rete Kubernetes che consente il traffico tra due nodi, mentre il cloud di sicurezza potrebbe introdurre un controllo, tramite un software separato, che blocca tale traffico.

Esaminando le impostazioni in Kubernetes, il team DevOps vedrebbe che l'applicazione consente il flusso del traffico e, non vedendo i controlli applicati dal software separato, probabilmente non riuscirebbe a capire perché l'app non funziona.

Se i team DevOps e di sicurezza utilizzano gli stessi costrutti per creare, distribuire e proteggere le app containerizzate, devono imparare a utilizzare un minor numero di interfacce, strumenti e modelli. 

Il team DevOps utilizza i file del manifest Kubernetes per definire le risorse necessarie a una determinata applicazione. Utilizzando queste stesse risorse per ottenere il contesto di sicurezza e applicare le policy, è possibile ridurre la complessità e migliorare il livello di protezione. 

Con la sicurezza Kubernetes native, lo stesso Kubernetes costituisce la fonte di attendibilità per le policy di sicurezza, che viene utilizzata da tutti i team responsabili di sicurezza, operazioni, DevOps ed SRE (Site Reliability Engineering)

Inoltre, i problemi di sicurezza vengono direttamente associati agli oggetti e alle risorse Kubernetes utilizzati quotidianamente da questi team, semplificando ulteriormente le operazioni.

Applicando le policy di sicurezza tramite i controlli nativi di Kubernetes, puoi evitare il rischio operativo derivante dall'implementazione di un software di sicurezza separato.

I container complicano diversi aspetti della sicurezza delle applicazioni cloud native, incluso il fatto che gli incidenti possono essere estremamente frammentati. Generando inoltre notevoli volumi di dati da elaborare ed essendo effimeri, i container rendono inadeguate le tradizionali attività di risposta agli incidenti.

La sicurezza Kubernetes native consente di rilevare in modo più preciso le minacce ai container, riducendo anche il tempo e le attività necessari per applicare efficacemente la sicurezza all'ambiente.

Il contesto di Kubernetes permette di determinare chiaramente il comportamento previsto. Di conseguenza, la sicurezza Kubernetes native è in grado di identificare le anomalie in modo molto più affidabile, garantendo una scelta più precisa delle opzioni di applicazione da utilizzare, come l'arresto di un pod.

L'uso del contesto di Kubernetes riduce anche i falsi positivi e la desensibilizzazione agli allarmi.

La sicurezza Kubernetes native offre inoltre la possibilità di adottare un approccio basato sul rischio all'attività di sicurezza. 

I tuoi deployment presentano probabilmente numerose violazioni delle policy e, anche in questo caso, il contesto di Kubernetes risulta molto utile per individuarle. 

Aggregando i diversi aspetti dei metadati di Kubernetes, che specificano anche se un determinato cluster fa parte dell'ambiente di sviluppo o di quello di produzione, se è esposto o meno a Internet, il livello di criticità dell'applicazione e se al momento sta eseguendo processi sospetti, permette al tuo team di identificare tutti gli elementi che richiedono attenzione immediata. 

Il rilevamento delle vulnerabilità specifiche di Kubernetes, soprattutto quelle che costituiscono un rischio per il server API Kubernetes, è fondamentale ai fini della prevenzione, dell'identificazione e della correzione. Gli strumenti di sicurezza Kubernetes native permettono di identificare automaticamente tali vulnerabilità.

L'integrazione con il server API Kubernetes consente di monitorare la sicurezza sia per i container eseguiti nei cluster Kubernetes, sia per le risorse di Kubernetes, come deployment, set di daemon, servizi, pod e altro.

Anche la natura completamente aperta dei deployment Kubernetes costituisce una minaccia. Poiché Kubernetes è soprattutto una piattaforma per le operazioni a livello di infrastruttura, al fine di garantire la semplicità operativa non tutti i componenti sono necessariamente sicuri per impostazione predefinita. 

L'applicazione delle policy di rete di Kubernetes per limitare le comunicazioni costituisce un altro elemento critico per la protezione del deployment Kubernetes. Le piattaforme di sicurezza Kubernetes native sono in grado di creare automaticamente una baseline dell'attività di rete, identificare i percorsi di comunicazione necessari alle applicazioni e creare il file YAML corretto per ridurre l'ambito di accesso alla rete.

Sfruttando le impostazioni per la sicurezza automatica disponibili in una piattaforma Kubernetes native, è possibile identificare e bloccare in modo continuativo le minacce al livello Kubernetes.

 

La sicurezza Kubernetes native garantisce anche livelli di portabilità e riutilizzo elevati. Adottando un singolo approccio standardizzato in tutti i sistemi che eseguono Kubernetes è possibile garantire un'applicazione coerente delle policy in tutti gli ambienti. 

La sicurezza Kubernetes native permette agli utenti di specificare una singola configurazione, come una policy di rete, da applicare a tutti i pod di un deployment, anziché configurare controlli a livello di sistema a tutti gli host in un cluster. 

Collegando le policy all'interno di sistemi CI/CD e nel framework del controller di ammissione Kubernetes, è possibile applicare più facilmente le policy di controllo fin dalle prime fasi del ciclo di vita dello sviluppo software, prevenendo l'esposizione al runtime. 

Inoltre, l'utilizzo dei costrutti Kubernetes, come il controller di ammissione, garantisce un'integrazione profonda della sicurezza nelle toolchain Kubernetes.

Keep reading

ARTICOLO

Container e VM

I container Linux e le macchine virtuali (VM) sono entrambi pacchetti di ambienti di elaborazione che combinano vari componenti IT e li isolano dal resto del sistema.

ARTICOLO

Cos'è l'orchestrazione dei container?

Definiamo orchestrazione dei container l'automazione dei processi di deployment, gestione, scalabilità e networking dei container.

ARTICOLO

Cos'è un container Linux?

Un container Linux è un insieme di processi, isolati dal resto del sistema, che esegue un'immagine distinta contenente tutti i file necessari per supportare tali processi.

Scopri di più sui container

Prodotti

Una piattaforma applicativa aziendale che offre servizi verificati per consentire la distribuzione delle app sulle infrastrutture preferite.

Risorse

Checklist

10 considerazioni sui deployment Kubernetes

Checklist

Sei considerazioni per scegliere la piattaforma Kubernetes giusta

Serie Open Answers: Cos'è Red Hat OpenShift?

Formazione

Corso di formazione gratuito

Running Containers with Red Hat Technical Overview

Corso di formazione gratuito

Containers, Kubernetes and Red Hat OpenShift Technical Overview

Corso di formazione gratuito

Developing Cloud-Native Applications with Microservices Architectures