Informazioni sull'analisi della strategia di sicurezza per Kubernetes

Questo documento descrive come utilizzare la scansione della postura di sicurezza di Kubernetes per trovare e mitigare i rischi per la sicurezza in GKE. Questo documento presuppone che tu conosca le seguenti informazioni:

La scansione della postura di sicurezza di Kubernetes è una funzionalità della dashboard della postura di sicurezza che ti aiuta a identificare e risolvere in modo proattivo le vulnerabilità di sicurezza nei cluster Google Kubernetes Engine (GKE). La scansione della postura di sicurezza di Kubernetes offre le seguenti funzionalità:

Questo documento è rivolto agli specialisti della sicurezza che monitorano i cluster per rilevare problemi di sicurezza. Per scoprire di più sui ruoli comuni e sulle attività di esempio a cui facciamo riferimento nei Google Cloud contenuti, consulta Ruoli e attività comuni degli utenti GKE.

Per scoprire come abilitare e utilizzare la scansione della postura di sicurezza di Kubernetes, consulta Controllare automaticamente i workload per rilevare problemi di configurazione.

Prezzi

Offerto senza costi aggiuntivi in GKE.

Le voci aggiunte a Cloud Logging sono soggette a prezzi di Cloud Logging.

Informazioni sul controllo della configurazione del workload

I workload di cui esegui il deployment su GKE devono avere una configurazione rafforzata che ne limiti la superficie di attacco. Il controllo manuale dei workload nei cluster per rilevare problemi di configurazione può essere difficile da eseguire su larga scala. Puoi utilizzare la dashboard della postura di sicurezza per controllare automaticamente la configurazione di tutti i workload in esecuzione su più cluster e restituire risultati utilizzabili e con punteggio, nonché consigli mirati per migliorare la postura di sicurezza.

Il controllo della configurazione del workload verifica ogni workload di cui è stato eseguito il deployment rispetto a un sottoinsieme di criteri negli standard di sicurezza dei pod. Il controllo della configurazione del workload viene eseguito sull'infrastruttura di Google e non utilizza risorse di calcolo sui nodi.

Vantaggi del controllo della configurazione del workload

  • Automatizza il rilevamento di problemi di configurazione noti in tutti i workload.
  • Ricevi consigli utili per migliorare la postura di sicurezza.
  • Utilizza la Google Cloud console per ottenere una panoramica dei problemi di configurazione.
  • Utilizza Logging per ottenere una traccia di controllo dei problemi per migliorare il reporting e l'osservabilità.

Come funziona il controllo della configurazione del workload

Per ogni workload di cui è stato eseguito il deployment idoneo, GKE esegue continuamente la scansione della specifica del workload e confronta i campi e i valori con i controlli definiti nel criterio di sicurezza sottostante. Ad esempio, un pod con spec.containers.securityContext.privileged=true viola lo standard di sicurezza dei pod di base e un pod con il campo spec.securityContext.runAsNonRoot impostato su false viola lo standard con restrizioni. Per un elenco dei criteri di sicurezza controllati da GKE, consulta Cosa controlla il controllo della configurazione del workload?.

Dopo la scansione e il rilevamento dei problemi, GKE valuta la gravità dei problemi di configurazione rilevati in base alle misure di rafforzamento della sicurezza integrate. GKE assegna una valutazione della gravità che può indicare la velocità con cui rispondi al problema. La Google Cloud console mostra i risultati e i comportamenti consigliati che puoi intraprendere per risolvere i problemi. GKE aggiunge anche voci a Cloud Logging per il tracciamento e il controllo.

Cosa controlla il controllo della configurazione del workload?

Problema Campi Valori consentiti Gravità

Spazi dei nomi dell'host

I pod che condividono gli spazi dei nomi dell'host consentono ai processi del pod di comunicare con i processi host e di raccogliere informazioni sull'host, il che potrebbe portare a un attacco container escape.

  • spec.hostNetwork
  • spec.hostIPC
  • spec.hostPID
  • Non definito o nullo
  • false
Alta

Container con privilegi

I container con privilegi consentono un accesso host quasi senza restrizioni. Condividono gli spazi dei nomi con l'host e non hanno gruppo di controllo, seccomp, AppArmor e limitazioni delle funzionalità.

  • spec.containers[*].securityContext.privileged
  • spec.initContainers[*].securityContext.privileged
  • spec.ephemeralContainers[*].securityContext.privileged
  • Non definito o nullo
  • false
Alta

Accesso alla porta host

L'esposizione di una porta host a un container potrebbe consentire al container di intercettare il traffico di rete che punta a una porta host o di ignorare le regole di controllo dell'accesso alla rete, come quelle di un NetworkPolicy.

  • spec.containers[*].ports[*].hostPort
  • spec.initContainers[*].ports[*].hostPort
  • spec.ephemeralContainers[*].ports[*].hostPort
  • Non definito o nullo
  • 0
Alta

Funzionalità non predefinite

Un container ha capacità assegnate che potrebbero consentire un attacco container escape.

  • spec.containers[*].securityContext.capabilities.add
  • spec.initContainers[*].securityContext.capabilities.add
  • spec.ephemeralContainers[*].securityContext.capabilities.add
  • Non definito o nullo
  • AUDIT_WRITE
  • CHOWN
  • DAC_OVERRIDE
  • FOWNER
  • FSETID
  • KILL
  • MKNOD
  • NET_BIND_SERVICE
  • SETFCAP
  • SETGID
  • SETPCAP
  • SETUID
  • SYS_CHROOT
