Informazioni sull'analisi della strategia di sicurezza di Kubernetes


Questa pagina descrive 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 tuoi cluster Google Kubernetes Engine (GKE). Questa pagina spiega il controllo della configurazione dei workload e la visualizzazione bollettino sulla sicurezza per trovare e mitigare i rischi per la sicurezza in GKE.

Questa pagina è rivolta agli esperti di sicurezza che monitorano i cluster per rilevare eventuali problemi di sicurezza. Per scoprire di più sui ruoli comuni e sulle attività di esempio a cui facciamo riferimento nei contenuti diGoogle Cloud , consulta Ruoli utente e attività comuni di GKE.

Per attivare e utilizzare la scansione della postura di sicurezza di Kubernetes, vedi Eseguire automaticamente l'audit dei workload per problemi di configurazione

L'analisi della strategia di sicurezza di Kubernetes offre le seguenti funzionalità:

Prezzi

Offerto senza costi aggiuntivi in GKE.

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

Informazioni sul controllo della configurazione dei workload

I carichi di lavoro di cui esegui il deployment su GKE devono avere una configurazione protetta che limiti la superficie di attacco. Controllare i workload nei cluster per individuare problemi di configurazione può essere difficile da eseguire manualmente su larga scala. Puoi utilizzare la dashboard della postura di sicurezza per controllare automaticamente la configurazione di tutti i workload in esecuzione in più cluster e restituire risultati strategici e valutati, nonché suggerimenti attendibili per migliorare la postura di sicurezza.

Il controllo della configurazione del carico di lavoro verifica ogni carico di lavoro di cui è stato eseguito il deployment rispetto a un sottoinsieme di policy 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 tuoi nodi.

Vantaggi del controllo della configurazione dei workload

  • Automatizza il rilevamento di problemi di configurazione noti in tutti i carichi di lavoro.
  • Ricevi consigli pratici per migliorare la security posture.
  • Utilizza la console Google Cloud per ottenere una panoramica di alto livello dei problemi di configurazione.
  • Utilizza Logging per ottenere una traccia controllabile dei problemi per migliorare la generazione di report e l'osservabilità.

Come funziona il controllo della configurazione dei workload

Per ogni workload di cui è stato eseguito il deployment idoneo, GKE esegue la scansione continua 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 baseline e un pod con il campo spec.securityContext.runAsNonRoot impostato su false viola lo standard con restrizioni. Per un elenco delle norme di sicurezza controllate da GKE, consulta la sezione Che cosa controlla il controllo della configurazione dei carichi di lavoro?.

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

Che cosa controlla il controllo della configurazione del workload?

Problema Campi Valori consentiti Gravità

Spazi dei nomi 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 nil
  • false
Alta

Container privilegiati

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 nil
  • 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 dell'accesso alla rete, come quelle di un NetworkPolicy.

  • spec.containers[*].ports[*].hostPort
  • spec.initContainers[*].ports[*].hostPort
  • spec.ephemeralContainers[*].ports[*].hostPort
  • Non definito o nil
  • 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 nil
  • AUDIT_WRITE
  • CHOWN
  • DAC_OVERRIDE
  • FOWNER
  • FSETID
  • KILL
  • MKNOD
  • NET_BIND_SERVICE
  • SETFCAP
  • SETGID
  • SETPCAP
  • SETUID
  • SYS_CHROOT
Media

Montaggio dei 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 nil Media

Maschera /proc non predefinita

Il tipo di montaggio predefinito /proc 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 nil
  • Predefinito
Media

Unsafe sysctls mask

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 nil
  • 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 non root

Puoi consentire esplicitamente l'esecuzione di un container come utente root se l'istruzione runAsUser o USER 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 vincolato

Un container può essere configurato esplicitamente per non essere limitato da AppArmor. In questo modo, nessun profilo AppArmor viene applicato al container e quindi non è vincolato. 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 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, nel 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ù, vedi Evitare ruoli e gruppi predefiniti.

Informazioni sulla visualizzazione dei bollettino sulla sicurezza

Quando viene scoperta una vulnerabilità in GKE, la correggiamo e pubblichiamo un bollettino sulla sicurezza per la vulnerabilità. Per informazioni su identificazione, applicazione di patch e tempistiche, consulta Applicazione di patch di sicurezza di GKE.

La dashboard sulla postura di sicurezza mostra i bollettini sulla sicurezza che interessano i tuoi cluster, i tuoi workload e i pool di nodi in modalità Standard. Questa funzionalità fa parte della funzionalità Kubernetes security posture della dashboard della security posture ed è abilitata automaticamente quando crei un cluster Autopilot o Standard. Per attivare la scansione della postura di sicurezza di Kubernetes, segui le istruzioni riportate in Eseguire automaticamente l'audit dei carichi di lavoro per rilevare problemi di configurazione.

La Google Cloud console mostra dettagli come i cluster interessati, le versioni e le versioni della 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 registrati nella scansione della security posture di Kubernetes, vai alla dashboard della security posture:

Vai a Postura di sicurezza

I bollettini disponibili che interessano il tuo ambiente vengono visualizzati nella sezione Bollettini sulla sicurezza.

Passaggi successivi