Immagine di Kubernetes
Vai al paragrafo

Procedure ottimali per la sicurezza di Kubernetes

Copia URL

Per adottare le procedure ottimali per la sicurezza di Kubernetes è necessario eliminare le vulnerabilità di sicurezza note durante la fase di creazione, correggere gli errori di configurazione durante la fase di generazione/deployment, rispondere alle minacce durante il runtime e infine proteggere l'intera infrastruttura Kubernetes. 

Questo è quanto emerge dalle risposte legate ai principali timori a proposito della sicurezza incluse nell'ultimo report sullo stato della sicurezza di Kubernetes, secondo il quale il 50% degli intervistati teme gli errori di configurazione e le vulnerabilità causate dall'elevata capacità di personalizzazione di Kubernetes e dalla complessità della sicurezza dei container. Per poter superare le sfide della sicurezza e non rallentare il deployment delle applicazioni, la sicurezza di Kubernetes deve diventare prioritaria lungo l'intero ciclo di sviluppo.

I container sono una tecnologia ampiamente diffusa

Kubernetes è una piattaforma open source per l'orchestrazione dei container, che consente di gestire centinaia (a volte migliaia) di container Linux® organizzati in cluster Kubernetes. Fa ampio uso delle interfacce di programmazione delle applicazioni (API) che connettono i microservizi containerizzati. La sua natura distribuita impedisce di identificare velocemente i container che possono presentare vulnerabilità o errori di configurazione e quelli che espongono l'azienda ai rischi più gravi.

Per risolvere il problema, è fondamentale ottenere una vista esaustiva dei deployment containerizzati al fine di acquisire gli eventi critici a livello di sistema generati nei singoli container.

"KuppingerCole Report Leadership Compass: Container security"

Ottieni una panoramica completa del mercato della sicurezza dei container e di Kubernetes per valutare e selezionare la soluzione giusta.

Potenziali errori di utilizzo di immagini e registri

Le immagini container (o immagini base) sono modelli immutabili che possono essere utilizzati per creare nuovi container. Le nuove immagini container copiate possono essere quindi modificate in modo da soddisfare esigenze specifiche.

Il problema può essere risolto configurando policy che determinano la modalità con cui le immagini vengono create e memorizzate nei relativi registri. Le immagini base devono essere testate, approvate e scansionate regolarmente. Inoltre, solo le immagini provenienti da registri di immagini consentiti devono essere utilizzate per avviare i container in un ambiente Kubernetes.

Comunicazione libera fra container

Per funzionare correttamente, container e pod devono comunicare fra loro all'interno dei deployment, ma anche con endpoint interni ed esterni. Se un hacker riesce a violare un container, la sua capacità di movimento all'interno dell'ambiente è direttamente correlata alla possibilità del container di comunicare con gli altri container e pod. In un ambiente caratterizzato da un elevato numero di container, potrebbe risultare impossibile implementare la segmentazione della rete a causa delle difficoltà legate alla configurazione manuale di tali policy.

Il problema può essere risolto monitorando il traffico scambiato fra spazi dei nomi, deployment e pod, al fine di identificarne la parte effettivamente consentita.

Scopri di più su come Red Hat facilita la comunicazione sicura tra container

Policy di rete predefinite per i container

Per impostazione predefinita, i deployment Kubernetes non applicano una policy di rete a un pod, che costituisce la più piccola unità di un'applicazione Kubernetes. Le policy di rete hanno un comportamento simile a quello delle regole di un firewall, poiché controllano la modalità di comunicazione dei pod. Senza policy di rete, tutti i pod possono comunicare con qualsiasi altro pod. 

Per risolvere il problema è possibile definire policy di rete che limitano la comunicazione fra pod solo agli asset prestabiliti e montare i segreti in volumi di sola lettura all'interno dei container, anziché passarli sotto forma di variabili di ambiente.

Conformità di container e Kubernetes

Come qualsiasi altro ambiente IT, anche gli ambienti cloud native basati su Kubernetes devono rispettare le procedure consigliate di sicurezza, gli standard settoriali, i benchmark e le policy aziendali interne, dimostrando anche la relativa conformità. A volte questo richiede l'adattamento delle strategie di conformità, per consentire all'ambiente Kubernetes di rispondere a controlli originariamente concepiti per le architettura applicative tradizionali.

