Cos'è la sicurezza di Kubernetes?
La sicurezza di Kubernetes è basata sulle "4 C" della sicurezza nativa per il cloud: cloud, cluster, container e codice:
- Cloud (o data center aziendale/struttura di co-locazione): l'infrastruttura fisica sottostante è la base della sicurezza di Kubernetes. Indipendentemente dal fatto che il cluster sia costruito su un data center di proprietà o su un cloud provider, è necessario osservare le best practice per i cloud provider di base (o per la sicurezza fisica).
- Cluster: la protezione di un cluster Kubernetes interessa sia i componenti configurabili, come l'API Kubernetes, sia la sicurezza di tutte le applicazioni che fanno parte del cluster. Poiché la maggior parte delle applicazioni native per il cloud è progettata attorno a microservizi e API, le applicazioni sono sicure solo quanto l'anello più debole della catena di servizi che compongono l'intera applicazione.
- Container: le best practice per la progettazione dei container includono: iniziare con la base di codice più piccola possibile (escludendo librerie o funzioni non necessarie), evitare di concedere privilegi non necessari agli utenti nel container e garantire che i container siano sottoposti a scansione per rilevare eventuali vulnerabilità in fase di creazione.
- Codice: il codice rappresenta una superficie di attacco importante per qualsiasi ambiente Kubernetes. Semplici policy come la crittografia TCP tramite gli handshake TLS, la non esposizione delle porte inutilizzate, la scansione e i test periodici possono aiutare a prevenire l'insorgere di problemi di sicurezza in un ambiente di produzione.

Kubernetes in 5 minuti

Lo stato di Kubernetes 2021
Perché la sicurezza di Kubernetes è importante nell'intero ciclo di vita dei container?
La sicurezza di Kubernetes è importante nell'intero ciclo di vita dei container a causa della natura dinamica e distribuita di un cluster Kubernetes. È necessario adottare diversi approcci alla sicurezza in ciascuna delle tre fasi del ciclo di vita di un'applicazione, ovvero creazione, deployment ed esecuzione. Kubernetes offre vantaggi di sicurezza innati. Ad esempio, i container delle applicazioni in genere non ricevono patch o aggiornamenti, ma le immagini dei container vengono sostituite interamente con nuove versioni. Questo approccio consente un rigoroso controllo delle versioni e consente rapidi rollback se viene rilevata una vulnerabilità nel nuovo codice.
Tuttavia, poiché i singoli pod sono transitori ed effimeri, l'ambiente di runtime in continua evoluzione può presentare sfide per i professionisti della sicurezza IT, poiché applicazioni e collegamenti API ad altre applicazioni e servizi sono in costante mutamento.
Quali sono le principali vulnerabilità della sicurezza di Kubernetes durante il ciclo di vita di un'applicazione e come risolverle?
Gli strumenti della sicurezza di Kubernetes devono:
- Ridurre il tempo necessario per garantire che il codice non venga compromesso
- Fornire firme digitali per un livello di fiducia per il codice
- Offrire visibilità e trasparenza non solo per il codice, ma anche per i problemi di configurazione
- Impedire l'ingresso (connessione in entrata) o l'uscita (connessione in uscita) delle informazioni a servizi non sicuri
Quali sono le principali vulnerabilità della sicurezza di Kubernetes nella fase di creazione?
- Codice proveniente da registri non attendibili. Il codice non attendibile può includere malware o backdoor che potrebbero concedere involontariamente l'accesso a soggetti malintenzionati.
- Immagini di base complesse. Meno è meglio è per le applicazioni containerizzate, pertanto gli sviluppatori dovrebbero eliminare pacchetti, librerie e shell non necessari che potrebbero essere compromessi.
Quali sono le principali vulnerabilità della sicurezza di Kubernetes nella fase di deployment?
- Concessione di privilegi non necessari. Laddove possibile, è preferibile mantenere i privilegi al minimo e introdurre solo i segreti che un'attività richiede per ridurre la superficie di attacco.
- Errore nell'isolamento delle applicazioni nel cluster. Gli spazi dei nomi devono essere utilizzati per mantenere le risorse e i team separati gli uni dagli altri.
- Movimento laterale all'interno del cluster. Usa policy che segmentano la rete per impedire lo spostamento laterale di un attacco all'interno del cluster.
- Accesso non autorizzato. Verifica che i controlli dell'accesso basati sul ruolo (RBAC) siano configurati correttamente per limitare l'accesso.
Quali sono le principali vulnerabilità della sicurezza di Kubernetes durante il runtime?
- Attacchi all'infrastruttura. Durante il runtime, gli elementi dell'infrastruttura Kubernetes, tra cui server API, etcd e controller, presentano tutti le loro superfici di attacco.
- Complessità. Lo stato continuo di un cluster Kubernetes si compone di molte parti in movimento. I container compromessi devono essere isolati, bloccati e sostituiti rapidamente con altri integri mentre l'origine dell'attacco viene individuata e neutralizzata.
Cos'è una checklist per la sicurezza di Kubernetes generale?
Le best practice consigliate includono: iniziare con immagini minime senza distribuzione e aggiungere solo quello che è assolutamente necessario. Più piccolo è più sicuro.
- Usa un sistema operativo host minimo, termina i montaggi di sola lettura e utilizza le opzioni SELinux per un controllo ancora maggiore.
- Scansiona le immagini per individuare le vulnerabilità dall'alto verso il basso, incluse le immagini del sistema operativo e immagini esterne di qualsiasi tipo. Non esiste una fonte esterna affidabile.
- Usa gli spazi dei nomi e RBAC per segmentare il cluster e gli utenti in modo logico. Se non è necessario, non dovrebbe essere visibile.
- Le impostazioni predefinite per il networking Kubernetes consentono le comunicazioni "any-to-any", in modo che venga implementata la segmentazione della rete prima dell'ambiente di produzione. Definisci attentamente le policy di ingresso e di uscita per garantire il corretto instradamento delle connessioni.
- Mantieni i privilegi al minimo e non eseguire mai i processi delle applicazioni come rooting. L'utilizzo di un file system di rooting di sola lettura impedisce qualsiasi attacco che dipenda dall'installazione di software o dalla modifica del file system.
- Integra la sicurezza, come la scansione delle immagini, nella pipeline CI/CD. Ancora meglio, esegui i test di sicurezza CIS Benchmark.
- Proteggi il cluster stesso. Configura RBAC per limitare l'accesso al server delle API e garantire che tutte le comunicazioni etcd siano protette con la crittografia TLS. Allo stesso modo, blocca le autorizzazioni kubelet configurando RBAC per kubelet.
- Sfrutta i controlli integrati in Kubernetes, come la configurazione del contesto di sicurezza per limitare l'accesso ai pod.
- La sicurezza proattiva deve includere il monitoraggio dell'attività dei processi, le comunicazioni tra i servizi e le comunicazioni esterne al cluster.
Soluzioni e prodotti correlati
Runtime Kubernetes di classe enterprise
Ottimizza le operation nell'infrastruttura multi-cloud.
Kubernetes e Docker a confronto
Quali strumenti scegliere per avere successo con i container?
Container Docker su Kubernetes
Una volta compreso che cosa sono i container e Kubernetes, il passo successivo è capire come i due lavorano insieme.