I cluster Google Kubernetes Engine (GKE) Autopilot applicano varie norme di sicurezza progettate per prevenire molti percorsi di attacco comuni. Questo documento mostra agli amministratori della piattaforma come applicare alcuni o tutti questi criteri Autopilot nei cluster Standard. Non puoi disattivare l'applicazione dei criteri del cluster nei cluster Autopilot perché questi sono progettati per una postura di sicurezza di base di GKE più elevata.
Nei cluster Standard, puoi attivare e disattivare criteri specifici in qualsiasi momento. Gli amministratori dell'organizzazione possono controllare se policy Autopilot specifiche possono essere disattivate applicando un vincolo personalizzato nell'organizzazione, nella cartella o nel progetto. Puoi utilizzare queste policy predefinite per applicare le best practice di sicurezza senza dover scrivere ruoli e binding RBAC complessi. Molte delle norme a livello di cluster possono aiutarti a migliorare la sicurezza del cluster anche se non ti interessa utilizzare la modalità Autopilot per il cluster o i carichi di lavoro. Per saperne di più sulle policy dei cluster Autopilot disponibili, consulta la sezione Policy supportate.
Considerazioni per l'applicazione dei criteri dei cluster Autopilot
Mentre i cluster Autopilot applicano sempre queste policy, i cluster Standard spesso hanno workload e node pool esistenti che potrebbero violare le policy che applichi. Prima di applicare o disattivare una policy nel tuo cluster, leggi le seguenti considerazioni:
- Le modifiche si applicano solo ai nuovi workload: quando abiliti una policy che si applica ai workload, le modifiche si applicano solo ai pod creati o modificati dopo l'abilitazione della policy. I pod esistenti che violano le norme possono continuare a essere eseguiti. Prima di attivare un criterio, esamina i carichi di lavoro esistenti nel cluster per verificare che rispettino il vincolo del criterio.
- Le policy dei pool di nodi si applicano a tutti i nodi: quando abiliti una policy che si applica ai pool di nodi nel cluster Standard, i vincoli si applicano ai pool di nodi nuovi ed esistenti. Se un pool di nodi esistente viola
il criterio, l'operazione di aggiornamento del cluster non riesce. Ad esempio, se provi ad attivare il criterio
no-standard-node-poolsin un cluster con un pool di nodi gestito dall'utente esistente, l'operazione non va a buon fine. Prima di abilitare un criterio del pool di nodi, esamina i pool di nodi esistenti nel cluster. - L'attivazione di tutte le norme abilita la modalità Autopilot: se attivi tutte le norme Autopilot disponibili (inclusa la norma che impedisce i pool di nodi gestiti dall'utente), tutti i workload nel cluster possono essere eseguiti solo in modalità Autopilot. Ciò significa che tutti i tuoi carichi di lavoro devono rispettare i vincoli di sicurezza di Autopilot e tutte le norme del cluster. Questo approccio ti consente di eseguire l'intero cluster Standard in modalità Autopilot, con la possibilità di disattivare policy specifiche quando necessario.
Prima di iniziare
Prima di iniziare, assicurati di aver eseguito le seguenti operazioni:
- Abilita l'API Google Kubernetes Engine. Abilita l'API Google Kubernetes Engine
- Per utilizzare Google Cloud CLI per questa attività,
installala e poi
inizializza
gcloud CLI. Se hai già installato gcloud CLI, scarica l'ultima
versione eseguendo il comando
gcloud components update. Le versioni precedenti di gcloud CLI potrebbero non supportare l'esecuzione dei comandi in questo documento.
Abilitare policy Autopilot specifiche nel cluster
Utilizza gcloud CLI o l'API GKE per abilitare criteri specifici
quando crei o aggiorni un cluster Standard. Per aggiungere policy del cluster Autopilot specifiche all'elenco delle policy che GKE applica nel cluster, utilizza il flag --autopilot-cluster-policies con il comando gcloud container clusters create o il comando gcloud container clusters update.
L'esempio seguente mostra come abilitare le policy in un cluster esistente:
gcloud container clusters update CLUSTER_NAME \
--location=CONTROL_PLANE_LOCATION \
--autopilot-cluster-policies=AUTOPILOT_POLICIES
Sostituisci quanto segue:
CLUSTER_NAME: il nome del tuo cluster Standard.CONTROL_PLANE_LOCATION: la regione o la zona del control plane del cluster, ad esempious-central1ous-central1-a.AUTOPILOT_POLICIES: un elenco separato da virgole di policy del cluster Autopilot da iniziare ad applicare nel cluster, ad esempiono-system-mutation,no-system-impersonation. Devi specificare uno o più criteri supportati. Le policy che specifichi vengono aggiunte all'elenco di policy già applicate da GKE nel cluster. Per disattivare l'applicazione di una policy, consulta la sezione Disattivare policy Autopilot specifiche nel cluster.
Se il comando non riesce e viene visualizzato un messaggio di errore che inizia con Bad value [invalid
policy]:, verifica che tutti i nomi dei criteri specificati siano presenti nell'elenco dei criteri supportati.
Verifica l'applicazione delle norme
Dopo aver attivato una policy specifica, puoi verificare che l'applicazione forzata funzioni
provando a creare una risorsa che viola la policy. Ad esempio, se
attivi il criterio no-system-mutation, puoi provare a creare un pod nello spazio dei nomi
kube-system. GKE blocca l'operazione di creazione del pod
e visualizza un messaggio di errore simile al seguente:
Error from server (Forbidden): pods is forbidden: User cannot create resource "pods" in API group "" in the namespace "kube-system": GKE Warden authz [denied by managed-namespaces-limitation]: the namespace "kube-system" is managed and the request's verb "create" is denied
Disabilita policy Autopilot specifiche nel cluster
Puoi disattivare uno qualsiasi dei criteri del cluster Autopilot in qualsiasi momento.
La disattivazione di un criterio è utile in situazioni in cui i requisiti di sicurezza sono cambiati o quando un flusso di lavoro esistente è stato interrotto quando hai attivato il criterio. Per rimuovere una policy dall'elenco delle policy applicate da GKE nel cluster, utilizza il flag --remove-autopilot-cluster-policies con il comando gcloud container clusters update:
gcloud container clusters update CLUSTER_NAME \
--location=CONTROL_PLANE_LOCATION \
--remove-autopilot-cluster-policies=AUTOPILOT_POLICIES
Devi specificare almeno un valore per il flag
--remove-autopilot-cluster-policies. Se specifichi questo flag senza un
valore, l'operazione non va a buon fine.
Se il comando non riesce e viene visualizzato un messaggio di errore che inizia con Bad value [invalid
policy]:, verifica che tutti i nomi dei criteri specificati siano presenti nell'elenco dei criteri supportati.
Applica le policy dei cluster Autopilot nelle organizzazioni
Gli amministratori dell'organizzazione possono applicare l'utilizzo di queste policy del cluster in un'organizzazione, un progetto o una cartella utilizzando vincoli personalizzati delle policy dell'organizzazione. Questa misura aggiuntiva può aiutarti a impedire la rimozione non autorizzata o involontaria delle norme del cluster richieste da un cluster. Utilizza il campo ClusterPolicyConfig nel vincolo personalizzato,
come nell'esempio seguente:
name: organizations/ORGANIZATION_ID/customConstraints/custom.autopilotClusterPolicies
resourceTypes:
- container.googleapis.com/Cluster
methodTypes:
- CREATE
- UPDATE
condition: "resource.ClusterPolicyConfig.no_system_mutation == true && resource.ClusterPolicyConfig.no_system_impersonation == true"
actionType: ALLOW
displayName: Autopilot policies in Standard clusters.
description: For all new and existing Standard clusters, enable the no_system_mutation and no_system_impersonation Autopilot cluster policies. For more information, see https://docs.cloud.google.com/kubernetes-engine/security/autopilot-cluster-policies-standard.
Criteri supportati
Ciascuna delle policy Autopilot disponibili nei cluster Standard implementa una o più best practice per la sicurezza a livello di cluster.
Norme come no-system-mutation, no-system-impersonation e
no-unsafe-webhooks contribuiscono a migliorare la sicurezza di qualsiasi cluster GKE, anche se non ti interessa utilizzare la modalità Autopilot.
La tabella seguente descrive le policy Autopilot che puoi attivare nei cluster Standard e ti aiuta a prepararti all'applicazione delle policy:
| Nome del criterio | Descrizione | Cosa fare prima dell'attivazione |
|---|---|---|
no-system-mutation |
Impedisci la creazione o la modifica di risorse negli spazi dei nomi di sistema GKE (ad esempio kube-system). |
Sposta i pod dagli spazi dei nomi di sistema nei tuoi spazi dei nomi. |
no-system-impersonation |
Blocca i tentativi di impersonare gli utenti di sistema e impedisce la creazione di CertificateSigningRequests utilizzando i principal di sistema. | Cerca eventuali CertificateSigningRequest non autorizzate generate per le identità di sistema. Se trovi richieste di firma di certificati non autorizzate approvate, ruota le credenziali del cluster per invalidare i certificati. |
no-unsafe-webhooks |
Impedisce a webhook e policy di controllo dell'ammissione di intercettare risorse di sistema critiche come oggetti Node, PersistentVolume o CertificateSigningRequest. |
Utilizza il servizio Recommender per identificare i webhook che intercettano le risorse di sistema. Se trovi webhook, modifica la configurazione del webhook. Per maggiori informazioni, consulta Garantire la stabilità del control plane quando si utilizzano webhook. |
no-standard-node-pools |
Impedisci l'esistenza nel cluster di eventuali node pool gestiti dall'utente, inclusi quelli creati manualmente e quelli creati automaticamente. Nel cluster possono esistere solo pool di nodi Autopilot. | Elimina tutti i pool di nodi non Autopilot esistenti, incluso il pool di nodi predefinito creato con il cluster. |
Passaggi successivi
- Scopri di più su come rafforzare la sicurezza del cluster.
- Scopri di più sulle altre misure di sicurezza di Autopilot.