What is Kubernetes?

Kubernetes è diventato uno standard nel software nativo del cloud per quanto riguarda i contenitori. Infatti, il sondaggio più recente della cloud Native Computing Foundation (CNCF) ha rilevato che l'utilizzo di Kubernetes in produzione è cresciuto fino al 78%. Tuttavia, come con qualsiasi tecnologia che diventa popolare in un breve lasso di tempo, c’è molta confusione su cosa sia Kubernetes e quali considerazioni sulla sicurezza derivano da Kubernetes e dalla containerizzazione. Caso in questione: nello stesso sondaggio del CNCF, il 40% degli intervistati ha menzionato la sicurezza come una sfida nell’uso/deployment dei container e il 38% ha indicato la complessità come una sfida.

Per gli ingegneri della sicurezza incaricati di rafforzare la distribuzione dei container, c’è sicuramente una curva di apprendimento da superare. Per aiutarti ad aggiornarti, daremo un'occhiata a cos'è Kubernetes, come funziona ed esploreremo alcuni concetti di base sulla sicurezza di Kubernetes.

Prova Gratuita Guida alla sicurezza di Kubernetes

What is Kubernetes?

Definition

Kubernetes è una piattaforma utilizzata per orchestrare e gestire carichi di lavoro in contenitori (es Contenitori Docker). 

Sin dal suo rilascio iniziale nel 2014, Kubernetes, un progetto di laurea CNCF open source le cui radici risalgono al team di sviluppo di Google, è diventato uno degli strumenti più popolari nei circoli DevOps e cloud native.

Un prerequisito per comprendere Kubernetes è innanzitutto comprendere i contenitori. In poche parole, i contenitori sono pacchetti software leggeri che includono tutte le dipendenze necessarie per l'esecuzione di un'applicazione. I contenitori risolvono il problema di eseguire in modo affidabile l'applicazione in ambienti diversi. Poiché sono leggeri e portatili, i contenitori sono diventati sempre più popolari e sono vitali per lo sviluppo dei moderni microservizi e delle applicazioni web.

Sebbene l'utilizzo di un singolo contenitore non richieda molta gestione e orchestrazione, le applicazioni di grandi dimensioni devono essere in grado di scalare. I moderni team di sviluppo devono essere in grado di automatizzare e scalare il processo di deployment dei container. È qui che entrano in gioco gli strumenti di gestione dei carichi di lavoro containerizzati come Kubernetes. Kubernetes fornisce la gestione e l'orchestrazione mancanti.

La frase "gestione e orchestrazione" viene spesso utilizzata quando si parla di Kubernetes. Tuttavia, questo non ci dice molto sui dettagli. In termini semplici, ciò significa che Kubernetes consente il bilanciamento del carico, la gestione della configurazione, la configurazione delle risorse di storage, l'allocazione automatica delle risorse (ad es. CPU e RAM per contenitore) e l'aumento o la riduzione della distribuzione del contenitore.

Kubernetes vs Docker

Può esserci molta confusione sull'argomento Docker vs Kubernetes. Tuttavia, in realtà è abbastanza semplice:

  • Docker è una piattaforma per la creazione e l'esecuzione di contenitori. Non è l'unica piattaforma di container, ma è la più popolare.
  • Kubernetes è uno strumento per la gestione di più contenitori, inclusi i contenitori Docker.
  • Docker offre uno strumento con alcune delle stesse funzionalità di Kubernetes noto come Swarm.

Quest'ultimo punto è ciò che può portare a un po' di confusione. Docker offre uno strumento, Swarm, che fornisce funzionalità simili a Kubernetes. Tuttavia, Kubernetes è di gran lunga lo strumento di gestione e orchestrazione più popolare.

Concetti e termini importanti di Kubernetes

Oltre ai contenitori, ci sono altri concetti importanti da comprendere quando si inizia a utilizzare Kubernetes. Diamo un'occhiata ad alcuni termini chiave:

  • K8s. Questo è un sinonimo di Kubernetes. Gli sviluppatori a volte creano una scorciatoia per i termini popolari prendendo la prima e l'ultima lettera di una parola, il numero di lettere tra di loro, e combinandola in una stenografia per la parola. L'interoperabilità diventa "i14y", la localizzazione diventa "l10n" e Kubernetes diventa "k8s".
  • Baccelli. Queste sono le unità più piccole che possono essere distribuite in Kubernetes. Un pod è costituito da uno o più contenitori che condividono risorse di archiviazione e di rete e da una specifica per l'esecuzione dei contenitori.
  • Carichi. Queste sono le applicazioni (set di pod, in realtà) eseguite da Kubernetes. Kubernetes distribuisce gli aggiornamenti e ridimensiona i pod in base a ciò che impone il carico di lavoro configurato.
  • Nodi. L’“hardware” di calcolo (si pensi alla RAM e alla CPU) su cui vengono eseguiti i carichi di lavoro è noto come nodi. L'"hardware" può essere qualsiasi cosa, da un Raspberry Pi a una macchina virtuale a un server fisico, la chiave qui è che le risorse di calcolo provengono dai nodi. Esistono due tipi principali di nodi: nodi di lavoro/minion che eseguono i carichi di lavoro e nodi master che gestiscono un set di nodi di lavoro/minion.
  • Grappoli. Un cluster Kubernetes è un gruppo di nodi. In un cluster, i nodi di lavoro eseguono i carichi di lavoro e un nodo master controlla le operazioni eseguite dai nodi di lavoro.

