Cripta i dati dei carichi di lavoro in uso con i nodi Confidential Google Kubernetes Engine


Questa pagina mostra come applicare la crittografia dei dati in uso nei nodi e nei carichi di lavoro utilizzando i nodi riservati di Google Kubernetes Engine.

Panoramica

Confidential GKE Node si basa su Confidential VM di Compute Engine e utilizza la tecnologia AMD Secure Encryption Virtualization (SEV), che cripta i contenuti della memoria delle VM in uso. La crittografia in uso è uno dei tre stati della crittografia end-to-end.

Quando abiliti Confidential GKE Node su un cluster o su un pool di nodi, i dati nei carichi di lavoro in esecuzione sui nodi riservati sono criptati in uso. Per la visibilità sul piano di controllo, utilizza Access Transparency.

Puoi abilitare Confidential GKE Node quando esegui una delle seguenti operazioni:

  • Crea un nuovo cluster
  • Crea un nuovo pool di nodi
  • Aggiorna un pool di nodi esistente

Non puoi aggiornare un cluster esistente per modificare l'impostazione Confidential GKE Node a livello di cluster.

La tabella seguente mostra il comportamento di GKE che si applica quando abiliti Confidential GKE Node a livello di cluster o di pool di nodi:

Impostazione Confidential GKE Node Modalità di configurazione Comportamento
A livello di cluster Crea un nuovo cluster Tutti i nodi nel cluster in qualsiasi pool di nodi utilizzano Confidential GKE Node. Non puoi eseguire le seguenti azioni:
  • Disabilita Confidential GKE Node per un pool di nodi nuovo o esistente nel cluster
  • Disabilita i nodi Confidential GKE Node sul cluster
  • Abilita Confidential GKE Node sui cluster esistenti
Livello pool di nodi
  • Crea un nuovo pool di nodi
  • Aggiorna un pool di nodi esistente
Puoi configurare Confidential GKE Node per i pool di nodi solo quando questa funzionalità è disabilitata a livello di cluster.

Prezzi

Non sono previsti costi aggiuntivi per il deployment di Confidential GKE Node, a parte il costo di Confidential VM di Compute Engine. Tuttavia, Confidential GKE Node potrebbe generare un numero leggermente maggiore di dati di log all'avvio rispetto ai nodi standard. Per informazioni sui prezzi dei log, consulta i prezzi per l'osservabilità di Google Cloud.

Disponibilità

Confidential GKE Node è disponibile nelle seguenti situazioni:

Prima di iniziare

Prima di iniziare, assicurati di aver eseguito le seguenti attività:

  • Abilita l'API Google Kubernetes Engine.
  • Abilita l'API Google Kubernetes Engine
  • Se vuoi utilizzare Google Cloud CLI per questa attività, installa e initialize gcloud CLI. Se hai già installato gcloud CLI, scarica la versione più recente eseguendo gcloud components update.

Abilita Confidential GKE Node sui cluster

Puoi creare un nuovo cluster con Confidential GKE Node abilitati utilizzando gcloud CLI o la console Google Cloud. Se abiliti i nodi Confidential GKE Node a livello di cluster, tutti i nodi nel cluster sono Confidential VM.

gcloud

Quando crei un nuovo cluster, specifica l'opzione --enable-confidential-nodes nell'interfaccia alla gcloud CLI:

gcloud container clusters create CLUSTER_NAME \
    --machine-type=MACHINE_TYPE \
    --enable-confidential-nodes

Sostituisci quanto segue:

Console

  1. Vai alla pagina Google Kubernetes Engine nella console Google Cloud.

    Vai a Google Kubernetes Engine

  2. Fai clic su Crea.

  3. Nella sezione Standard, fai clic su Configura.

  4. Nel riquadro di navigazione, in Cluster, fai clic su Sicurezza.

  5. Seleziona la casella di controllo Abilita Confidential GKE Node.

  6. Configura il cluster in base alle tue esigenze.

  7. Fai clic su Crea.

Per ulteriori dettagli sulla creazione dei cluster, consulta Creazione di un cluster a livello di regione.

Dopo aver creato un cluster con Confidential GKE Node, tutti i pool di nodi creati in questo cluster possono utilizzare solo nodi riservati. Non puoi creare pool di nodi regolari in cluster in cui sono abilitati Confidential GKE Node. Inoltre, non puoi disabilitare Confidential GKE Node su singoli pool di nodi quando abiliti Confidential GKE Node a livello di cluster.

Abilita Confidential GKE Node sui pool di nodi

Puoi abilitare Confidential GKE Node su pool di nodi specifici se Confidential GKE Node è disabilitato a livello di cluster.

Crea un nuovo pool di nodi

Per creare un nuovo pool di nodi con Confidential GKE Node abilitati, esegui questo 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 pool di nodi, che deve essere un tipo di macchina N2D o un tipo di macchina C2D.

Aggiorna un pool di nodi esistente

Puoi abilitare Confidential GKE Node su pool di nodi esistenti che utilizzano il tipo di macchina N2D o il tipo di macchina C2D. 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 tuo pool di nodi.
  • CLUSTER_NAME: il nome del tuo cluster.

Verifica che i nodi Confidential GKE Node siano abilitati

Nei cluster

Puoi verificare che il cluster utilizzi Confidential GKE Node con gcloud CLI o la console Google 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

  1. Vai alla pagina Google Kubernetes Engine nella console Google Cloud.

    Vai a Google Kubernetes Engine

  2. Fai clic sul nome del cluster che vuoi ispezionare.

  3. In Sicurezza, nel campo Confidential GKE Node, verifica che Confidential GKE Node sia Abilitato.

Su pool di nodi

Per verificare che il tuo pool di nodi utilizzi Confidential GKE Node, esegui questo 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

Sui nodi

Per convalidare la riservatezza di nodi specifici, puoi:

  1. Convalida che la SEV AMD sia abilitata oppure
  2. Convalida Confidential VM utilizzando Cloud Monitoring.

Esecuzione di applicazioni su Confidential GKE Node

L'approccio di Google a Confidential Computing prevede un lift and shift senza sforzo per le applicazioni esistenti. I carichi di lavoro GKE che esegui oggi possono essere eseguiti su Confidential GKE Node senza modifiche al codice.

Facoltativamente, se vuoi indicare in modo dichiarativo che i carichi di lavoro devono essere eseguiti solo su cluster con Confidential GKE Node, puoi utilizzare il selettore di nodi cloud.google.com/gke-confidential-nodes. Ecco un esempio di specifica del pod che utilizza questo selettore:

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"

Imposta vincoli dei criteri dell'organizzazione

Puoi definire un vincolo del criterio dell'organizzazione per garantire che tutte le risorse VM create nell'organizzazione siano istanze Confidential VM. Per GKE, puoi personalizzare il vincolo Limita il calcolo non riservato per richiedere che tutti i nuovi cluster vengano creati con Confidential GKE Node abilitati. Aggiungi il nome del servizio API container.googleapis.com all'elenco di tipi non consentiti quando applichi vincoli 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.

Limitazioni

Confidential GKE Node ha le seguenti limitazioni:

Disabilita i nodi Confidential GKE Node

La disabilitazione di Confidential GKE Node funziona solo per i pool di nodi che hanno abilitato Confidential GKE Node. Se il cluster viene creato con Confidential GKE Node, non puoi disabilitare la funzionalità. Esegui questo comando per disabilitare Confidential GKE Node su un pool di nodi:

gcloud container node-pools update NODE_POOL_NAME \
    --cluster=CLUSTER_NAME \
    --no-enable-confidential-nodes

Passaggi successivi