Questo documento spiega cosa sono i benchmark CIS per Kubernetes e Google Kubernetes Engine (GKE), come verificare la conformità ai benchmark e cosa configura GKE in cui non puoi controllare o implementare direttamente un suggerimento.
Utilizzo dei CIS Benchmarks
Il Center for Internet Security (CIS) rilascia benchmark per fornire suggerimenti di sicurezza basati sulle best practice. Il Benchmark Kubernetes per CIS è un insieme di suggerimenti per configurare Kubernetes al fine di supportare una solida postura di sicurezza. Il benchmark è legato a una specifica release di Kubernetes. Il benchmark Kubernetes CIS è scritto per la distribuzione open source Kubernetes e progettato per essere il più possibile applicabile a tutte le distribuzioni.
Con un servizio gestito come GKE, non tutti gli elementi nel benchmark sono una tua responsabilità e ci sono suggerimenti che non puoi controllare o risolvere direttamente in autonomia. Se esegui l'esecuzione su GKE, utilizza il CIS GKE Benchmark, un benchmark secondario del benchmark CIS Kubernetes e pensato specificamente per essere applicato alla distribuzione di GKE. Questo dato viene dedotto dal benchmark CIS esistente, ma rimuove gli elementi che non sono configurabili o gestiti dall'utente e aggiunge ulteriori controlli specifici per Google Cloud.
Più serie di benchmark
Con GKE, puoi utilizzare i benchmark CIS per GKE, Kubernetes, Docker, Container-Optimized OS e Linux. Per scaricare benchmark aggiornati per questi prodotti, visita il sito web del CIS Benchmark.
Il runtime del container predefinito, containerd, non ha un benchmark CIS.
I nodi Windows Server utilizzati con GKE non ricevono un punteggio in base a un benchmark CIS appropriato perché i benchmark CIS di Windows Server non consentono in modo specifico l'utilizzo di Kubernetes e i benchmark CIS di Kubernetes al momento non supportano i nodi Windows.
Alcuni strumenti tentano di analizzare i nodi Kubernetes in base a più benchmark CIS (ad es. Linux, Docker e Kubernetes) e di combinare i risultati. Questo spesso si traduce in consigli confusi e potenzialmente contraddittori, perché questi benchmark non sono stati progettati per essere combinati e applicati in un ambiente Kubernetes.
Modello di responsabilità condivisa
In GKE, all'interno del Modello di responsabilità condivisa, Google gestisce i seguenti componenti di Kubernetes:
- Il piano di controllo, incluse le VM del piano di controllo, il server API, altri componenti sulle VM e etcd.
- La distribuzione Kubernetes.
- Il sistema operativo dei nodi.
In genere, le configurazioni correlate a questi elementi non sono disponibili per il controllo o la modifica in GKE.
Sei ancora responsabile dell'upgrade dei nodi che eseguono i tuoi carichi di lavoro e dei carichi di lavoro stessi. In genere puoi controllare e risolvere eventuali suggerimenti relativi a questi componenti.
Capacità di verificare e risolvere i problemi
Il CIS GKE Benchmark si basa sul benchmark CIS per Kubernetes esistente, ma rimuove gli elementi che non sono configurabili o gestiti dall'utente e aggiunge ulteriori controlli specifici per Google Cloud.
Le sezioni del benchmark CIS GKE sono:
- I componenti del piano di controllo, etcd e la configurazione del piano di controllo (sezioni 1, 2 e 3) provengono dal benchmark CIS per Kubernetes. In genere non è possibile controllare o risolvere questi problemi in GKE.
- Nodi worker (sezione 4) proviene dal benchmark CIS per Kubernetes. Alcuni di questi elementi possono essere controllati o corretti su GKE, ma le istruzioni potrebbero essere diverse.
- Anche Policies (section 5) è tratto dal CIS Kubernetes Benchmark. Sono generalmente applicabili direttamente a GKE, senza alcuna modifica alle istruzioni.
- I servizi gestiti (sezione 6) del benchmark CIS GKE sono nuovi contenuti specifici per GKE. Questa sezione contiene tutti i suggerimenti specifici per i controlli di Google Cloud. Questi problemi possono essere controllati e corretti su GKE.
Per gli elementi che non possono essere controllati o corretti in GKE, consulta la sezione su Valori predefiniti per comprendere le prestazioni di un cluster predefinito creato in GKE rispetto al benchmark CIS per Kubernetes.
Versioni
Tieni presente che i numeri di versione di benchmark diversi potrebbero non essere gli stessi.
Il presente documento si riferisce alle seguenti versioni:
Versione di Kubernetes | Versione benchmark CIS per Kubernetes | Versione CIS GKE Benchmark |
---|---|---|
1.15 | 1.5.0 | 1.0.0 |
Benchmark CIS Kubernetes
Accesso al benchmark
Il benchmark CIS per Kubernetes è disponibile sul sito web di CIS.
Livelli dei consigli
Nel benchmark CIS per Kubernetes:
Livello | Descrizione |
---|---|
Livello 1 | I consigli hanno lo scopo di: |
Livello 2 | Estende il profilo di livello 1. I consigli presentano una o più delle seguenti caratteristiche: |
Punteggio dei consigli
Nel benchmark CIS per Kubernetes:
Punteggio | Descrizione |
---|---|
Con punteggio | Il mancato rispetto di questi suggerimenti diminuirà il punteggio di benchmark finale. |
Senza punteggio | Il mancato rispetto di questi consigli non diminuirà il punteggio finale del benchmark. |
Valutazione su GKE
Utilizziamo i seguenti valori per specificare lo stato dei suggerimenti Kubernetes in GKE:
Stato | Descrizione |
---|---|
Pass | Conforme al consiglio di Benchmark. |
Fail | Non rispetta il consiglio di un benchmark. |
Controllo equivalente | Non rispetta i termini esatti del suggerimento per il benchmark, ma esistono altri meccanismi in GKE per fornire controlli di sicurezza equivalenti. |
Dipende dall'ambiente | GKE non configura gli elementi correlati a questo suggerimento. La configurazione dell'utente determina se il suo ambiente è conforme a un suggerimento di Benchmark. |
Stato su GKE
Quando crei un nuovo cluster GKE con la versione specificata, ecco le sue prestazioni rispetto al benchmark CIS per Kubernetes.
Stato del cluster GKE predefinito:
# | Consiglio | Punteggio/ Senza punteggio | Livello | Stato predefinito |
---|---|---|---|---|
1 | Componenti del piano di controllo | |||
1.1 | File di configurazione dei nodi del piano di controllo | |||
1.1.1 | Assicurati che le autorizzazioni del file delle specifiche dei pod del server API siano impostate su 644 o più restrittive |
Con punteggio | L1 | Pass |
1.1.2 | Assicurati che la proprietà del file della specifica del pod del server API sia impostata su root:root |
Con punteggio | L1 | Pass |
1.1.3 | Assicurati che le autorizzazioni del file delle specifiche dei pod del gestore del controller siano impostate su 644 o più restrittive |
Con punteggio | L1 | Pass |
1.1.4 | Assicurati che la proprietà del file della specifica del pod del gestore del controller sia impostata su root:root |
Con punteggio | L1 | Pass |
1.1.5 | Assicurati che le autorizzazioni del file delle specifiche dei pod dello scheduler siano impostate su 644 o più restrittive |
Con punteggio | L1 | Pass |
1.1.6 | Assicurati che la proprietà del file della specifica del pod scheduler sia impostata su root:root |
Con punteggio | L1 | Pass |
1.1.7 | Assicurati che le autorizzazioni del file delle specifiche dei pod etcd siano impostate su 644 o più restrittive |
Con punteggio | L1 | Pass |
1.1.8 | Assicurati che la proprietà del file della specifica del pod etcd sia impostata su root:root |
Con punteggio | L1 | Pass |
1.1.9 | Assicurati che le autorizzazioni del file dell'interfaccia di rete del container siano impostate su 644 o più restrittive |
Senza punteggio | L1 | Pass |
1.1.10 | Assicurati che la proprietà del file dell'interfaccia di rete container sia impostata su root:root |
Senza punteggio | L1 | Pass |
1.1.11 | Assicurati che le autorizzazioni della directory dei dati etcd siano impostate su 700 o più restrittive |
Con punteggio | L1 | Pass |
1.1.12 | Assicurati che la proprietà della directory dei dati etcd sia impostata su etcd:etcd |
Con punteggio | L1 | Pass |
1.1.13 | Assicurati che le autorizzazioni del file admin.conf siano impostate su 644 o più restrittive |
Con punteggio | L1 | Pass |
1.1.14 | Assicurati che la proprietà del file admin.conf sia impostata su root:root |
Con punteggio | L1 | Pass |
1.1.15 | Assicurati che le autorizzazioni del file scheduler.conf siano impostate su 644 o più restrittive |
Con punteggio | L1 | Pass |
1.1.16 | Assicurati che la proprietà del file scheduler.conf sia impostata su root:root |
Con punteggio | L1 | Pass |
1.1.17 | Assicurati che le autorizzazioni del file controller-manager.conf siano impostate su 644 o più restrittive |
Con punteggio | L1 | Pass |
1.1.18 | Assicurati che la proprietà del file controller-manager.conf sia impostata su root:root |
Con punteggio | L1 | Pass |
1.1.19 | Assicurati che la directory PKI di Kubernetes e la proprietà del file siano impostate su root:root |
Con punteggio | L1 | Pass |
1.1.20 | Assicurati che le autorizzazioni del file del certificato PKI di Kubernetes siano impostate su 644 o più restrittive |
Con punteggio | L1 | Pass |
1.1.21 | Assicurati che le autorizzazioni del file di chiave PKI di Kubernetes siano impostate su 600 |
Con punteggio | L1 | Pass |
1,20 | Server API | |||
1.2.1 | Assicurati che l'argomento --anonymous-auth sia impostato su false | Senza punteggio | L1 | Fail |
1.2.2 | Assicurati che l'argomento --basic-auth-file non sia impostato | Con punteggio | L1 | Pass |
1.2.3 | Assicurati che il parametro --token-auth-file non sia impostato | Con punteggio | L1 | Fail |
1.2.4 | Assicurati che l'argomento --kubelet-https sia impostato su true | Con punteggio | L1 | Pass |
1.2.5 | Assicurati che gli argomenti --kubelet-client-certificate e --kubelet-client-key siano impostati come appropriati | Con punteggio | L1 | Pass |
1.2.6 | Assicurati che l'argomento --kubelet-certificate-authority sia impostato come appropriato | Con punteggio | L1 | Pass |
1.2.7 | Assicurati che l'argomento --permission-mode non sia impostato su AlwaysAllow | Con punteggio | L1 | Pass |
1.2.8 | Assicurati che l'argomento --permission-mode includa il nodo | Con punteggio | L1 | Pass |
1.2.9 | Assicurati che l'argomento --permission-mode includa RBAC | Con punteggio | L1 | Pass |
1.2.10 | Assicurati che il plug-in per il controllo di ammissione EventRateLimit sia impostato | Senza punteggio | L1 | Fail |
1.2.11 | Assicurati che il plug-in per il controllo di ammissione AlwaysAdmit non sia impostato | Con punteggio | L1 | Pass |
1.2.12 | Assicurati che il plug-in per il controllo di ammissione AlwaysPullImages sia impostato | Senza punteggio | L1 | Fail |
1.2.13 | Assicurati che il plug-in per il controllo di ammissione SecurityContextDeny sia impostato se non viene utilizzato PodSecurityPolicy | Senza punteggio | L1 | Fail |
1.2.14 | Assicurati che il plug-in per il controllo di ammissione ServiceAccount sia impostato | Con punteggio | L1 | Pass |
1.2.15 | Assicurati che il plug-in per il controllo di ammissione NamespaceLifecycle sia impostato | Con punteggio | L1 | Pass |
1.2.16 | Assicurati che il plug-in PodSecurityPolicy per il controllo di ammissione sia impostato | Con punteggio | L1 | Fail |
1.2.17 | Assicurati che il plug-in NodeRestriction per il controllo di ammissione sia impostato | Con punteggio | L1 | Pass |
1.2.18 | Assicurati che l'argomento --insecure-bind-address non sia impostato | Con punteggio | L1 | Pass |
1.2.19 | Assicurati che l'argomento --insecure-port sia impostato su 0 | Con punteggio | L1 | Pass |
1.2.20 | Assicurati che l'argomento --secure-port non sia impostato su 0 | Con punteggio | L1 | Pass |
1.2.21 | Assicurati che l'argomento --profiling sia impostato su false | Con punteggio | L1 | Fail |
1.2.22 | Assicurati che l'argomento --audit-log-path sia impostato | Con punteggio | L1 | Controllo equivalente |
1.2.23 | Assicurati che l'argomento --audit-log-maxage sia impostato su 30 o come appropriato | Con punteggio | L1 | Controllo equivalente |
1.2.24 | Assicurati che l'argomento --audit-log-maxbackup sia impostato su 10 o come appropriato | Con punteggio | L1 | Controllo equivalente |
1.2.25 | Assicurati che l'argomento --audit-log-maxsize sia impostato su 100 o come appropriato | Con punteggio | L1 | Controllo equivalente |
1.2.26 | Assicurati che l'argomento --request-timeout sia impostato come appropriato | Con punteggio | L1 | Pass |
1.2.27 | Assicurati che l'argomento --service-account-lookup sia impostato su true | Con punteggio | L1 | Pass |
1.2.28 | Assicurati che l'argomento --service-account-key-file sia impostato come appropriato | Con punteggio | L1 | Pass |
1.2.29 | Assicurati che gli argomenti --etcd-certfile e --etcd-keyfile siano impostati correttamente | Con punteggio | L1 | Fail |
1.2.30 | Assicurati che gli argomenti --tls-cert-file e --tls-private-key-file siano impostati come appropriati | Con punteggio | L1 | Pass |
1.2.31 | Assicurati che l'argomento --client-ca-file sia impostato come appropriato | Con punteggio | L1 | Pass |
1.2.32 | Assicurati che l'argomento --etcd-cafile sia impostato come appropriato | Con punteggio | L1 | Fail |
1.2.33 | Assicurati che l'argomento --encryption-provider-config sia impostato come appropriato | Con punteggio | L1 | Pass |
1.2.34 | Assicurati che i provider di crittografia siano configurati in modo appropriato | Con punteggio | L1 | Fail |
1.2.35 | Assicurati che il server API utilizzi solo crittografie crittografiche efficaci | Senza punteggio | L1 | Pass |
1.3 | Gestore del controller | |||
1.3.1 | Assicurati che l'argomento --terminated-pod-gc-threshold sia impostato come appropriato | Con punteggio | L1 | Pass |
1.3.2 | Assicurati che l'argomento --profiling sia impostato su false | Con punteggio | L1 | Fail |
1.3.3 | Assicurati che l'argomento --use-service-account-credentials sia impostato su true | Con punteggio | L1 | Fail |
1.3.4 | Assicurati che l'argomento --service-account-private-key-file sia impostato come appropriato | Con punteggio | L1 | Pass |
1.3.5 | Assicurati che l'argomento --root-ca-file sia impostato come appropriato | Con punteggio | L1 | Pass |
1.3.6 | Assicurati che l'argomento RuotaKubeletServerCertificate sia impostato su true | Con punteggio | L2 | Controllo equivalente |
1.3.7 | Assicurati che l'argomento --bind-address sia impostato su 127.0.0.1 | Con punteggio | L1 | Pass |
1.4 | Programma di pianificazione | |||
1.4.1 | Assicurati che l'argomento --profiling sia impostato su false | Con punteggio | L1 | Fail |
1.4.2 | Assicurati che l'argomento --bind-address sia impostato su 127.0.0.1 | Con punteggio | L1 | Pass |
2 | ecc. | |||
2.1 | Assicurati che gli argomenti --cert-file e --key-file siano impostati come appropriati | Con punteggio | L1 | Fail |
2.2 | Assicurati che l'argomento --client-cert-auth sia impostato su true | Con punteggio | L1 | Fail |
2.3 | Assicurati che l'argomento --auto-tls non sia impostato su true | Con punteggio | L1 | Pass |
2.4 | Assicurati che gli argomenti --peer-cert-file e --peer-key-file siano impostati come appropriati | Con punteggio | L1 | Controllo equivalente |
2.5 | Assicurati che l'argomento --peer-client-cert-auth sia impostato su true | Con punteggio | L1 | Controllo equivalente |
2.6 | Assicurati che l'argomento --peer-auto-tls non sia impostato su true | Con punteggio | L1 | Controllo equivalente |
2.7 | Assicurati che venga utilizzata un'autorità di certificazione univoca per etcd | Senza punteggio | L2 | Pass |
3 | Configurazione del piano di controllo | |||
3.1 | Autenticazione e autorizzazione | |||
3.1.1 | L'autenticazione dei certificati client non deve essere utilizzata per gli utenti | Senza punteggio | L2 | Pass |
3.2 | Logging | |||
3.2.1 | Assicurati che venga creato un criterio di controllo minimo | Con punteggio | L1 | Pass |
3.2.2 | Assicurati che i criteri di controllo coprano i principali problemi di sicurezza | Senza punteggio | L2 | Pass |
4 | Nodi worker | |||
4.1 | File di configurazione dei nodi worker | |||
4.1.1 | Assicurati che le autorizzazioni per i file di servizio kubelet siano impostate su 644 o più restrittive |
Con punteggio | L1 | Pass |
4.1.2 | Assicurati che la proprietà del file di servizio kubelet sia impostata su root:root |
Con punteggio | L1 | Pass |
4.1.3 | Assicurati che le autorizzazioni dei file kubeconfig del proxy siano impostate su 644 o più restrittive |
Con punteggio | L1 | Pass |
4.1.4 | Assicurati che la proprietà del file kubeconfig del proxy sia impostata su root:root |
Con punteggio | L1 | Pass |
4.1.5 | Assicurati che le autorizzazioni del file kubelet.conf siano impostate su 644 o più restrittive |
Con punteggio | L1 | Pass |
4.1.6 | Assicurati che la proprietà del file kubelet.conf sia impostata su root:root |
Con punteggio | L1 | Pass |
4.1.7 | Assicurati che le autorizzazioni dei file delle autorità di certificazione siano impostate su 644 o più restrittive |
Con punteggio | L1 | Pass |
4.1.8 | Assicurati che la proprietà del file delle autorità di certificazione client sia impostata su root:root |
Con punteggio | L1 | Pass |
4.1.9 | Assicurati che le autorizzazioni del file di configurazione kubelet siano impostate su 644 o più restrittive |
Con punteggio | L1 | Pass |
4.1.10 | Assicurati che la proprietà del file di configurazione kubelet sia impostata su root:root |
Con punteggio | L1 | Pass |
4.2 | Cubelet | |||
4.2.1 | Assicurati che l'argomento --anonymous-auth sia impostato su false | Con punteggio | L1 | Pass |
4.2.2 | Assicurati che l'argomento --permission-mode non sia impostato su AlwaysAllow | Con punteggio | L1 | Pass |
4.2.3 | Assicurati che l'argomento --client-ca-file sia impostato come appropriato | Con punteggio | L1 | Pass |
4.2.4 | Assicurati che l'argomento --read-only-port sia impostato su 0 | Con punteggio | L1 | Fail |
4.2.5 | Assicurati che l'argomento --streaming-connection-idle-timeout non sia impostato su 0 | Con punteggio | L1 | Pass |
4.2.6 | Assicurati che l'argomento --protect-kernel-defaults sia impostato su true | Con punteggio | L1 | Fail |
4.2.7 | Assicurati che l'argomento --make-iptables-util-chains sia impostato su true | Con punteggio | L1 | Pass |
4.2.8 | Assicurati che l'argomento --hostname-override non sia impostato | Senza punteggio | L1 | Pass |
4.2.9 | Assicurati che l'argomento --event-qps sia impostato su 0 o su un livello che garantisca l'acquisizione appropriata degli eventi | Senza punteggio | L2 | Fail |
4.2.10 | Assicurati che gli argomenti --tls-cert-file e --tls-private-key-file siano impostati come appropriati | Con punteggio | L1 | Controllo equivalente |
4.2.11 | Assicurati che l'argomento --rotate-certificates non sia impostato su false | Con punteggio | L1 | Controllo equivalente |
4.2.12 | Assicurati che l'argomento RuotaKubeletServerCertificate sia impostato su true | Con punteggio | L1 | Controllo equivalente |
4.2.13 | Assicurati che il kubelet utilizzi solo cifrari crittografici efficaci | Senza punteggio | L1 | Fail |
5 | Norme | |||
5.1 | Account di servizio e RBAC | |||
5.1.1 | Assicurati che il ruolo cluster-admin venga utilizzato solo dove richiesto | Senza punteggio | L1 | Dipende dall'ambiente |
5.1.2 | Riduci a icona l'accesso ai secret | Senza punteggio | L1 | Dipende dall'ambiente |
5.1.3 | Riduci al minimo l'utilizzo di caratteri jolly in Role e ClusterRoles | Senza punteggio | L1 | Dipende dall'ambiente |
5.1.4 | Riduci a icona l'accesso per creare pod | Senza punteggio | L1 | Dipende dall'ambiente |
5.1.5 | Assicurati che gli account di servizio predefiniti non vengano utilizzati attivamente | Con punteggio | L1 | Dipende dall'ambiente |
5.1.6 | Assicurati che i token dell'account di servizio vengano montati solo dove necessario | Senza punteggio | L1 | Dipende dall'ambiente |
5.2 | Criteri di sicurezza dei pod | |||
5.2.1 | Riduci al minimo l'ammissione di container con privilegi | Senza punteggio | L1 | Dipende dall'ambiente |
5.2.2 | Riduci al minimo l'ammissione dei container che vogliono condividere lo spazio dei nomi dell'ID processo host | Con punteggio | L1 | Dipende dall'ambiente |
5.2.3 | Riduci al minimo l'ammissione dei container che vogliono condividere lo spazio dei nomi IPC dell'host | Con punteggio | L1 | Dipende dall'ambiente |
5.2.4 | Riduci al minimo l'ammissione dei container che vogliono condividere lo spazio dei nomi di rete host | Con punteggio | L1 | Dipende dall'ambiente |
5.2.5 | Riduci al minimo l'ammissione di container con allowPrivilegeEscalation | Con punteggio | L1 | Dipende dall'ambiente |
5.2.6 | Riduci al minimo l'ammissione dei container root | Senza punteggio | L2 | Dipende dall'ambiente |
5.2.7 | Riduci al minimo l'ammissione di container con la funzionalità NET_RAW | Senza punteggio | L1 | Dipende dall'ambiente |
5.2.8 | Riduci al minimo l'ammissione di container con funzionalità aggiuntive | Senza punteggio | L1 | Dipende dall'ambiente |
5.2.9 | Riduci al minimo l'ammissione di container con funzionalità assegnate | Senza punteggio | L2 | Dipende dall'ambiente |
5.3 | Criteri di rete e CNI | |||
5.3.1 | Assicurati che la CNI in uso supporti i criteri di rete | Senza punteggio | L1 | Pass |
5.3.2 | Assicurati che per tutti gli spazi dei nomi siano stati definiti criteri di rete | Con punteggio | L2 | Dipende dall'ambiente |
5.4 | Gestione dei secret | |||
5.4.1 | Preferisco l'utilizzo dei secret come file anziché dei secret come variabili di ambiente | Senza punteggio | L1 | Dipende dall'ambiente |
5.4.2 | Considera l'archiviazione di secret esterna | Senza punteggio | L2 | Dipende dall'ambiente |
5,50 | Accesso estensibile | |||
5.5.1 | Configurare la provenienza delle immagini utilizzando il controller di ammissione ImagePolicyWebhook | Senza punteggio | L2 | Dipende dall'ambiente |
5.6 | Norme generali | |||
5.6.1 | Crea limiti amministrativi tra le risorse utilizzando gli spazi dei nomi | Senza punteggio | L1 | Dipende dall'ambiente |
5.6.2 | Assicurati che il profilo seccomp sia impostato su docker/default nelle definizioni dei pod | Senza punteggio | L2 | Dipende dall'ambiente |
5.6.3 | Applica il contesto di sicurezza a pod e container | Senza punteggio | L2 | Dipende dall'ambiente |
5.6.4 | Lo spazio dei nomi predefinito non deve essere utilizzato | Con punteggio | L2 | Dipende dall'ambiente |
Valori predefiniti su GKE
Se l'impostazione predefinita per un nuovo cluster GKE non trasmette un suggerimento del benchmark CIS Kubernetes, di seguito sono riportati i valori predefiniti utilizzati in GKE, con una spiegazione. Alcuni di questi consigli possono essere corretti seguendo le procedure di correzione illustrate nel benchmark GKE CIS. Gli elementi che possono essere controllati automaticamente sono contrassegnati come score nel benchmark GKE CIS.
Valori predefiniti per i suggerimenti che non funzionano o dipendono dall'ambiente in un cluster GKE predefinito:
# | Consiglio | Punteggio/ senza punteggio in base al benchmark CIS Kubernetes |
Livello | Stato predefinito | Valore predefinito | Motivazione | Punteggio/ senza punteggio in base al benchmark GKE CIS |
---|---|---|---|---|---|---|---|
1 | Componenti del piano di controllo | ||||||
1,20 | Server API | ||||||
1.2.1 | Assicurati che l'argomento --anonymous-auth sia impostato su false | Senza punteggio | L1 | Fail | true |
Alcuni componenti di monitoraggio di GKE utilizzano l'autenticazione anonima per ottenere le metriche. Sebbene GKE consenta l'autenticazione anonima per il kubelet, l'esposizione è identica alla porta di sola lettura poiché GKE disabilita i gestori di debug aggiuntivi. | Senza punteggio |
1.2.3 | Assicurati che il parametro --token-auth-file non sia impostato | Con punteggio | L1 | Fail | Imposta | Il bootstrap di alcuni componenti del piano di controllo viene eseguito mediante token statici, che vengono poi utilizzati per l'autenticazione nel server API. | Senza punteggio |
1.2.10 | Assicurati che il plug-in per il controllo di ammissione EventRateLimit sia impostato | Senza punteggio | L1 | Fail | Non impostata | GKE non supporta il controller di ammissione con Limite di frequenza eventi poiché è una funzionalità di Kubernetes alpha. | Senza punteggio |
1.2.12 | Assicurati che il plug-in per il controllo di ammissione AlwaysPullImages sia impostato | Senza punteggio | L1 | Fail | Non impostata | Il controller di ammissione AlwaysPullImages fornisce una certa protezione per le immagini del registro private nei cluster multitenant non cooperativi, ma rende i registri di container un singolo punto di errore per la creazione di nuovi pod nell'intero cluster. GKE non abilita il controller di ammissione AlwaysPullImages, il che lascia agli amministratori del cluster il compito di implementare il criterio di ammissione al fine di raggiungere autonomamente questo compromesso. | Senza punteggio |
1.2.13 | Assicurati che il plug-in per il controllo di ammissione SecurityContextDeny sia impostato se non viene utilizzato PodSecurityPolicy | Senza punteggio | L1 | Fail | Non impostata | GKE non abilita il controller di ammissione del contesto di sicurezza per impostazione predefinita. L'utilizzo di un criterio di sicurezza dei pod consente un maggiore controllo ed è preferibile. | Senza punteggio |
1.2.16 | Assicurati che il plug-in PodSecurityPolicy per il controllo di ammissione sia impostato | Con punteggio | L1 | Fail | Non impostata | GKE non abilita il controller di ammissione dei criteri di sicurezza dei pod per impostazione predefinita, poiché ciò richiede l'impostazione di un criterio. I clienti GKE possono abilitare PodSecurityPolicy. | Senza punteggio, vedi anche 6.10.3 |
1.2.21 | Assicurati che l'argomento --profiling sia impostato su false | Con punteggio | L1 | Fail | Non impostata | GKE utilizza la profilazione per il debug. | Senza punteggio |
1.2.22 | Assicurati che l'argomento --audit-log-path sia impostato | Con punteggio | L1 | Controllo equivalente | Non impostata | GKE acquisisce gli audit log, ma non utilizza questi flag per i controlli. Consulta Criterio di controllo di GKE per maggiori dettagli. | Senza punteggio |
1.2.23 | Assicurati che l'argomento --audit-log-maxage sia impostato su 30 o come appropriato | Con punteggio | L1 | Controllo equivalente | Non impostata | GKE acquisisce gli audit log, ma non utilizza questi flag per i controlli. Consulta Criterio di controllo di GKE per maggiori dettagli. | Senza punteggio |
1.2.24 | Assicurati che l'argomento --audit-log-maxbackup sia impostato su 10 o come appropriato | Con punteggio | L1 | Controllo equivalente | Non impostata | GKE acquisisce gli audit log, ma non utilizza questi flag per i controlli. Consulta Criterio di controllo di GKE per maggiori dettagli. | Senza punteggio |
1.2.25 | Assicurati che l'argomento --audit-log-maxsize sia impostato su 100 o come appropriato | Con punteggio | L1 | Controllo equivalente | Non impostata | GKE acquisisce gli audit log, ma non utilizza questi flag per i controlli. Consulta Criterio di controllo di GKE per maggiori dettagli. | Senza punteggio |
1.2.29 | Assicurati che gli argomenti --etcd-certfile e --etcd-keyfile siano impostati correttamente | Con punteggio | L1 | Fail | Non impostata | GKE non utilizza attualmente mTLS per proteggere le connessioni tra il server API a etcd. Tieni presente che etcd rimane in ascolto su localhost. Per ulteriori dettagli, consulta Attendibilità del cluster. | Senza punteggio |
1.2.32 | Assicurati che l'argomento --etcd-cafile sia impostato come appropriato | Con punteggio | L1 | Fail | Non impostata | GKE non utilizza attualmente mTLS per proteggere le connessioni tra il server API a etcd. Tieni presente che etcd rimane in ascolto su localhost. Per ulteriori dettagli, consulta Attendibilità del cluster. | Senza punteggio |
1.2.34 | Assicurati che i provider di crittografia siano configurati in modo appropriato | Con punteggio | L1 | Fail | identity |
GKE cripta i contenuti at-rest dei clienti per impostazione predefinita. Per criptare ulteriormente i secret, utilizza la crittografia dei secret a livello di applicazione. | Senza punteggio, vedi anche 6.3.1 |
1.3 | Gestore del controller | ||||||
1.3.2 | Assicurati che l'argomento --profiling sia impostato su false | Con punteggio | L1 | Fail | true |
GKE utilizza la profilazione per il debug. | Senza punteggio |
1.3.6 | Assicurati che l'argomento RuotaKubeletServerCertificate sia impostato su true | Con punteggio | L2 | Controllo equivalente | false |
GKE ruota i certificati kubelet, ma non utilizza questo flag. | Senza punteggio |
1.4 | Programma di pianificazione | ||||||
1.4.1 | Assicurati che l'argomento --profiling sia impostato su false | Con punteggio | L1 | Fail | true |
GKE utilizza la profilazione per il debug. | Senza punteggio |
2 | ecc. | ||||||
2.1 | Assicurati che gli argomenti --cert-file e --key-file siano impostati come appropriati | Con punteggio | L1 | Fail | Non impostata | GKE non utilizza attualmente mTLS per proteggere le connessioni tra il server API a etcd. Tieni presente che etcd rimane in ascolto su localhost. Per ulteriori dettagli, consulta Attendibilità del cluster. | Senza punteggio |
2.2 | Assicurati che l'argomento --client-cert-auth sia impostato su true | Con punteggio | L1 | Fail | Non impostata | GKE non utilizza attualmente mTLS per proteggere le connessioni tra il server API a etcd. Tieni presente che etcd rimane in ascolto su localhost. Per ulteriori dettagli, consulta Attendibilità del cluster. | Senza punteggio |
2.4 | Assicurati che gli argomenti --peer-cert-file e --peer-key-file siano impostati come appropriati | Con punteggio | L1 | Controllo equivalente | Non impostata | GKE utilizza mTLS per il traffico peer tra le istanze di etcd. Questi flag vengono utilizzati per i cluster a livello di regione, ma non per quelli di zona, poiché esiste una sola istanza etcd in un cluster di zona. Per ulteriori dettagli, consulta Attendibilità del cluster. | Senza punteggio |
2.5 | Assicurati che l'argomento --peer-client-cert-auth sia impostato su true | Con punteggio | L1 | Controllo equivalente | Non impostata | GKE utilizza mTLS per il traffico peer tra le istanze di etcd. Questi flag vengono utilizzati per i cluster a livello di regione, ma non per quelli di zona, poiché esiste una sola istanza etcd in un cluster di zona. Per ulteriori dettagli, consulta Attendibilità del cluster. | Senza punteggio |
2.6 | Assicurati che l'argomento --peer-auto-tls non sia impostato su true | Con punteggio | L1 | Controllo equivalente | Non impostata | GKE utilizza mTLS per il traffico peer tra le istanze di etcd. Questi flag vengono utilizzati per i cluster a livello di regione, ma non per quelli di zona, poiché esiste una sola istanza etcd in un cluster di zona. Per ulteriori dettagli, consulta Attendibilità del cluster. | Senza punteggio |
4 | Nodi worker | ||||||
4.2 | Cubelet | ||||||
4.2.4 | Assicurati che l'argomento --read-only-port sia impostato su 0 | Con punteggio | L1 | Fail | 10255 |
Alcuni componenti di monitoraggio di GKE utilizzano la porta kubelet di sola lettura per ottenere le metriche. | Con punteggio |
4.2.6 | Assicurati che l'argomento --protect-kernel-defaults sia impostato su true | Con punteggio | L1 | Fail | false |
GKE non protegge i valori predefiniti del kernel da Kubernetes, poiché i carichi di lavoro dei clienti potrebbero volerli modificare. | Con punteggio |
4.2.9 | Assicurati che l'argomento --event-qps sia impostato su 0 o su un livello che garantisca l'acquisizione appropriata degli eventi | Senza punteggio | L2 | Fail | 5 |
Gli eventi sono oggetti Kubernetes archiviati in etcd. Per evitare sovraccarichi ecc. vengono conservati solo per un'ora e non costituiscono un meccanismo di controllo della sicurezza appropriato. Se consenti eventi illimitati come suggerito in questo controllo, il cluster espone il cluster a rischi DoS non necessari e contraddice il suggerimento di utilizzare EventRateLimits per l'ammissione. Gli eventi pertinenti alla sicurezza che richiedono un'archiviazione permanente devono essere inviati ai log. | Con punteggio |
4.2.10 | Assicurati che gli argomenti --tls-cert-file e --tls-private-key-file siano impostati come appropriati | Con punteggio | L1 | Controllo equivalente | Non impostato | GKE utilizza mTLS per il traffico da kubelet al server API. GKE utilizza TLS per il server API per il traffico kubelet, che è autenticato per i cluster GKE 1.12 e versioni successive. GKE non utilizza questi flag, ma li specifichi nel file di configurazione kubelet. Per ulteriori dettagli, consulta Attendibilità del cluster. | Con punteggio |
4.2.11 | Assicurati che l'argomento --rotate-certificates non sia impostato su false | Con punteggio | L1 | Controllo equivalente | Non impostata | GKE ruota i certificati server per i cluster GKE 1.12 e versioni successive. GKE non utilizza questi flag, ma li specifichi nel file di configurazione kubelet. GKE non ruota i certificati client, a meno che non siano abilitati i nodi GKE schermati. In questo caso, GKE non utilizza questi flag, ma esegue un processo separato per la rotazione dei certificati. Per ulteriori dettagli, consulta Attendibilità del cluster. | Con punteggio |
4.2.12 | Assicurati che l'argomento RuotaKubeletServerCertificate sia impostato su true | Con punteggio | L1 | Controllo equivalente | Non impostata | GKE ruota i certificati server per i cluster GKE 1.12 e versioni successive. GKE non utilizza questi flag, ma li specifichi nel file di configurazione kubelet. Per ulteriori dettagli, consulta Attendibilità del cluster. | Con punteggio |
4.2.13 | Assicurati che kubelet utilizzi solo crittografie crittografiche efficaci | Senza punteggio | Fail | Non impostata | GKE utilizza il set di crittografia consentito predefinito golang, che è considerato sicuro dagli esperti di crittografia ed è anche il valore predefinito per Kubernetes. | Senza punteggio | |
5 | Norme | ||||||
5.1 | Account di servizio e RBAC | ||||||
5.1.1 | Assicurati che il ruolo cluster-admin venga utilizzato solo dove richiesto | Senza punteggio | L1 | Dipende dall'ambiente | n/d | Senza punteggio | |
5.1.2 | Riduci a icona l'accesso ai secret | Senza punteggio | L1 | Dipende dall'ambiente | n/d | Senza punteggio | |
5.1.3 | Riduci al minimo l'utilizzo di caratteri jolly in Role e ClusterRoles | Senza punteggio | L1 | Dipende dall'ambiente | n/d | Senza punteggio | |
5.1.4 | Riduci a icona l'accesso per creare pod | Senza punteggio | L1 | Dipende dall'ambiente | n/d | Senza punteggio | |
5.1.5 | Assicurati che gli account di servizio predefiniti non vengano utilizzati attivamente | Con punteggio | L1 | Dipende dall'ambiente | n/d | Con punteggio | |
5.1.6 | Assicurati che i token dell'account di servizio vengano montati solo dove necessario | Senza punteggio | L1 | Dipende dall'ambiente | n/d | Senza punteggio | |
5.2 | Criteri di sicurezza dei pod | ||||||
5.2.1 | Riduci al minimo l'ammissione di container con privilegi | Senza punteggio | L1 | Dipende dall'ambiente | n/d | Nessun criterio di sicurezza dei pod è impostato per impostazione predefinita. | Con punteggio |
5.2.2 | Riduci al minimo l'ammissione dei container che vogliono condividere lo spazio dei nomi dell'ID processo host | Con punteggio | L1 | Dipende dall'ambiente | n/d | Nessun criterio di sicurezza dei pod è impostato per impostazione predefinita. | Con punteggio |
5.2.3 | Riduci al minimo l'ammissione dei container che vogliono condividere lo spazio dei nomi IPC dell'host | Con punteggio | L1 | Dipende dall'ambiente | n/d | Nessun criterio di sicurezza dei pod è impostato per impostazione predefinita. | Con punteggio |
5.2.4 | Riduci al minimo l'ammissione dei container che vogliono condividere lo spazio dei nomi di rete host | Con punteggio | L1 | Dipende dall'ambiente | n/d | Nessun criterio di sicurezza dei pod è impostato per impostazione predefinita. | Con punteggio |
5.2.5 | Riduci al minimo l'ammissione di container con allowPrivilegeEscalation | Con punteggio | L1 | Dipende dall'ambiente | n/d | Nessun criterio di sicurezza dei pod è impostato per impostazione predefinita. | Con punteggio |
5.2.6 | Riduci al minimo l'ammissione dei container root | Senza punteggio | L2 | Dipende dall'ambiente | n/d | Nessun criterio di sicurezza dei pod è impostato per impostazione predefinita. | Con punteggio |
5.2.7 | Riduci al minimo l'ammissione di container con la funzionalità NET_RAW | Senza punteggio | L1 | Dipende dall'ambiente | n/d | Nessun criterio di sicurezza dei pod è impostato per impostazione predefinita. | Con punteggio |
5.2.8 | Riduci al minimo l'ammissione di container con funzionalità aggiuntive | Senza punteggio | L1 | Dipende dall'ambiente | n/d | Nessun criterio di sicurezza dei pod è impostato per impostazione predefinita. | Con punteggio |
5.2.9 | Riduci al minimo l'ammissione di container con funzionalità assegnate | Senza punteggio | L2 | Dipende dall'ambiente | n/d | Nessun criterio di sicurezza dei pod è impostato per impostazione predefinita. | Con punteggio |
5.3 | Criteri di rete e CNI | ||||||
5.3.2 | Assicurati che per tutti gli spazi dei nomi siano stati definiti criteri di rete | Con punteggio | L2 | Dipende dall'ambiente | n/d | Con punteggio | |
5.4 | Gestione dei secret | ||||||
5.4.1 | Preferisco l'utilizzo dei secret come file anziché dei secret come variabili di ambiente | Senza punteggio | L1 | Dipende dall'ambiente | n/d | Senza punteggio | |
5.4.2 | Considera l'archiviazione di secret esterna | Senza punteggio | L2 | Dipende dall'ambiente | n/d | Senza punteggio | |
5,50 | Accesso estensibile | ||||||
5.5.1 | Configurare la provenienza delle immagini utilizzando il controller di ammissione ImagePolicyWebhook | Senza punteggio | L2 | Dipende dall'ambiente | Non abilitato | GKE non abilita il controller di ammissione webhook dei criteri delle immagini per impostazione predefinita. La provenienza delle immagini mediante Autorizzazione binaria non è configurata per impostazione predefinita, poiché questo richiede l'impostazione di un criterio. | Senza punteggio, vedi anche 6.10.5 |
5.6 | Norme generali | ||||||
5.6.1 | Crea limiti amministrativi tra le risorse utilizzando gli spazi dei nomi | Senza punteggio | L1 | Dipende dall'ambiente | n/d | Senza punteggio | |
5.6.2 | Assicurati che il profilo seccomp sia impostato su docker/default nelle definizioni dei pod | Senza punteggio | L2 | Dipende dall'ambiente | n/d | Nessun profilo seccomp è impostato per impostazione predefinita. | Senza punteggio |
5.6.3 | Applica il contesto di sicurezza a pod e container | Senza punteggio | L2 | Dipende dall'ambiente | n/d | Nessun contesto di sicurezza è impostato per impostazione predefinita. | Senza punteggio |
5.6.4 | Lo spazio dei nomi predefinito non deve essere utilizzato | Con punteggio | L2 | Dipende dall'ambiente | n/d | Con punteggio |
Benchmark CIS GKE
Accesso al benchmark
Il CIS GKE Benchmark è disponibile sul sito web del CIS:
- Consulta l'elenco completo dei benchmark CIS.
- Sotto l'intestazione Kubernetes, fai clic su Espandi per visualizzare i contenuti correlati.
- Il benchmark GKE CIS è elencato per il download.
Livelli di consigli
Nel benchmark GKE CIS,
Livello | Descrizione |
---|---|
Livello 1 | I consigli sono pensati per essere ampiamente applicabili. Dovrebbero essere applicati a quasi tutti gli ambienti. |
Livello 2 | I suggerimenti comportano un ambiente di sicurezza più rigoroso, ma non sono necessariamente applicabili a tutti i casi. Potrebbero avere un impatto sulle prestazioni o non essere applicabili insieme ad altri suggerimenti. Dovrebbero essere valutati per il tuo ambiente prima di essere applicati. In alcuni casi, ad esempio i carichi di lavoro multi-tenant, questi suggerimenti potrebbero essere più pertinenti. |
Punteggio dei consigli
Nel benchmark GKE CIS,
Punteggio | Descrizione |
---|---|
Con punteggio |
I suggerimenti sono facilmente testati utilizzando un metodo automatizzato e hanno un valore valutabile in modo definitivo. Questi consigli includono solo prodotti o funzionalità in disponibilità generale. |
Senza punteggio |
I suggerimenti non possono essere facilmente valutati utilizzando l'automazione o richiedono una valutazione per determinare l'implementazione esatta appropriata per il tuo carico di lavoro. Questi consigli possono utilizzare funzionalità o prodotti beta. Ad esempio, il Criterio di sicurezza dei pod richiede l'utilizzo di un criterio specifico per il carico di lavoro ed è una funzionalità beta, quindi ha un punteggio senza punteggio. |
Valutazione su GKE
Per i suggerimenti specifici per GKE (sezione 6), poiché sono tutti configurabili in modo da poter essere configurati in modo da essere trasmessi nel tuo ambiente, utilizziamo i seguenti valori per specificare i valori predefiniti:
Stato | Descrizione |
---|---|
Predefinito | Un nuovo cluster è conforme a un suggerimento di Benchmark per impostazione predefinita. |
Non predefinito | Per impostazione predefinita, un nuovo cluster non è conforme a un suggerimento di benchmark. |
Dipende dall'ambiente | GKE non configura gli elementi correlati a questo suggerimento. La configurazione dell'utente determina se il suo ambiente è conforme a un suggerimento di Benchmark. |
Valori predefiniti su GKE
Quando crei un nuovo cluster GKE con la versione specificata, ecco le sue prestazioni rispetto al benchmark CIS per Kubernetes.
Stato del cluster GKE predefinito:
# | Consiglio | Punteggio/ Senza punteggio | Livello | Stato predefinito |
---|---|---|---|---|
6 | Servizi gestiti | |||
6.1 | Registro immagini e scansione delle immagini | |||
6.1.1 | Assicurati che l'analisi delle vulnerabilità delle immagini utilizzando GCR Container Analysis o un provider di terze parti | Con punteggio | L1 | Non predefinito |
6.1.2 | Ridurre al minimo l'accesso degli utenti a GCR | Con punteggio | L1 | Dipende dall'ambiente |
6.1.3 | Riduci al minimo l'accesso al cluster in sola lettura per GCR | Con punteggio | L1 | Non predefinito |
6.1.4 | Riduci al minimo i registri di container solo a quelli approvati | Senza punteggio | L2 | Non predefinito |
6.2 | Identity and Access Management (IAM) | |||
6.2.1 | Preferisco non eseguire cluster GKE utilizzando l'account di servizio predefinito di Compute Engine | Con punteggio | L2 | Non predefinito |
6.2.2 | Preferisco l'utilizzo di account di servizio Google Cloud e Workload Identity dedicati | Senza punteggio | L1 | Non predefinito |
6.3 | Cloud Key Management Service (Cloud KMS) | |||
6.3.1 | Valuta la possibilità di criptare i secret di Kubernetes utilizzando chiavi gestite in Cloud KMS | Con punteggio | L1 | Non predefinito |
6,40 | Metadati del nodo | |||
6.4.1 | Assicurati che le API legacy per i metadati delle istanze Compute Engine siano disabilitate | Con punteggio | L1 | Predefinito |
6.4.2 | Assicurati che il server metadati GKE sia abilitato | Senza punteggio | L2 | Non predefinito |
6.5 | Configurazione e manutenzione dei nodi | |||
6.5.1 | Assicurati che Container-Optimized OS (COS) venga utilizzato per le immagini dei nodi GKE | Con punteggio | L2 | Predefinito |
6.5.2 | Assicurati che la riparazione automatica dei nodi sia abilitata per i nodi GKE | Con punteggio | L1 | Predefinito |
6.5.3 | Assicurati che l'upgrade automatico dei nodi sia abilitato per i nodi GKE | Con punteggio | L1 | Predefinito |
6.5.4 | Valuta la possibilità di automatizzare la gestione delle versioni di GKE utilizzando i canali di rilascio | Senza punteggio | L1 | Non predefinito |
6.5.5 | Assicurati che i nodi GKE schermati siano abilitati | Senza punteggio | L1 | Non predefinito |
6.5.6 | Assicurati che il monitoraggio dell'integrità per i nodi GKE schermati sia abilitato | Senza punteggio | L1 | Non predefinito |
6.5.7 | Assicurati che l'avvio protetto per i nodi GKE schermati sia abilitato | Senza punteggio | L2 | Non predefinito |
6.6 | Networking dei cluster | |||
6.6.1 | Valuta l'abilitazione dei log di flusso VPC e della visibilità tra nodi | Senza punteggio | L2 | Non predefinito |
6.6.2 | Preferenza ai cluster nativi di VPC | Con punteggio | L1 | Non predefinito |
6.6.3 | Assicurati che le reti autorizzate master siano abilitate | Con punteggio | L1 | Non predefinito |
6.6.4 | Assicurati che i cluster vengano creati con endpoint privato abilitato e accesso pubblico disabilitato | Con punteggio | L2 | Non predefinito |
6.6.5 | Assicurati che i cluster vengano creati con nodi privati | Con punteggio | L1 | Non predefinito |
6.6.6 | Valuta la possibilità di applicare il firewall ai nodi worker GKE | Senza punteggio | L1 | Non predefinito |
6.6.7 | Assicurati che il criterio di rete sia abilitato e impostato in modo appropriato | Senza punteggio | L1 | Non predefinito |
6.6.8 | Valuta l'utilizzo dei certificati SSL gestiti da Google | Senza punteggio | L2 | Dipende dall'ambiente |
6.7 | Logging | |||
6.7.1 | Assicurati che Stackdriver Kubernetes Logging e Monitoring siano abilitati | Con punteggio | L1 | Predefinito |
6.7.2 | Valuta la possibilità di abilitare il logging controllato di Linux | Senza punteggio | L2 | Non predefinito |
6.8 | Autenticazione e autorizzazione | |||
6.8.1 | Assicurati che l'autenticazione di base mediante password statiche sia disabilitata | Con punteggio | L1 | Predefinito |
6.8.2 | Assicurati che l'autenticazione mediante certificati client sia disabilitata | Con punteggio | L1 | Predefinito |
6.8.3 | Valuta la possibilità di gestire gli utenti Kubernetes RBAC con Google Gruppi per RBAC | Senza punteggio | L2 | Non predefinito |
6.8.4 | Assicurati che l'autorizzazione legacy (ABAC) sia disabilitata | Con punteggio | L1 | Predefinito |
6,90 | Spazio di archiviazione | |||
6.9.1 | Valuta la possibilità di abilitare le chiavi di crittografia gestite dal cliente (CMEK) per i dischi permanenti (PD) GKE | Senza punteggio | L1 | Non predefinito |
6,10 | Altre configurazioni del cluster | |||
6.10.1 | Assicurati che la UI web di Kubernetes sia disabilitata | Con punteggio | L1 | Predefinito |
6.10.2 | Assicurati che i cluster alpha non vengano utilizzati per i carichi di lavoro di produzione | Con punteggio | L1 | Predefinito |
6.10.3 | Assicurati che il criterio di sicurezza dei pod sia abilitato e impostato come appropriato | Senza punteggio | L1 | Non predefinito |
6.10.4 | Considera GKE Sandbox per l'esecuzione di carichi di lavoro non attendibili | Senza punteggio | L2 | Non predefinito |
6.10.5 | Preferisco abilitare Autorizzazione binaria e configurare il criterio in base alle esigenze | Senza punteggio | L2 | Non predefinito |
6.10.6 | Preferisco abilitare Cloud Security Command Center (Cloud SCC) | Senza punteggio | L1 | Non predefinito |
Come controllare i Benchmark
Le istruzioni specifiche per il controllo di ogni suggerimento sono disponibili nell'ambito del CIS Benchmark pertinente. Tuttavia, potresti voler automatizzare alcuni di questi controlli per semplificare la verifica di questi controlli nel tuo ambiente. Gli strumenti elencati di seguito possono aiutarti.
Tieni presente che ciò non ti consente di controllare i suggerimenti del benchmark Kubernetes CIS che non sono controllabili su GKE. Per i componenti che non puoi controllare direttamente, consulta Valori predefiniti per capire come il tuo ambiente è già configurato da GKE.
Controllo automatico del benchmark CIS per Kubernetes
Puoi utilizzare uno strumento open source kube-bench
per testare la configurazione del cluster rispetto al benchmark CIS Kubernetes. Tieni presente che non potrai eseguire i test kube-bench master
sui carichi di lavoro GKE, poiché non hai accesso diretto al nodo del piano di controllo e potrai eseguire solo i test kube-bench node
.
Assicurati di specificare la versione appropriata, ad esempio:
kube-bench node --benchmark cis-1.5
Controllo automatico del benchmark CIS GKE
Security Health Analytics identifica gli errori di configurazione più comuni nel tuo ambiente, come firewall aperti o bucket pubblici. Sono inclusi i suggerimenti per la sicurezza di GKE. Se abiliti Security Health Analytics, riceverai una notifica di eventuali configurazioni errate del cluster in Cloud Security Command Center.
Molti suggerimenti con punteggio di livello 1 sono coperti dai risultati corrispondenti in Security Health Analytics.
# | Consiglio | Punteggio/ Senza punteggio | Livello | Risultati di Security Health Analytics |
---|---|---|---|---|
6.1 | Registro immagini e scansione delle immagini | |||
6.1.1 | Assicurati che l'analisi delle vulnerabilità delle immagini utilizzando GCR Container Analysis o un provider di terze parti | Con punteggio | L1 | n/d |
6.1.2 | Ridurre al minimo l'accesso degli utenti a GCR | Con punteggio | L1 | n/d |
6.1.3 | Riduci al minimo l'accesso al cluster in sola lettura per GCR | Con punteggio | L1 | n/d |
6.1.4 | Riduci al minimo i registri di container solo a quelli approvati | Senza punteggio | L2 | n/d |
6.2 | Identity and Access Management (IAM) | |||
6.2.1 | Preferisco non eseguire cluster GKE utilizzando l'account di servizio predefinito di Compute Engine | Con punteggio | L2 | OVER_PRIVILEGED_ACCOUNT e OVER_PRIVILEGED_SCOPES |
6.2.2 | Preferisco l'utilizzo di account di servizio Google Cloud e Workload Identity dedicati | Senza punteggio | L1 | WORKLOAD_IDENTITY_DISABLED |
6.3 | Cloud Key Management Service (Cloud KMS) | |||
6.3.1 | Valuta la possibilità di criptare i secret di Kubernetes utilizzando chiavi gestite in Cloud KMS | Con punteggio | L1 | n/d |
6,40 | Metadati del nodo | |||
6.4.1 | Assicurati che le API legacy per i metadati delle istanze Compute Engine siano disabilitate | Con punteggio | L1 | LEGACY_METADATA_ENABLED |
6.4.2 | Assicurati che il server metadati GKE sia abilitato | Senza punteggio | L2 | n/d |
6.5 | Configurazione e manutenzione dei nodi | |||
6.5.1 | Assicurati che Container-Optimized OS (COS) venga utilizzato per le immagini dei nodi GKE | Con punteggio | L2 | COS_NOT_USED |
6.5.2 | Assicurati che la riparazione automatica dei nodi sia abilitata per i nodi GKE | Con punteggio | L1 | AUTO_REPAIR_DISABLED |
6.5.3 | Assicurati che l'upgrade automatico dei nodi sia abilitato per i nodi GKE | Con punteggio | L1 | AUTO_UPGRADE_DISABLED |
6.5.4 | Valuta la possibilità di automatizzare la gestione delle versioni di GKE utilizzando i canali di rilascio | Senza punteggio | L1 | n/d |
6.5.5 | Assicurati che i nodi GKE schermati siano abilitati | Senza punteggio | L1 | n/d |
6.5.6 | Assicurati che il monitoraggio dell'integrità per i nodi GKE schermati sia abilitato | Senza punteggio | L1 | n/d |
6.5.7 | Assicurati che l'avvio protetto per i nodi GKE schermati sia abilitato | Senza punteggio | L2 | n/d |
6.6 | Networking dei cluster | |||
6.6.1 | Valuta l'abilitazione dei log di flusso VPC e della visibilità tra nodi | Senza punteggio | L2 | FLOW_LOGS_DISABLED |
6.6.2 | Preferenza ai cluster nativi di VPC | Con punteggio | L1 | IP_ALIAS_DISABLED |
6.6.3 | Assicurati che le reti autorizzate master siano abilitate | Con punteggio | L1 | MASTER_AUTHORIZED_NETWORKS_DISABLED |
6.6.4 | Assicurati che i cluster vengano creati con endpoint privato abilitato e accesso pubblico disabilitato | Con punteggio | L2 | n/d |
6.6.5 | Assicurati che i cluster vengano creati con nodi privati | Con punteggio | L1 | PRIVATE_CLUSTER_DISABLED |
6.6.6 | Valuta la possibilità di applicare il firewall ai nodi worker GKE | Senza punteggio | L1 | n/d |
6.6.7 | Assicurati che il criterio di rete sia abilitato e impostato in modo appropriato | Senza punteggio | L1 | NETWORK_POLICY_DISABLED |
6.6.8 | Valuta l'utilizzo dei certificati SSL gestiti da Google | Senza punteggio | L2 | n/d |
6.7 | Logging | |||
6.7.1 | Assicurati che Stackdriver Kubernetes Logging e Monitoring siano abilitati | Con punteggio | L1 | CLUSTER_LOGGING_DISABLED e CLUSTER_MONITORING_DISABLED |
6.7.2 | Valuta la possibilità di abilitare il logging controllato di Linux | Senza punteggio | L2 | n/d |
6.8 | Autenticazione e autorizzazione | |||
6.8.1 | Assicurati che l'autenticazione di base mediante password statiche sia disabilitata | Con punteggio | L1 | n/d |
6.8.2 | Assicurati che l'autenticazione mediante certificati client sia disabilitata | Con punteggio | L1 | n/d |
6.8.3 | Valuta la possibilità di gestire gli utenti Kubernetes RBAC con Google Gruppi per RBAC | Senza punteggio | L2 | n/d |
6.8.4 | Assicurati che l'autorizzazione legacy (ABAC) sia disabilitata | Con punteggio | L1 | LEGACY_AUTHORIZATION_ENABLED |
6,90 | Spazio di archiviazione | |||
6.9.1 | Valuta la possibilità di abilitare le chiavi di crittografia gestite dal cliente (CMEK) per i dischi permanenti (PD) GKE | Senza punteggio | L1 | n/d |
6,10 | Altre configurazioni del cluster | |||
6.10.1 | Assicurati che la UI web di Kubernetes sia disabilitata | Con punteggio | L1 | WEB_UI_ENABLED |
6.10.2 | Assicurati che i cluster alpha non vengano utilizzati per i carichi di lavoro di produzione | Con punteggio | L1 | n/d |
6.10.3 | Assicurati che il criterio di sicurezza dei pod sia abilitato e impostato come appropriato | Senza punteggio | L1 | POD_SECURITY_POLICY_DISABLED |
6.10.4 | Considera GKE Sandbox per l'esecuzione di carichi di lavoro non attendibili | Senza punteggio | L2 | n/d |
6.10.5 | Preferisco abilitare Autorizzazione binaria e configurare il criterio in base alle esigenze | Senza punteggio | L2 | n/d |
6.10.6 | Preferisco abilitare Cloud Security Command Center (Cloud SCC) | Senza punteggio | L1 | n/d |
Passaggi successivi
- Leggi la panoramica sulla sicurezza di GKE.
- Segui le best practice per la sicurezza nella guida alla protezione dei dati di GKE.
- Scopri di più sul modello di responsabilità condivisa in GKE.