Informazioni sull'analisi della strategia di sicurezza per Kubernetes


Questa pagina descrive l'analisi della postura di sicurezza di Kubernetes, una funzionalità della dashboard sulla postura di sicurezza che rileva problemi comuni di configurazione della sicurezza, bollettini sulla sicurezza utilizzabili nei carichi di lavoro Kubernetes e minacce attive nei cluster GKE Enterprise.

Per abilitare e utilizzare la scansione della strategia di sicurezza per Kubernetes, consulta le seguenti risorse:

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

Prezzi

  • Livello Standard: offerto senza costi aggiuntivi in GKE.
  • Livello avanzato: incluso in GKE Enterprise.

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

Informazioni sul controllo della configurazione dei carichi di lavoro

I carichi di lavoro di cui esegui il deployment su GKE devono avere una configurazione protetta che ne limita la superficie di attacco. Controllare i carichi di lavoro nei vari cluster per rilevare 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 carichi di lavoro in esecuzione su più cluster e restituire risultati attuabili e con punteggio e suggerimenti utili per migliorare la tua strategia di sicurezza.

Il controllo della configurazione dei carichi di lavoro verifica ogni carico di lavoro di cui è stato eseguito il deployment in base a un sottoinsieme di criteri negli standard di sicurezza dei pod. Il controllo della configurazione del carico di lavoro avviene sull'infrastruttura di Google e non utilizza risorse di computing sui nodi.

Vantaggi del controllo della configurazione dei carichi di lavoro

  • Automatizza il rilevamento dei problemi di configurazione noti per tutti i carichi di lavoro.
  • Ricevi suggerimenti concreti per migliorare la postura di sicurezza.
  • Utilizza la console Google Cloud per una visione d'insieme dei problemi di configurazione.
  • Utilizza Logging per ottenere una traccia verificabile dei problemi, per migliorare la generazione di report e l'osservabilità.

Come funziona il controllo della configurazione dei carichi di lavoro

Per ogni carico di lavoro idoneo di cui è stato eseguito il deployment, GKE analizza continuamente la specifica del carico di lavoro 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 per la sicurezza dei pod di base, mentre 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, vedi Cosa viene controllato dal controllo della configurazione dei carichi di lavoro?.

Dopo aver analizzato e rilevato i problemi, GKE valuta la gravità dei problemi di configurazione rilevati in base alle misure di protezione della sicurezza integrate. GKE assegna una classificazione di gravità che può indicare la velocità con cui rispondi al problema. Nella console Google Cloud vengono visualizzati i risultati e le azioni consigliate che puoi intraprendere per risolvere i problemi. GKE aggiunge inoltre voci a Cloud Logging per il tracciamento e il controllo.

Cosa viene controllato dal controllo della configurazione dei carichi di lavoro?

problema Campi Valori consentiti Gravità

Spazi dei nomi host

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

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

Contenitori con privilegi

I container con privilegi consentono un accesso all'host quasi illimitato. Condividono gli spazi dei nomi con l'host e non dispongono di gruppi 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 dell'host

L'esposizione di una porta host a un container consente al container di intercettare il traffico di rete verso un servizio host che utilizza quella porta o di ignorare le regole di controllo dell'accesso dell'accesso alla rete come le regole in 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

Installazione dei volumi del percorso host

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

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

Maschera /proc non predefinita

Il tipo di montaggio predefinito /proc maschera alcuni percorsi in /proc per evitare l'esposizione di percorsi che potrebbero causare la perdita di informazioni o l'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 di sistema non sicura

Puoi configurare un pod per consentire la modifica dei parametri del kernel non sicuri utilizzando il file system virtuale /proc/sys. I parametri non sicuri non supportano il pacing dei nomi, non isolano correttamente il proprio effetto tra i pod, potrebbero danneggiare l'integrità del nodo o potrebbero consentire al pod di ottenere risorse oltre 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

In esecuzione come non principale

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 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. Questo consente a un processo creato all'interno del container mediante l'esecuzione di un set-user-id, set-group-id o di una funzionalità 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 definito

Un container può essere configurato esplicitamente per essere sbloccato da AppArmor. Ciò garantisce che nessun profilo AppArmor venga applicato al container e non ne sia quindi vincolato. Il controllo di sicurezza preventivo disabilitato aumenta il rischio di attacco container escape.

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

Informazioni sulla visualizzazione del bollettino sulla sicurezza

Quando viene rilevata una vulnerabilità in GKE, applichiamo una patch alla vulnerabilità e pubblichiamo un bollettino sulla sicurezza per verificarne la vulnerabilità. Per informazioni su identificazione, patch e tempistiche, consulta la pagina relativa all'applicazione delle patch di sicurezza di GKE.

La dashboard sulla strategia di sicurezza mostra i bollettini sulla sicurezza che interessano i cluster, i carichi di lavoro e i pool di nodi in modalità Standard. Questa funzionalità fa parte della funzionalità Strategia di sicurezza di Kubernetes della dashboard della postura di sicurezza e viene abilitata automaticamente quando crei un cluster Autopilot o Standard. Per abilitare la scansione della strategia di sicurezza di Kubernetes, segui le istruzioni in Controllare automaticamente i carichi di lavoro per rilevare eventuali problemi di configurazione.

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

Per visualizzare i bollettini per i cluster che hai registrato alla scansione della postura di sicurezza di Kubernetes, vai alla dashboard sulla postura di sicurezza:

Vai a Security Posture

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

Informazioni sul rilevamento delle minacce di GKE

Il rilevamento delle minacce di GKE esegue la scansione degli audit log dei cluster registrati per rilevare eventuali minacce attive e fornisce azioni di mitigazione consigliate. Il rilevamento delle minacce di GKE si basa sul servizio Security Command Center Event Threat Detection. Per saperne di più, nella documentazione di GKE Enterprise, consulta Informazioni sul rilevamento delle minacce di GKE.

Passaggi successivi