Questa pagina mostra come applicare la crittografia dei dati in uso nei nodi e nei carichi di lavoro utilizzando i nodi Google Kubernetes Engine riservati. L'applicazione obbligatoria della crittografia può contribuire ad aumentare la sicurezza dei carichi di lavoro.
Questa pagina è rivolta agli esperti di sicurezza che implementano misure di sicurezza su GKE. Per scoprire di più su i ruoli comuni e sulle attività di esempio a cui facciamo riferimento nei contenuti di Google Cloud , consulta Ruoli e attività comuni per gli utenti di GKE Enterprise.
Prima di leggere questa pagina, assicurati di conoscere il concetto di dati in uso.
Che cos'è Confidential GKE Node?
Puoi criptare i tuoi carichi di lavoro con i nodi GKE riservati o con la modalità riservata per Hyperdisk Balanced.
Confidential GKE Node
Confidential GKE Node è basato su Confidential VM di Compute Engine e utilizza la tecnologia Secure Encrypted Virtualization (SEV) di AMD, che cripta i contenuti della memoria delle VM in uso. La crittografia in uso è uno dei tre stati della crittografia end-to-end.
Confidential GKE Node non modifica le misure di sicurezza applicate da GKE ai piani di controllo dei cluster. Per scoprire di più su queste misure, consulta la sezione Sicurezza del piano di controllo. Per avere visibilità su chi accede ai piani di controllo nei tuoi progetti Google Cloud, utilizza Access Transparency.
Per abilitare i nodi riservati di GKE, puoi procedere nel seguente modo:
- Crea un nuovo cluster
- Esegui il deployment di un carico di lavoro con il provisioning automatico dei nodi
- Crea un node pool
- Aggiornare un pool di nodi esistente
Non puoi aggiornare un cluster esistente per modificare l'impostazione Nuclei GKE riservati a livello di cluster.
La tabella seguente mostra il comportamento di GKE che si applica quando attivi i nodi Confidential GKE:
Impostazione di Confidential GKE Node | Modalità di configurazione | Comportamento |
---|---|---|
A livello di cluster | Creare un nuovo cluster in modalità Autopilot o Standard | Tutti i nodi utilizzano Confidential GKE Node. Questa operazione è irreversibile. Non puoi eseguire l'override dell'impostazione per i singoli nodi. Nei cluster GKE Autopilot, tutti i nodi utilizzano automaticamente la serie di macchine predefinita per la classe di calcolo bilanciata, ovvero N2D. |
A livello di node pool |
|
GKE cripta i contenuti della memoria dei nodi nel pool di nodi. Questo è possibile solo se i nodi Confidential GKE Node sono disattivati a livello di cluster. |
Modalità riservata per Hyperdisk bilanciato
Puoi anche attivare la modalità riservata per Hyperdisk Balanced sullo spazio di archiviazione del disco di avvio, che cripta i dati in ulteriori enclave basati su hardware.
Puoi attivare la modalità riservata per Hyperdisk bilanciato quando esegui una delle seguenti operazioni:
- Crea un nuovo cluster
- Crea un nuovo node pool
Non puoi aggiornare un cluster o un pool di nodi esistente per modificare l'impostazione Modalità riservata per le IOPS bilanciate sottoposte a provisioning di Hyperdisk.
La tabella seguente mostra il comportamento di GKE che si applica quando attivi l'impostazione Modalità riservata per le IOPS bilanciate di Hyperdisk a livello di cluster o di pool di nodi:
Modalità riservata per l'impostazione Hyperdisk bilanciato | Modalità di configurazione | Comportamento |
---|---|---|
A livello di cluster | Crea un nuovo cluster | Solo il pool di nodi predefinito del cluster utilizzerà
l'impostazione della modalità riservata per Hyperdisk Balanced. Non puoi svolgere le seguenti operazioni:
|
A livello di node pool | Crea un nuovo node pool | Puoi configurare l'impostazione della modalità riservata per Hyperdisk bilanciato per tutti i nuovi pool di nodi al momento della creazione. Non puoi aggiornare i pool di nodi esistenti per utilizzare l'impostazione della modalità riservata per Hyperdisk bilanciato. |
Prezzi
Si applicano i seguenti prezzi:
Autopilot:
- Ti vengono addebitati costi in base ai prezzi della classe di calcolo bilanciata perché l'attivazione di Confidential GKE Node modifica la serie di macchine predefinita nel cluster in N2D. Per i dettagli sui prezzi, consulta Prezzi di Autopilot.
- Oltre ai prezzi di GKE Autopilot, dovrai sostenere i costi di Confidential GKE Node. Per maggiori dettagli, consulta la sezione "Prezzi di Confidential GKE Node su GKE Autopilot" in Prezzi di Confidential VM.
Standard: non sono previsti costi aggiuntivi per il deployment di Confidential GKE Node, a parte il costo della VM Confidential di Compute Engine. Tuttavia, i Confidential GKE Node potrebbero generare leggermente più dati dei log all'avvio rispetto ai nodi standard. Per informazioni sui prezzi dei log, consulta Prezzi di Google Cloud Observability.
Disponibilità
Confidential GKE Node è disponibile come segue:
- Autopilot: disponibile in GKE versione 1.30.2 e successive.
Standard: disponibile con la serie di macchine N2D o la serie di macchine C2D.
I Confidential GKE Node sono disponibili solo in zone e regioni con istanze N2D, istanze C2D o istanze C3D disponibile.
I nodi Confidential GKE possono essere utilizzati con Container-Optimized OS e Container-Optimized OS con containerd (
cos_containerd
).
Prima di iniziare
Prima di iniziare, assicurati di aver eseguito le seguenti operazioni:
- Attiva l'API Google Kubernetes Engine. Attiva l'API Google Kubernetes Engine
- Se vuoi utilizzare Google Cloud CLI per questa attività,
installa e poi
inizializza gcloud CLI. Se hai già installato gcloud CLI, ottieni la versione più recente eseguendo
gcloud components update
.
Utilizzare i nodi Confidential GKE in Autopilot
Puoi abilitare i nodi riservati di GKE per un intero cluster Autopilot, in modo che ogni nodo sia un nodo riservato. Tutti i carichi di lavoro vengono eseguiti su nodi riservati senza che siano necessarie modifiche ai manifest dei carichi di lavoro. L'attivazione di Confidential GKE Node imposta la serie di macchine predefinita nel cluster su N2D.
Abilita i nodi Confidential GKE su un nuovo cluster Autopilot
Esegui questo comando:
gcloud container clusters create-auto CLUSTER_NAME \
--location=LOCATION \
--enable-confidential-nodes
Sostituisci quanto segue:
CLUSTER_NAME
: il nome del cluster Autopilot.LOCATION
: la posizione di Compute Engine per il cluster.
Il cluster deve eseguire la versione 1.30.2 o successive. Per impostare una versione specifica quando crei un cluster, consulta Impostare la versione e il canale di rilascio di un nuovo cluster Autopilot.
Utilizzare i nodi Confidential GKE in modalità standard
Puoi abilitare Confidential GKE Node a livello di cluster o di pool di nodi in modalità Standard.
Abilita i nodi Confidential GKE sui cluster standard
Puoi creare un nuovo cluster con i Nodi GKE riservati abilitati utilizzando la gcloud CLI o la console Google Cloud . Se attivi Confidential GKE Node a livello di cluster, tutti i nodi del cluster sono VM riservate.
Puoi anche utilizzare i Confidential GKE Node nei cluster che utilizzano il provisioning automatico dei nodi per scalare automaticamente i node pool.
gcloud
Quando crei un nuovo cluster, specifica l'opzione --enable-confidential-nodes
nella gcloud CLI:
gcloud container clusters create CLUSTER_NAME \
--machine-type=MACHINE_TYPE \
--enable-confidential-nodes
Sostituisci quanto segue:
Console
Vai alla pagina Google Kubernetes Engine nella console Google Cloud .
Fai clic su add_box Crea.
Nella sezione Standard, fai clic su Configura.
Nel riquadro di navigazione, in Cluster, fai clic su Sicurezza.
Seleziona la casella di controllo Abilita i nodi Confidential GKE.
Configura il cluster in base alle tue esigenze.
Fai clic su Crea.
Per ulteriori dettagli sulla creazione di cluster, consulta Creare un cluster a livello di area geografica.
Dopo aver creato un cluster con Confidential GKE Node, tutti i node pool creati in questo cluster possono utilizzare solo nodi riservati. Non puoi creare node pool regolari nei cluster con i Confidential GKE Node abilitati. Inoltre, non puoi disabilitare i nodi Confidential GKE Node su singoli pool di nodi quando li abiliti a livello di cluster.
Per qualsiasi pool di nodi creato con l'impostazione Modalità riservata per il throughput bilanciato di Hyperdisk, solo i nodi del pool di nodi sono limitati alla configurazione di configurazione. Per tutti i nuovi node pool creati nel cluster, devi configurare la modalità riservata al momento della creazione.
Abilita i nodi Confidential GKE nei node pool
Puoi abilitare i nodi Confidential GKE Node in pool di nodi specifici se i nodi Confidential GKE Node sono disattivati a livello di cluster.
L'impostazione della modalità riservata per Hyperdisk Balanced deve essere specificata durante la richiesta di creazione del pool di nodi.
Crea un nuovo node pool
Per creare un nuovo pool di nodi con i nodi GKE riservati abilitati, esegui il seguente comando:
gcloud container node-pools create NODE_POOL_NAME \
--cluster=CLUSTER_NAME \
--machine-type=MACHINE_TYPE \
--enable-confidential-nodes
Sostituisci quanto segue:
- NODE_POOL_NAME: il nome del nuovo pool di nodi.
- CLUSTER_NAME: il nome del tuo cluster.
- MACHINE_TYPE: il tipo di macchina per il tuo pool di nodi, che deve essere un tipo di macchina N2D, C2D o C3D.
Aggiornare un pool di nodi esistente
Puoi abilitare i nodi riservati di GKE nei pool di nodi esistenti che utilizzano i tipi di macchine N2D, C2D o C3D. Esegui questo comando:
gcloud container node-pools update NODE_POOL_NAME \
--cluster=CLUSTER_NAME \
--enable-confidential-nodes
Sostituisci quanto segue:
- NODE_POOL_NAME: il nome del pool di nodi.
- CLUSTER_NAME: il nome del tuo cluster.
Questa modifica richiede la ricreazione dei nodi, il che può causare interruzioni dei carichi di lavoro in esecuzione. Per informazioni dettagliate su questa modifica specifica, individua la riga corrispondente nella tabella Modifiche manuali che ricreano i nodi utilizzando una strategia di upgrade dei nodi senza rispettare le norme di manutenzione. Per scoprire di più sugli aggiornamenti dei nodi, consulta Pianificare le interruzioni per gli aggiornamenti dei nodi.
Posiziona i carichi di lavoro solo nei pool di nodi Confidential GKE Node
Se attivi i nodi Confidential GKE a livello di cluster, tutti i tuoi workload vengono eseguiti su nodi riservati. Non è necessario apportare modifiche ai manifest. Tuttavia, se attivi i Confidential GKE Node solo per node pool specifici, devi dichiarare che i carichi di lavoro devono essere eseguiti solo su node pool con Confidential GKE Node. Utilizza il
selettore di nodicloud.google.com/gke-confidential-nodes
, come nell'esempio seguente:
apiVersion: v1
kind: Pod
spec:
containers:
- name: my-confidential-app
image: us-docker.pkg.dev/myproject/myrepo/my-confidential-app
nodeSelector:
cloud.google.com/gke-confidential-nodes: "true"
Verifica che i nodi Confidential GKE Node siano abilitati
Puoi verificare se i tuoi cluster o nodi utilizzano i nodi GKE riservati ispezzionando i cluster o i nodi.
In cluster in modalità Autopilot o Standard
Puoi verificare che il tuo cluster Autopilot o Standard utilizzi i nodi GKE riservati con la gcloud CLI o la consoleGoogle Cloud .
gcloud
Descrivi il cluster:
gcloud container clusters describe CLUSTER_NAME
Se Confidential GKE Node è abilitato, l'output del comando include le seguenti righe:
confidentialNodes:
enabled: true
Console
Vai alla pagina Google Kubernetes Engine nella console Google Cloud .
Fai clic sul nome del cluster da esaminare.
In Sicurezza, nel campo Nodi GKE riservati, verifica che i nodi GKE riservati siano abilitati.
Nei nodi in modalità Autopilot o Standard
Per verificare se nodi Autopilot o Standard specifici utilizzano Confidential GKE Node, procedi nel seguente modo:
Trova il nome del nodo:
kubectl get nodes
Descrivi il nodo:
kubectl describe NODE_NAME
Sostituisci
NODE_NAME
con il nome di un nodo da esaminare.
Se i nodi Confidential GKE Node sono abilitati, l'output include quanto segue:
# lines omitted for clarity
cloud.google.com/gke-confidential-nodes=true
Nei pool di nodi in modalità standard
Per verificare che il tuo pool di nodi utilizzi i nodi GKE riservati, esegui il seguente comando:
gcloud container node-pools describe NODE_POOL_NAME \
--cluster=CLUSTER_NAME
Se Confidential GKE Node è abilitato, l'output è simile al seguente:
confidentialNodes:
enabled: true
Se l'impostazione Modalità riservata per Hyperdisk Balanced è abilitata, l'output è simile al seguente:
enableConfidentialStorage: true
Sui singoli nodi in modalità standard
Per convalidare la riservatezza di nodi specifici nei cluster standard, puoi procedere nel seguente modo:
- Verifica che AMD SEV sia abilitato oppure
- Convalida la VM con accesso riservato utilizzando Cloud Monitoring.
Impostare vincoli dei criteri dell'organizzazione
Puoi definire un vincolo dei criteri dell'organizzazione per assicurarti che tutte le risorse VM
create nella tua organizzazione siano istanze VM riservate.
Per GKE, puoi personalizzare il vincolo Limita il calcolo non riservato in modo che tutti i nuovi cluster vengano creati con i Confidential GKE Node abilitati. Aggiungi il container.googleapis.com
nome del servizio API all'elenco di quelli non consentiti quando applicchi le limitazioni dei criteri dell'organizzazione,
ad esempio:
gcloud resource-manager org-policies deny \
constraints/compute.restrictNonConfidentialComputing compute.googleapis.com container.googleapis.com \
--project=PROJECT_ID
Sostituisci PROJECT_ID con l'ID progetto.
Crea un volume persistente per la modalità riservata per Hyperdisk bilanciato
Per indicazioni sui valori consentiti per il throughput o le IOPS, consulta Pianificare il livello di prestazioni per il volume HyperDisk.
Gli esempi riportati di seguito mostrano come creare una modalità riservata per lo spazio di archiviazione bilanciato Hyperdisk per ogni tipo di Hyperdisk:
Hyperdisk bilanciato
Salva il seguente manifest in un file denominato
confidential-hdb-example-class.yaml
:apiVersion: storage.k8s.io/v1 kind: StorageClass metadata: name: balanced-storage provisioner: pd.csi.storage.gke.io volumeBindingMode: WaitForFirstConsumer allowVolumeExpansion: true parameters: type: hyperdisk-balanced provisioned-throughput-on-create: "250Mi" provisioned-iops-on-create: "7000" enable-confidential-storage: true disk-encryption-kms-key: "projects/KMS_PROJECT_ID/locations/REGION/keyRings/KEY_RING/cryptoKeys/HSM_KEY_NAME"
Sostituisci quanto segue:
KMS_PROJECT_ID
: il progetto proprietario della chiave Cloud KMSREGION
: la regione in cui si trova il discoKEY_RING
: il nome della chiave automatizzata che include la chiaveHSM_KEY_NAME
: il nome della chiave HSM utilizzata per criptare il disco
Crea la classe di archiviazione:
kubectl create -f hdb-example-class.yaml
Crea una richiesta di volume permanente Hyperdisk per GKE che utilizzi la modalità riservata per il volume bilanciato Hyperdisk.
Per trovare il nome delle classi di archiviazione disponibili nel cluster, esegui il seguente comando:
kubectl get sc
Limitazioni
Confidential GKE Node presenta le seguenti limitazioni:
- Tutti i limiti delle istanze VM Confidential di Compute Engine si applicano ai nodi GKE Confidential.
- I nodi riservati di GKE con il tipo di macchina C2D possono utilizzare il provisioning automatico dei nodi solo in GKE 1.24 o versioni successive.
- Confidential GKE Nodes supporta solo i PersistentVolumes supportati da dischi permanenti se il piano di controllo esegue GKE 1.22 o versioni successive. Per istruzioni, consulta Utilizzo del driver CSI per il disco permanente di Compute Engine .
- Confidential GKE Node non è compatibile con le GPU.
- Confidential GKE Node non è compatibile con i nodi single-tenant.
- Confidential GKE Node supporta solo l'utilizzo dello spazio di archiviazione temporaneo su SSD locali, ma non supporta l'utilizzo di SSD locali in generale.
- Sono supportati solo i nodi Container-Optimized OS. I nodi Ubuntu e Windows non sono supportati.
Disabilita i nodi Confidential GKE Node
Puoi disattivare i nodi Confidential GKE solo nei node pool in modalità standard. Se il pool di nodi si trova in un cluster che utilizza Confidential GKE Node a livello di cluster, non puoi disattivare la funzionalità a livello di pool di nodi.
- Per ulteriori informazioni sulla modalità riservata per Hyperdisk Balanced, consulta la sezione Limitazioni.
- La modalità riservata per Hyperdisk Balanced è supportata solo sui nodi GKE riservati.
Limitazioni della migrazione live
Alcuni tipi di macchine Confidential VM di Compute Engine supportano la migrazione live, che riduce al minimo la potenziale interruzione del carico di lavoro a causa di un evento di manutenzione dell'host. La migrazione in tempo reale avviene nelle seguenti versioni di GKE:
- 1.27.10-gke.1218000 e versioni successive
- 1.28.6-gke.1393000 e versioni successive
- 1.29.1-gke.1621000 e versioni successive
Se i tuoi node pool eseguivano già una versione supportata quando è stata aggiunta migrazione live, esegui l'upgrade manuale dei node pool alla stessa versione supportata o a una diversa. L'upgrade dei nodi attiva la loro recreazione e nei nuovi nodi è attivata migrazione live.
Per informazioni dettagliate sui tipi di macchine Compute Engine che supportano la migrazione in tempo reale, consulta Configurazioni supportate.
Se si verifica un evento di manutenzione dell'host su un nodo che non supporta migrazione live, il nodo entra in stato NotReady
. I pod in esecuzione subiranno interruzioni finché il nodo non sarà nuovamente pronto. Se la manutenzione richiede più di cinque minuti, GKE potrebbe provare a ricreare i pod su altri nodi.
Disabilita i nodi Confidential GKE Node
La disattivazione di Confidential GKE Node funziona solo per i node pool che hanno attivato Confidential GKE Node. Se il cluster è creato con nodi riservati di GKE, non puoi disattivare la funzionalità. Esegui il seguente comando per disattivare i Confidential GKE Node in un pool di nodi:
gcloud container node-pools update NODE_POOL_NAME \
--cluster=CLUSTER_NAME \
--no-enable-confidential-nodes
Questa modifica richiede la ricreazione dei nodi, il che può causare interruzioni dei carichi di lavoro in esecuzione. Per informazioni dettagliate su questa modifica specifica, individua la riga corrispondente nella tabella Modifiche manuali che ricreano i nodi utilizzando una strategia di upgrade dei nodi senza rispettare le norme di manutenzione. Per scoprire di più sugli aggiornamenti dei nodi, consulta Pianificare le interruzioni per gli aggiornamenti dei nodi.
Passaggi successivi
- Scopri di più su Confidential VM.
- Scopri di più sulle immagini dei nodi.
- Scopri di più sulla crittografia at-rest di Google Cloud .
- Scopri di più sulla crittografia dei dati in transito in Google Cloud .
- Scopri di più sulle chiavi di crittografia gestite dal cliente (CMEK).
- Scopri di più sulla crittografia dei secret a livello di applicazione.