Usare le macchine virtuali riservate (CVM) in un cluster di Servizio Azure Kubernetes (AKS)

Confidential Macchine virtuali (CVMs) offrono sicurezza e riservatezza avanzate per i tenant. Le macchine virtuali basate su VM offrono un ambiente di esecuzione protetta (Hardware Trusted Execution Environment) che sfrutta le funzionalità di sicurezza SEV-SNP per impedire l'accesso dell'hypervisor e di altri codici di gestione dell'host alla memoria e allo stato della macchina virtuale, fornendo una protezione approfondita contro l'accesso degli operatori. Queste funzionalità consentono ai pool di nodi con CVM di indirizzare la migrazione di carichi di lavoro di contenitori estremamente sensibili al servizio Azure Kubernetes senza eseguire il refactoring del codice sfruttando al contempo le funzionalità del servizio Azure Kubernetes. Ad esempio, potrebbe essere necessario disporre di CVM nei seguenti casi:

  • Carichi di lavoro che gestiscono dati critici per la sicurezza e/o dati sensibili dei clienti
  • Servizi necessari per soddisfare vari requisiti di conformità, in particolare per i contratti governativi. Senza una soluzione scalabile per la protezione dei dati, ciò potrebbe causare la perdita di accreditamento e contratti.

In questo articolo, imparerai come creare pool di nodi nel servizio Azure Kubernetes usando dimensioni di macchine virtuali riservate e confidenziali.

Dimensioni di macchine virtuali confidenziali supportate da AKS

Azure offre una scelta di opzioni TEE (Trusted Execution Environment) sia da AMD che da Intel. Questi TEE consentono di creare ambienti di macchine virtuali riservati con ottimi rapporti di prezzo-prestazioni, senza richiedere modifiche al codice.

  • Le macchine virtuali riservate basate su AMD usano la tecnologia AMD SEV-SNP, introdotta con processori AMD EPYC™ di terza generazione.
  • Le macchine virtuali riservate basate su Intel usano Intel TDX, con processori Intel® Xeon® di quarta generazione.

Annotazioni

Le macchine virtuali riservate basate su Intel TDX non sono attualmente supportate nel servizio Azure Kubernetes.

Per altre informazioni, vedere Dimensioni delle macchine virtuali CVM.

Funzionalità di sicurezza

La CVM offre i seguenti miglioramenti di sicurezza rispetto ad altre misure delle macchine virtuali:

  • Isolamento affidabile basato su hardware tra macchine virtuali, hypervisor e codice di gestione host.
  • Criteri di attestazione personalizzabili per garantire la conformità dell'host prima della distribuzione.
  • Chiavi di crittografia della macchina virtuale che la piattaforma o il cliente (facoltativamente) possiede e gestisce.
  • Versione della chiave sicura con l'associazione crittografica tra l'attestazione corretta della piattaforma e le chiavi di crittografia della macchina virtuale.
  • Istanza TPM (Virtual Trusted Platform Module) dedicata per l'attestazione e la protezione di chiavi e segreti nella macchina virtuale.
  • Funzionalità di avvio sicuro simili all'avvio attendibile per le macchine virtuali di Azure

Come funziona?

Se si esegue un carico di lavoro che richiede una maggiore riservatezza e integrità, è possibile trarre vantaggio dalla crittografia della memoria e dalla sicurezza avanzata senza modifiche al codice nell'applicazione. Tutti i pod sul nodo CVM sono parte dello stesso ambito di attendibilità. I nodi in un pool di nodi creati con le macchine virtuali usano un'immagine del nodo personalizzata configurata appositamente per le macchine virtuali.

Versioni del sistema operativo supportate

È possibile creare pool di nodi CVM in tipi di sistema operativo Linux (Ubuntu e Linux di Azure). Tuttavia, non tutte le versioni del sistema operativo supportano pool di nodi CVM.

Questa tabella include le versioni del sistema operativo supportate:

