We couldn't find a match for given <KEYWORD>, please try again.

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.