Benchmark CIS


Questa pagina descrive l'approccio adottato da Google Kubernetes Engine (GKE) per migliorare la conformità ai benchmark di Center for Internet Security (CIS) per Kubernetes e per GKE. Questa pagina include le seguenti informazioni:

  • Come configuriamo il piano di controllo GKE gestito per essere conforme a CIS Kubernetes Benchmark
  • Come configurare nodi e carichi di lavoro GKE in modo conformi al benchmark CIS di Google Kubernetes Engine (GKE)

Informazioni sui CIS Benchmarks

CIS rilascia i seguenti benchmark che contengono linee guida per la configurazione sicura per Kubernetes:

  • Benchmark CIS per Kubernetes: si applica al progetto Kubernetes open source. È destinato a fornire indicazioni per varie implementazioni di Kubernetes autogestite e ospitate.
  • CIS GKE Benchmark: stabilisce le linee guida per la configurazione sicura dei componenti che puoi controllare nei cluster GKE. Include suggerimenti specifici per GKE su Google Cloud.

Ti consigliamo di assegnare la priorità al CIS GKE Benchmark, perché è specifico per GKE su Google Cloud. CIS Kubernetes Benchmark contiene molti suggerimenti per i controlli che non puoi visualizzare o modificare in GKE. Il nostro approccio alla sicurezza dei cluster include mitigazioni che vanno oltre l'ambito del benchmark Kubernetes open source e potrebbero comportare conflitti con questi suggerimenti.

Altri benchmark che si applicano a GKE

Oltre al CIS GKE Benchmark e al CIS Kubernetes Benchmark, i seguenti benchmark si applicano ai sistemi operativi disponibili in GKE. Anche se un benchmark di sistema operativo specifico non riguarda esplicitamente l'utilizzo di Kubernetes, devi comunque fare riferimento a quel benchmark per ulteriori indicazioni sulla sicurezza.

Il runtime del container predefinito, containerd, non ha un benchmark.

Modello di responsabilità condivisa

In base al modello di responsabilità condivisa di GKE, gestiamo automaticamente i seguenti componenti:

  • Il piano di controllo, incluse le VM del piano di controllo, il server API e componenti come etcd, kube-controller-manager e kube-scheduler.
  • Il sistema operativo del nodo.

Questi componenti si trovano in un progetto di proprietà di GKE, quindi non puoi modificare o valutare nessuno di questi componenti rispetto ai controlli di CIS Benchmark corrispondenti. Tuttavia, puoi valutare e correggere eventuali controlli di CIS Benchmark applicabili ai tuoi nodi worker e ai tuoi carichi di lavoro. In base al modello di responsabilità condivisa di GKE, questi componenti rappresentano la tua responsabilità.

Il nostro approccio alla protezione di GKE per CIS Benchmark

GKE è un'implementazione gestita di Kubernetes open source. Noi gestiamo completamente il piano di controllo e siamo responsabili della sicurezza della configurazione dei relativi componenti. La seguente tabella descrive alcune delle nostre decisioni che potrebbero influire sul punteggio dei CIS Benchmark:

Approccio alla sicurezza di GKE
Autenticazione
  • Alcuni componenti di monitoraggio di GKE utilizzano l'autenticazione anonima per ottenere le metriche. GKE consente l'autenticazione anonima per il kubelet, ma questa esposizione è identica alla porta di sola lettura perché disabilitiamo gestori di debug aggiuntivi.
  • Il bootstrap di alcuni componenti del piano di controllo viene eseguito tramite token statici, che vengono poi utilizzati per l'autenticazione sul server API. Questi token vengono generati a ogni avvio o riavvio di una VM.
Controller di ammissione

GKE disabilita i seguenti controller di ammissione:

  • EventRateLimit: questa è una funzionalità alpha in Kubernetes
  • AlwaysPullImages: questo controller fornisce una certa protezione per le immagini del registro private nei cluster multitenant non cooperativi, al costo di rendere i registri di immagini un single point of failure per la creazione di nuovi pod nel cluster.
  • SecurityContextDeny: è il preferito il controller di ammissione della sicurezza dei pod ed è disponibile in tutte le versioni di GKE. Se utilizzi GKE Enterprise, puoi anche abilitare l'applicazione forzata degli standard di sicurezza dei pod utilizzando Policy Controller.
  • ImagePolicyWebhook: GKE disabilita ImagePolicyWebhook per impostazione predefinita perché dispone di meccanismi propri per la gestione e la sicurezza delle immagini. Ciò consente a GKE di mantenere un controllo più rigoroso sull'ambiente e di garantire che le sue prassi di sicurezza vengano applicate in modo coerente. Tuttavia, puoi utilizzare Autorizzazione binaria o Policy Controller per la gestione dei criteri.
Audit logging GKE acquisisce gli audit log utilizzando il criterio di controllo di GKE. Di conseguenza, non dobbiamo impostare alcun flag di audit logging del server API Kubernetes.
Debug GKE utilizza la profilazione per il debug.
Crittografia
kubelet
  • GKE abilita la porta di sola lettura kubelet non autenticata.
  • La modalità GKE Standard consente ai tuoi carichi di lavoro di modificare i valori predefiniti del kernel, se necessario.
  • GKE limita il numero di eventi Kubernetes nel kubelet per ridurre il rischio di attacchi denial-of-service.
  • GKE utilizza mTLS per proteggere il traffico tra kubelet e server API.
  • GKE ruota i certificati server per impostazione predefinita e i certificati client quando i nodi GKE schermati sono abilitati.
  • GKE utilizza il set di crittografia consentito predefinito golang, che è anche l'impostazione predefinita per Kubernetes.

Valuta GKE rispetto ai CIS Benchmarks

Puoi automatizzare la valutazione dei tuoi cluster rispetto ai benchmark utilizzando uno dei seguenti metodi:

  • Benchmark CIS GKE:

    • Tutte le versioni di GKE:
      • Esegui kube-bench per valutare i nodi worker in base al benchmark. Per maggiori dettagli, consulta il repository GitHub di kube-bench.
      • Utilizza uno strumento di terze parti come Twistlock Defender per valutare i nodi rispetto al benchmark.
    • Versione di GKE Enterprise: utilizza la dashboard Conformità per valutare la conformità di tutti i tuoi cluster al CIS GKE Benchmark. Per maggiori dettagli, consulta Informazioni sulla dashboard di conformità GKE.
  • Benchmark CIS per Kubernetes: esegui kube-bench per valutare i nodi worker rispetto al benchmark. Non puoi valutare il piano di controllo gestito in base a questi suggerimenti nel benchmark.

Passaggi successivi