Per risolvere il problema, è possibile monitorare il rispetto della conformità e automatizzare gli audit.

Runtime

Kubernetes è un'infrastruttura immutabile. Non è possibile applicare patch durante il runtime dei container, perché i container in esecuzione devono essere distrutti e ricreati. I container compromessi possono eseguire processi dannosi, come il mining di criptovalute e la scansione delle porte.

Per risolvere il problema, è possibile distruggere tutti i container violati o in esecuzione, ricreare un'immagine container integra e quindi riavviarla.

La sicurezza di Kubernetes inizia durante la fase di creazione, generando immagini base affidabili e adottando processi di scansione delle vulnerabilità.

  • Usa immagini di base minime. Evita di usare immagini contenenti shell o gestori di pacchetti del sistema operativo, che potrebbero presentare vulnerabilità sconosciute, o rimuovi i gestori di pacchetti in seguito.
  • Utilizza sorgenti attendibili. Scegli solo immagini base provenienti da una sorgente attendibile, il cui host sia un registro con un'ottima reputazione.
  • Non aggiungere componenti non necessari. Come regola generale, gli strumenti comuni possono diventare rischi per la sicurezza quando vengono inclusi nelle immagini.
  • Usa solo immagini aggiornate. Aggiorna le versioni dei componenti.
  • Usa uno scanner di immagini. Identifica le vulnerabilità all'interno delle immagini, suddivise per livello.
  • Integra la sicurezza nelle pipeline CI/CD.Automatizza un elemento ripetibile della sicurezza che impedirebbe la creazione delle build per l'integrazione continua e genera avvisi per le vulnerabilità gravi ma eliminabili.
  • Etichetta le vulnerabilità permanenti. Aggiungi all'elenco delle vulnerabilità consentite le vulnerabilità che non possono essere eliminate, ma non sono critiche, o che non è essenziale eliminare immediatamente. 
  • Implementa misure di difesa avanzate. Standardizza i controlli delle policy e i flussi di lavoro di correzione per rilevare e aggiornare le immagini vulnerabili.

Configura la sicurezza dell'infrastruttura Kubernetes prima del deployment dei carichi di lavoro. A tale scopo, occorre innanzitutto conoscere a fondo il processo di deployment, ovvero gli elementi da distribuire (immagini, componenti, pod), dove verranno distribuiti (cluster, spazi dei nomi e nodi), come verranno distribuiti (privilegi, policy di comunicazione, misure di sicurezza applicate), le risorse a cui hanno accesso (segreti, volumi) e gli standard di conformità.

  • Usa gli spazi dei nomi. La suddivisione dei carichi di lavoro in spazi dei nomi può aiutare a contenere gli attacchi e limitare le conseguenze degli errori o delle azioni distruttive eseguite dagli utenti autorizzati.
  • Usa le policy di rete. Per impostazione predefinita, Kubernetes consente a tutti i pod di contattare qualsiasi altro pod; questo comportamento può essere modificato dalle policy di segmentazione della rete e dai plugin che controllano il traffico in ingresso e in uscita dall'applicazione.
  • Limita le autorizzazioni di accesso ai segreti. Monta solo i segreti effettivamente necessari ai deployment.
  • Valuta i privilegi dei container. Fornisci esclusivamente le funzionalità, i ruoli e i privilegi necessari al container per svolgere la propria funzione. 
  • Verifica la provenienza delle immagini. Usa solo immagini provenienti da registri noti.
  • Analizza i deployment. Applica le policy in base ai risultati della scansione. 
  • Utilizza etichette e annotazioni. Aggiungi ai deployment un'etichetta o un'annotazione con il recapito del responsabile del team per un'applicazione containerizzata, in modo da semplificare il triage.
  • Abilita il controllo degli accessi basato sui ruoli (RBAC).RBAC controlla l'autorizzazione degli account utente e di servizio ad accedere al server API Kubernetes di un cluster.