Media

Montaggio di volumi del percorso host

I volumi hostPath montano file o directory dall'host. Questi volumi presentano rischi per la sicurezza che potrebbero portare all'attacco container escape.

spec.volumes[*].hostPath Non definito o nullo Media

Maschera /proc non predefinita

Il tipo di montaggio /proc predefinito maschera alcuni percorsi in /proc per evitare l'esposizione di percorsi che potrebbero portare a perdite di dati o a un attacco container escape. L'utilizzo di un tipo non predefinito aumenta questi rischi.

  • spec.containers[*].securityContext.procMount
  • spec.initContainers[*].securityContext.procMount
  • spec.ephemeralContainers[*].securityContext.procMount
  • Non definito o nullo
  • Predefinito
Media

Maschera sysctl non sicura

Un pod può essere configurato per consentire la modifica dei parametri del kernel non sicuri utilizzando il file system virtuale /proc/sys. I parametri non sicuri non supportano lo spazio dei nomi, non isolano correttamente il loro effetto tra i pod, potrebbero danneggiare l'integrità del nodo o potrebbero consentire al pod di ottenere risorse che superano i suoi limiti.

spec.securityContext.sysctls[*].name
  • Non definito o nullo
  • kernel.shm_rmid_forced
  • net.ipv4.ip_local_port_range
  • net.ipv4.ip_unprivileged_port_start
  • net.ipv4.tcp_syncookies
  • net.ipv4.ping_group_range
Media

Esecuzione come utente non root

Puoi consentire esplicitamente l'esecuzione di un container come utente root se la runAsUser o la USER direttiva nell'immagine specifica l'utente root. La mancanza di controlli di sicurezza preventivi durante l'esecuzione come utente root aumenta il rischio di attacco container escape.

  • spec.securityContext.runAsNonRoot
  • spec.containers[*].securityContext.runAsNonRoot
  • spec.initContainers[*].securityContext.runAsNonRoot
  • spec.ephemeralContainers[*].securityContext.runAsNonRoot
true Media

Escalation dei privilegi

Un container può essere configurato in modo esplicito per consentire l'escalation dei privilegi al momento dell'esecuzione. Ciò consente a un processo creato all'interno del container di eseguire un set-user-id, set-group-id o un file eseguibile per ottenere i privilegi specificati dall'eseguibile. La mancanza di un controllo di sicurezza preventivo aumenta il rischio di attacco container escape.

  • spec.containers[*].securityContext.allowPrivilegeEscalation
  • spec.initContainers[*].securityContext.allowPrivilegeEscalation
  • spec.ephemeralContainers[*].securityContext.allowPrivilegeEscalation
false Media

Profilo AppArmor non limitato

Un container può essere configurato in modo esplicito per non essere limitato da AppArmor. Questa configurazione contribuisce a garantire che nessun profilo AppArmor venga applicato al container e che quindi non sia vincolato da questi profili. Se si disabilita il controllo di sicurezza preventivo aumenta il rischio di attacco container escape.

metadata.annotations["container.apparmor.security.beta.kubernetes.io/*"] false Bassa

Inoltre, GKE verifica la presenza di eventuali associazioni RoleBinding o ClusterRoleBinding RBAC che fanno riferimento a uno dei seguenti utenti o gruppi:

  • system:anonymous
  • system:authenticated
  • system:unauthenticated

Se esistono associazioni RBAC che fanno riferimento a questi utenti o gruppi, nella dashboard della postura di sicurezza viene visualizzato un risultato denominato Accesso al cluster GKE concesso a utenti anonimi con gravità Media. Questi utenti e gruppi sono effettivamente anonimi e non devono essere utilizzati in RoleBinding o ClusterRoleBinding. Per saperne di più, consulta Evitare ruoli e gruppi predefiniti.

Informazioni sulla visualizzazione dei bollettino sulla sicurezza

Quando viene rilevata una vulnerabilità in GKE, la correggiamo e pubblichiamo un bollettino sulla sicurezza per la vulnerabilità. Per informazioni sull'identificazione, sulla correzione e sulle tempistiche, consulta Correzione della sicurezza di GKE.

La dashboard della postura di sicurezza mostra i bollettini sulla sicurezza che interessano i cluster, i workload e i pool di nodi in modalità Standard. Questa funzionalità fa parte della funzionalità security posture di Kubernetes della dashboard della security posture ed è abilitata automaticamente quando crei un cluster Autopilot o Standard. Per abilitare la scansione della postura di sicurezza di Kubernetes, usa le istruzioni riportate in Controllare automaticamente i workload per rilevare problemi di configurazione.

La Google Cloud console mostra dettagli come i cluster interessati, versioni e versioni di patch consigliate per gli upgrade per mitigare la vulnerabilità. Vengono visualizzati solo i bollettini per i quali è disponibile una mitigazione nella regione o nella zona del cluster Google Cloud .

Per visualizzare i bollettini per i cluster di cui hai eseguito la registrazione alla scansione della postura di sicurezza di Kubernetes, vai alla dashboard della postura di sicurezza:

Vai a Postura di sicurezza

Nella sezione Bollettini sulla sicurezza vengono visualizzati tutti i bollettini disponibili che interessano il tuo ambiente.

Passaggi successivi