Tipo di sistema operativo SKU del sistema operativo Supporto CVM CVM predefinito
Linux Ubuntu Sostenuto Ubuntu 20.04 è l'impostazione predefinita per Kubernetes versione 1.24-1.33. Ubuntu 24.04 è l'impostazione predefinita per Kubernetes versione 1.34-1.38.
Linux Ubuntu2204 Non supportato AKS non supporta CVM per Ubuntu 22.04.
Linux Ubuntu2404 Sostenuto CVM è supportato su Ubuntu2404 in Kubernetes 1.32-1.38.
Linux AzureLinux Supportato in Azure Linux 3.0 Azure Linux 3 è l'impostazione predefinita quando si abilita CVM per Kubernetes versione 1.28-1.36.
Linux flatcar Non supportato Flatcar Container Linux per AKS non supporta CVM.
Linux AzureLinuxOSGuard Non supportato Azure Linux con OS Guard per AKS non supporta CVM.
Linux AzureContainerLinux Non supportato Azure Contenitore Linux (ACL) non supporta CVM.
Windows Tutti gli SKU del sistema operativo Windows Non supportato N/A

Quando si usa Ubuntu o AzureLinux come osSKU, se la versione predefinita del sistema operativo non supporta le CVM, AKS passa automaticamente alla versione più recente del sistema operativo supportata da CVM. Ad esempio, Ubuntu 22.04 è l'impostazione predefinita per i pool di nodi Linux. Poiché la versione 22.04 attualmente non supporta le CVM, AKS usa Ubuntu 20.04 per impostazione predefinita per i pool di nodi Linux abilitati per CVM.

Limitazioni

Quando si aggiunge un pool di nodi con CVM al servizio Azure Kubernetes, si applicano le limitazioni seguenti:

  • Non è possibile usare FIPS, ARM64, l'avvio attendibile o il sandboxing dei pod.
  • Non è possibile aggiornare un pool di nodi esistente per eseguire la migrazione a una dimensione CVM. Per eseguire la migrazione, è necessario ridimensionare il pool di nodi.
  • Non è possibile usare cvm con pool di nodi Windows.
  • I cvm con Azure Linux sono attualmente in anteprima.
  • Azure Container Linux (ACL) al momento non supporta i pool di nodi CVM in AKS.

Prerequisiti

Prima di iniziare, verificare di disporre di quanto segue:

  • Un cluster del servizio Azure Kubernetes pre-esistente.
  • Le dimensioni CVM devono essere disponibili per la sottoscrizione nell'area in cui viene creato il cluster. È necessario disporre di una quota sufficiente per creare un pool di nodi con dimensioni CVM.
  • Se si usa il sistema operativo Linux di Azure, è necessario installare l'estensione aks-preview , aggiornare l'estensione aks-preview e registrare il flag di funzionalità di anteprima. Se si usa Ubuntu, è possibile ignorare questi passaggi.

Se si usa Azure Linux

Le macchine virtuali classiche per Ubuntu sono disponibili a livello generale, ma quelle per Linux di Azure sono ancora in anteprima. Se si vogliono usare pool di nodi CVM con Azure Linux come sistema operativo preferito, assicurarsi di abilitare l'estensione e registrare il flag.

Installare l'estensione aks-preview

  1. Installare l'estensione CLI di Azure utilizzando il comando aks-preview.

    Importante

    Le funzionalità di anteprima di AKS sono disponibili su base self-service, su scelta. Le anteprime vengono fornite "così come sono" e "come disponibili" e sono escluse dai contratti di servizio e dalla garanzia limitata. Le anteprime del servizio Azure Kubernetes sono parzialmente coperte dal supporto clienti con la massima diligenza possibile. Di conseguenza, queste funzionalità non sono destinate all'uso in produzione. Per altre informazioni, vedere gli articoli di supporto seguenti:

    az extension add --name aks-preview
    
  2. Eseguire l'aggiornamento alla versione più recente dell'estensione usando il comando az extension update.

    az extension update --name aks-preview
    