Adottando procedure ottimali per la sicurezza di Kubernetes durante le fasi di creazione e deployment è possibile ridurre la probabilità di un incidente di sicurezza, ma per identificare e rispondere alle minacce durante il runtime occorre un monitoraggio continuo delle attività dei processi e delle comunicazioni di rete.

  • Usa le informazioni sul contesto. Usa le informazioni raccolte durante le fasi di creazione e deployment in Kubernetes per valutare l'attività osservata rispetto a quella prevista in fase di runtime al fine di rilevare i comportamenti sospetti.
  • Analizza i deployment in esecuzione. Monitora i deployment in esecuzione per individuare le vulnerabilità scoperte di recente e rilevate nelle immagini container.
  • Usa i controlli integrati. Configura il contesto di sicurezza per i pod in modo da limitarne le capacità.
  • Monitora il traffico di rete. Osserva e confronta il traffico di rete in tempo reale con quello consentito dalle policy di rete di Kubernetes al fine di identificare le comunicazioni impreviste.
  • Usa gli elenchi dei componenti consentiti. Identifica i processi eseguiti durante la normale fase di runtime dell'app per creare un elenco di componenti consentiti.
  • Confronta l'attività di runtime nei pod distribuiti con modalità simili. Le repliche che presentano discrepanze rilevanti devono essere analizzate.
  • Riduci a zero i pod sospetti. Usa i controlli nativi di Kubernetes per contenere le violazioni, richiedendo automaticamente a Kubernetes di ridurre a zero i pod sospetti o di distruggere e riavviare le istanze.

La sicurezza di Kubernetes si estende oltre le immagini e i carichi di lavoro, per includere l'intera infrastruttura Kubernetes, ovvero i cluster, i nodi, il motore container e persino i cloud.

  • Applica gli aggiornamenti di Kubernetes. Durante l'aggiornamento delle distribuzioni di Kubernetes in uso vengono applicate le patch di sicurezza e installati nuovi strumenti di sicurezza.
  • Proteggi il server API Kubernetes. Il server API Kubernetes rappresenta il gateway al piano di controllo di Kubernetes. Disabilita l'accesso anonimo/non autenticato e utilizza la crittografia TLS per le connessioni fra i kubelet e il server API. Per ottenere più visibilità sulle chiamate API atipiche, è bene abilitare i registri di audit.
  • Proteggi etcd. etcd è un archivio di coppie chiave-valore utilizzato da Kubernetes per accedere ai dati. Proteggi kubelet per ridurre la superficie di attacco. Disabilita l'accesso anonimo al kubelet, avviandolo con il flag --anonymous-auth=false, e utilizza il controller di ammissione NodeRestriction per limitare le risorse a cui può accedere.

Sicurezza del cloud

Indipendentemente dal tipo di cloud (pubblico, privato, ibrido o multicloud) che ospita i container o esegue Kubernetes, l'utente del cloud (non il provider di servizi cloud) ha sempre la responsabilità di proteggere il carico di lavoro Kubernetes, che include:

  • Immagini container: sorgenti, 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 Kubernetes, etichette e annotazioni
  • Segmentazione della rete: policy di rete nel cluster Kubernetes
  • Runtime: rilevamento delle minacce e risposta agli incidenti

L'uso di container e Kubernetes non modifica il tuo obiettivo rispetto alla sicurezza, che rimane sempre quello di ridurre le vulnerabilità e i rischi.

  • Integra le procedure ottimali di sicurezza nelle prime fase del ciclo di vita dei container. La sicurezza di Kubernetes dovrebbe consentire ai team di sviluppo e DevOps di creare e distribuire in modo affidabile applicazioni predisposte per l'ambiente di produzione.
  • Usa i controlli di sicurezza nativi di Kubernetes.I controlli nativi evitano i conflitti tra i controlli di sicurezza e l'agente di orchestrazione
  • Consenti a Kubernetes di privilegiare la correzione.

Proteggere le applicazioni cloud native e l'infrastruttura sottostante richiede modifiche sostanziali in termini di approccio alla sicurezza di un'azienda. Infatti, è necessario anticipare i controlli lungo il ciclo di sviluppo delle applicazioni, ricorrere a controlli integrati per applicare policy che prevengano i problemi di scalabilità e operatività, e stare al passo con le pianificazioni dei rilasci sempre più frequenti.

Red Hat® Advanced Cluster Security for Kubernetes è una piattaforma di sicurezza Kubernetes native che permette alle aziende di creare, distribuire ed eseguire le applicazioni cloud native ovunque e con maggiore sicurezza. Questa soluzione consente di migliorare la sicurezza del processo di creazione delle applicazioni, di proteggere le configurazioni e la piattaforma delle applicazioni e di rilevare e rispondere ai problemi di runtime. 

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