A cosa serve Kubernetes?

Kubernetes può essere utile in modo efficace ovunque possa essere utile un approccio Infrastructure-as-Code alla deployment dei container. Ciò significa che i team di sviluppo Agile e i team focalizzati sulle pratiche DevOps utilizzeranno spesso Kubernetes per automatizzare le pipeline di integrazione continua/distribuzione continua (CI/CD). Inoltre, Kubernetes può aiutare a scalare automaticamente l'applicazione nativa del cloud monitorando lo stato dei nodi e l'utilizzo delle risorse e scalando verso l'alto o verso il basso secondo necessità.

Importanti concetti di sicurezza di Kubernetes

Naturalmente, sebbene Kubernetes aggiunga valore dal punto di vista dell’automazione e della scalabilità, aggiunge anche un nuovo vantaggio per i team di sicurezza. Come puoi assicurarti che le tue app e i tuoi servizi siano distribuiti in modo sicuro? Come sempre, questo inizia con la comprensione del tuo modello di minaccia e della tua propensione al rischio, ma ci sono alcune nozioni di base per aiutarti a iniziare.

  • Le 4C della sicurezza nativa del cloud– Kubernetes richiama un approccio a 4 livelli alla sicurezza nativa del cloud noto come le 4C: codice,contenitore ,clustere CLoud/Co-location/Corporate data center. A ogni livello, è necessario assicurarsi che vengano seguite le procedure consigliate per la sicurezza. Questo significa cose diverse a diversi livelli. Ad esempio, garantendo che il codice applichi la crittografia dei dati in transito e limiti l'accesso solo alle porte di rete essenziali, non consentendo agli utenti privilegiati nei contenitori, rafforzando i componenti del cluster Kubernetes configurabili e seguendo le migliori pratiche di sicurezza del tuo fornitore di servizi cloud.
  • Criteri di sicurezza dei pod. Con i pod Kubernetes, esistono 3 policy di sicurezza di base. Per proteggere correttamente l'ambiente, è necessario comprendere i compromessi tra usabilità e sicurezza e agire di conseguenza.
    • Privilegiato. Il più ampio livello di autorizzazioni. Con questo criterio è possibile eseguire escalation dei privilegi noti.
    • Linea di base/predefinita. La via di mezzo tra privilegiato e limitato. Impedisce l'escalation dei privilegi noti.
    • Limitato. In base alle migliori pratiche di rafforzamento dei pod Kubernetes, questa è la più restrittiva delle 3 policy di base.
  • Contesti di sicurezza dei pod. Il contesto di sicurezza di un pod configura le impostazioni di sicurezza in fase di esecuzione. Questo copre aspetti come il controllo degli accessi, l'esecuzione come privilegiata o meno, il montaggio di file system di sola lettura, ecc. Potresti pensare che questo suoni molto simile alle politiche di sicurezza di Pod, e in effetti sono correlate. I contesti di sicurezza sono ciò che accade in fase di esecuzione, mentre i criteri di sicurezza consentono di definire i parametri per i contesti utilizzati all'interno di un cluster.
  • Segreti. Lo strumento Infrastructure-as-Code è ottimo, ma probabilmente non si desidera che i token OAuth o le password si trovino in un file YAML. I segreti sono il modo in cui Kubernetes archivia questo tipo di informazioni sensibili.

È inoltre fondamentale disporre di un piano per la visibilità del contenitore e la scansione delle vulnerabilità per garantire che la risoluzione dei problemi avvenga rapidamente e che tu rimanga conforme a tutti gli standard pertinenti. Per iniziare con la scansione delle vulnerabilità dei contenitori e le valutazioni del comportamento di sicurezza, consigliamo di leggere Visibilità e conformità continue dei contenitori (PDF).

Prossimi passi con Kubernetes

Ora che hai compreso come funziona Kubernetes ad alto livello, controllando e gestendo automaticamente la distribuzione dei contenitori, puoi eseguire i passaggi successivi per distribuire K8 in modo sicuro. Per un approfondimento sull'implementazione della sicurezza con container, Kubernetes e infrastruttura serverless, iscriviti per visualizzare il webinar gratuito How to Layer Security into Modern Cloud applicazione presentato dall'esperto Cloud Security Hillel Solow.

×
  Feedback
Questo sito Web utilizza i cookie per motivi funzionali e a scopo di analisi e marketing. Continuando a utilizzare il sito Web, accetti implicitamente l'uso dei cookie. Per ulteriori informazioni, si prega di leggere la nostra Informativa sui cookie.
OK