Registrare il flag di funzionalità AzureLinuxCVMPreview

  1. Registrare il flag della funzionalità AzureLinuxCVMPreview usando il comando az feature register.

    az feature register --namespace "Microsoft.ContainerService" --name "AzureLinuxCVMPreview"
    
  2. Verificare lo stato della registrazione usando il comando az feature show. Sono necessari alcuni minuti per visualizzare lo stato Registered.

    az feature show --namespace Microsoft.ContainerService --name AzureLinuxCVMPreview
    
  3. Quando lo stato riflette Registrato, aggiornare la registrazione del provider di risorse Microsoft.ContainerService usando il comando az provider register.

    az provider register --namespace Microsoft.ContainerService
    

Aggiungere un pool di nodi con un CVM al cluster AKS

Aggiungere un pool di nodi con un CVM al cluster del servizio Azure Kubernetes utilizzando il comando az aks nodepool add e impostare node-vm-size su una dimensione di macchina virtuale supportata.

az aks nodepool add \
    --resource-group myResourceGroup \
    --cluster-name myAKSCluster \
    --name cvmnodepool \
    --node-count 3 \
    --node-vm-size Standard_DC4as_v5 

Se non si specifica osSKU o osType, AKS per impostazione predefinita è --os-type Linux e --os-sku Ubuntu.

Aggiornare un pool di nodi esistente con cvm a Ubuntu 24.04

Aggiornare un pool di nodi esistente con cvm a Ubuntu 24.04 da Ubuntu 20.04 usando il az aks nodepool update comando . Impostare os-sku come Ubuntu2404.

az aks nodepool update \
    --resource-group myResourceGroup \
    --cluster-name myAKSCluster \
    --name cvmnodepool \
    --os-sku Ubuntu2404

Annotazioni

Un pool di nodi Ubuntu 24.04 con una CVM è supportato dalla versione 1.33 del cluster del servizio Azure Kubernetes. Inoltre, prima che Ubuntu 24.04 diventi disponibile a livello generale, è necessario registrare la Ubuntu2404Preview funzionalità. Per altre informazioni, vedere here per registrare la funzionalità.

Verificare che il pool di nodi usi cvm

  1. Verificare che un pool di nodi utilizzi le CVM utilizzando il comando az aks nodepool show e verificare che vmSize sia Standard_DCa4_v5.

    az aks nodepool show \
        --resource-group myResourceGroup \
        --cluster-name myAKSCluster \
        --name cvmnodepool \
        --query 'vmSize'
    

    Il comando e l'output di esempio seguenti illustrano che il pool di nodi usa CVM:

    az aks nodepool show \
        --resource-group myResourceGroup \
        --cluster-name myAKSCluster \
        --name cvmnodepool \
        --query 'vmSize'
    
    "Standard_DC4as_v5"
    
  2. Verificare che un pool di nodi usi un'immagine CVM usando il az aks nodepool list comando .

    az aks nodepool list \
        --resource-group myResourceGroup \
        --cluster-name myAKSCluster \
        --name cvmnodepool \
        --query 'nodeImageVersion'
    

    Il comando e l'output di esempio seguenti illustrano che il pool di nodi usa un'immagine CVM Ubuntu 20.04:

    az aks nodepool show \
        --resource-group myResourceGroup \
        --cluster-name myAKSCluster \
        --name cvmnodepool \
        --query 'nodeImageVersion'
    
    "AKSUbuntu-2004cvmcontainerd-202507.02.0"
    

Rimuovere un pool di nodi con CVM da un cluster AKS

Rimuovere un pool di nodi con CVM da un cluster del servizio Azure Kubernetes usando il az aks nodepool delete comando .

az aks nodepool delete \
    --resource-group myResourceGroup \
    --cluster-name myAKSCluster \
    --name cvmnodepool

In questo articolo si è appreso come aggiungere un pool di nodi con CVM a un cluster del servizio Azure Kubernetes.