Avvio attendibile (anteprima) per servizio Azure Kubernetes (servizio Azure Kubernetes)

L'avvio attendibile (anteprima) migliora la sicurezza delle macchine virtuali di seconda generazione proteggendo da tecniche di attacco avanzate e persistenti. Consente agli amministratori di distribuire nodi del servizio Azure Kubernetes, che contengono le macchine virtuali sottostanti, con bootloader verificati e firmati, kernel del sistema operativo e driver. Usando l'avvio sicuro e misurato, gli amministratori ottengono informazioni dettagliate e attendibilità dell'integrità dell'intera catena di avvio.

Questo articolo aiuta a comprendere questa nuova funzionalità e a come implementarla.

Panoramica

L'avvio attendibile è costituito da diverse tecnologie di infrastruttura coordinate che possono essere abilitate in modo indipendente. Ogni tecnologia offre un altro livello di difesa contro minacce sofisticate.

  • vTPM : l'avvio attendibile introduce una versione virtualizzata di un modulo TPM (Trusted Platform Module ), conforme alla specifica TPM 2.0. Funge da insieme di credenziali sicuro dedicato per chiavi e misurazioni. L'avvio attendibile fornisce alla macchina virtuale una propria istanza TPM dedicata, in esecuzione in un ambiente sicuro all'esterno della copertura di qualsiasi macchina virtuale. VTPM abilita l'attestazione misurando l'intera catena di avvio della macchina virtuale (UEFI, sistema operativo, sistema e driver). L'avvio attendibile usa vTPM per eseguire l'attestazione remota dal cloud. Viene usato per i controlli di integrità della piattaforma e per prendere decisioni basate sull'attendibilità. Come controllo dell'integrità, l'avvio attendibile può certificare crittograficamente che la macchina virtuale è stata avviata correttamente. Se il processo non riesce, probabilmente perché la macchina virtuale esegue un componente non autorizzato, Microsoft Defender per il cloud genera avvisi di integrità. Gli avvisi includono i dettagli sui componenti che non sono riusciti a superare i controlli di integrità.

  • Avvio protetto: nella radice dell'avvio attendibile è Avvio protetto per la macchina virtuale. Questa modalità, implementata nel firmware della piattaforma, protegge dall'installazione di rootkit e kit di avvio basati su malware. L'avvio protetto funziona per garantire che solo i sistemi operativi e i driver firmati possano essere avviati. Stabilisce una "radice di attendibilità" per lo stack software nella macchina virtuale. Con l'avvio protetto abilitato, tutti i componenti di avvio del sistema operativo (caricatore di avvio, kernel, driver kernel) devono essere firmati da autori attendibili. Sia Windows che le distribuzioni Linux supportano l'avvio protetto. Se l'avvio protetto non riesce a autenticare un'immagine firmata da un autore attendibile, non è consentita l'avvio della macchina virtuale. Per altre informazioni, vedere Avvio protetto.

Operazioni preliminari

  • Interfaccia della riga di comando di Azure versione 2.44.1 o successiva. Eseguire az --version per trovare la versione ed eseguire az upgrade per aggiornare la versione. Se è necessario eseguire l'installazione o l'aggiornamento, vedere Installare l'interfaccia della riga di comando di Azure.

  • Estensione dell'interfaccia della aks-preview riga di comando di Azure versione 1.0.0b6 o successiva.

  • Registrare la funzionalità TrustedLaunchPreview nella sottoscrizione di Azure.

  • Il servizio Azure Kubernetes supporta l'avvio attendibile (anteprima) nella versione 1.25.2 e successive.

  • L'avvio attendibile supporta solo le macchine virtuali di seconda generazione di Azure.

  • L'avvio protetto richiede caricatori di avvio firmati, kernel del sistema operativo e driver.

Installare l'estensione dell'interfaccia della riga di comando di Azure aks-preview

Importante

Le funzionalità di anteprima del servizio Azure Kubernetes sono disponibili in modalità self-service e di consenso esplicito. 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:

Per installare l'estensione aks-preview, eseguire il comando seguente:

az extension add --name aks-preview

Per eseguire l'aggiornamento alla versione più recente dell'estensione rilasciata eseguire il comando seguente:

az extension update --name aks-preview

Registrare il flag di funzionalità TrustedLaunchPreview

Registrare il flag di funzionalità TrustedLaunchPreview usando il comando az feature register, come mostrato nell'esempio seguente:

az feature register --namespace "Microsoft.ContainerService" --name "TrustedLaunchPreview"

Sono necessari alcuni minuti per visualizzare lo stato Registered. Verificare lo stato della registrazione usando il comando az feature show:

az feature show --namespace "Microsoft.ContainerService" --name "TrustedLaunchPreview"

Quando lo stato è su Registrato, aggiornare la registrazione del provider di risorse Microsoft.ContainerService usando il comando az provider register:

az provider register --namespace "Microsoft.ContainerService"

Limiti

  • I nodi del cluster che eseguono il sistema operativo Windows Server non sono supportati.
  • L'avvio attendibile (anteprima) non supporta i pool di nodi con FIPS abilitato o basato su ARM64.
  • I set di disponibilità non sono supportati, ma solo set di scalabilità di macchine virtuali.
  • Per abilitare l'avvio protetto nei pool di nodi GPU, è necessario ignorare l'installazione del driver GPU. Per altre informazioni, vedereIgnorare l'installazione del driver GPU.
  • I dischi temporanei del sistema operativo possono essere creati con l'avvio attendibile e tutte le aree sono supportate. Tuttavia, non tutte le dimensioni delle macchine virtuali sono supportate. Per altre informazioni, vedere Dimensioni temporanee del sistema operativo di avvio attendibili.

Distribuire un nuovo cluster

Eseguire la procedura seguente per distribuire un cluster del servizio Azure Kubernetes usando l'interfaccia della riga di comando di Azure.

  1. Creare un cluster del servizio Azure Kubernetes usando il comando crare az ask. Prima di eseguire il comando, esaminare i parametri seguenti:

    • --name: immettere un nome univoco per il cluster del servizio Azure Kubernetes, ad esempio myAKSCluster.
    • --resource-group: immettere il nome di un gruppo di risorse esistente per ospitare la risorsa cluster del servizio Azure Kubernetes.
    • --enable-secure-boot: abilita l'avvio protetto per autenticare un'immagine firmata da un autore attendibile.
    • --enable-vtpm: abilita vTPM ed esegue l'attestazione misurando l'intera catena di avvio della macchina virtuale.

    Nota

    L'avvio protetto richiede caricatori di avvio firmati, kernel del sistema operativo e driver. Se dopo aver abilitato l'avvio protetto, i nodi non vengono avviati, è possibile verificare quali componenti di avvio sono responsabili degli errori di avvio protetto all'interno di una macchina virtuale Linux di Azure. Vedere Verificare gli errori di avvio protetto.

    L'esempio seguente crea un cluster denominato myAKSCluster con un nodo in myResourceGroup e abilita l'avvio protetto e vTPM:

    az aks create --name myAKSCluster --resource-group myResourceGroup --node-count 1 --enable-secure-boot --enable-vtpm --enable-managed-identity --generate-ssh-keys
    
  2. Eseguire il comando seguente per ottenere le credenziali di accesso per il cluster Kubernetes. Usare il comando az aks get-credentials e sostituire i valori del nome del cluster e il nome del gruppo di risorse.

    az aks get-credentials --resource-group myResourceGroup --name myAKSCluster
    

Aggiungere un pool di nodi con avvio attendibile abilitato

Distribuire un pool di nodi con avvio attendibile abilitato usando il comando az aks nodepool add . Prima di eseguire il comando, esaminare i parametri seguenti:

  • --cluster-name: immettere il nome del cluster del servizio Azure Kubernetes.
  • --resource-group: immettere il nome di un gruppo di risorse esistente per ospitare la risorsa cluster del servizio Azure Kubernetes.
  • --name: immettere un nome univoco per il pool di nodi. Il nome di un pool di nodi può contenere solo caratteri alfanumerici minuscoli e deve iniziare con una lettera minuscola. Per i pool di nodi Linux, la lunghezza deve essere compresa tra 1 e 11 caratteri.
  • --node-count: numero di nodi nel pool di agenti Kubernetes. Il valore predefinito è 3.
  • --enable-secure-boot: abilita l'avvio protetto per autenticare l'immagine firmata da un autore attendibile.
  • --enable-vtpm: abilita vTPM ed esegue l'attestazione misurando l'intera catena di avvio della macchina virtuale.

Nota

L'avvio protetto richiede caricatori di avvio firmati, kernel del sistema operativo e driver. Se dopo aver abilitato l'avvio protetto, i nodi non vengono avviati, è possibile verificare quali componenti di avvio sono responsabili degli errori di avvio protetto all'interno di una macchina virtuale Linux di Azure. Vedere Verificare gli errori di avvio protetto.

L'esempio seguente distribuisce un pool di nodi con vTPM abilitato in un cluster denominato myAKSCluster con tre nodi:

az aks nodepool add --resource-group myResourceGroup -–cluster-name myAKSCluster --name mynodepool --node-count 3 --enable-vtpm  

L'esempio seguente distribuisce un pool di nodi con vTPM e Avvio protetto abilitato in un cluster denominato myAKSCluster con tre nodi:

az aks nodepool add --resource-group myResourceGroup --cluster-name myAKSCluster --name mynodepool --node-count 3 --enable-vtpm --enable-secure-boot

Aggiornare il cluster e abilitare l'avvio attendibile

Aggiornare un pool di nodi con avvio attendibile abilitato usando il comando az aks nodepool update . Prima di eseguire il comando, esaminare i parametri seguenti:

  • --resource-group: immettere il nome di un gruppo di risorse esistente che ospita il cluster del servizio Azure Kubernetes esistente.
  • --cluster-name: immettere un nome univoco per il cluster del servizio Azure Kubernetes, ad esempio myAKSCluster.
  • --name: immettere il nome del pool di nodi, ad esempio mynodepool.
  • --enable-secure-boot: abilita l'avvio protetto per autenticare che l'immagine è stata firmata da un autore attendibile.
  • --enable-vtpm: abilita vTPM ed esegue l'attestazione misurando l'intera catena di avvio della macchina virtuale.

Nota

Il pool di nodi esistente deve usare un'immagine di avvio attendibile per abilitare in un pool di nodi esistente. Di conseguenza, per i pool di nodi creati prima di registrare la TrustedLaunchPreview funzionalità, non è possibile aggiornarli con l'avvio attendibile abilitato.

Per impostazione predefinita, la creazione di un pool di nodi con una configurazione compatibile con TL e il flag di funzionalità registrato genera un'immagine di avvio attendibile. Senza specificare --enable-vtpm o --enable-secure-boot parametri, questi vengono disabilitati per impostazione predefinita ed è possibile abilitarli in un secondo momento usando il az aks nodepool update comando .

Nota

L'avvio protetto richiede caricatori di avvio firmati, kernel del sistema operativo e driver. Se dopo aver abilitato l'avvio protetto, i nodi non vengono avviati, è possibile verificare quali componenti di avvio sono responsabili degli errori di avvio protetto all'interno di una macchina virtuale Linux di Azure. Vedere Verificare gli errori di avvio protetto.

L'esempio seguente aggiorna il pool di nodi mynodepool in myAKSCluster in myResourceGroup e abilita Avvio protetto e vTPM:

az aks nodepool update --cluster-name myCluster --resource-group myResourceGroup --name mynodepool --enable-secure-boot --enable-vtpm 

Assegnare pod ai nodi con avvio attendibile abilitato

È possibile vincolare un pod e limitarlo per l'esecuzione in un nodo o in nodi specifici o preferenza per i nodi con avvio attendibile abilitato. È possibile controllare questa operazione usando il selettore del pool di nodi seguente nel manifesto del pod.

Per un pool di nodi che esegue vTPM, applicare quanto segue:

spec:
  nodeSelector:
        kubernetes.azure.com/trusted-launch: true

Per un pool di nodi che esegue l'avvio protetto, applicare quanto segue:

spec:
  nodeSelector:
        kubernetes.azure.com/secure-boot: true

Disabilitare l'avvio protetto

Per disabilitare l'avvio protetto in un cluster del servizio Azure Kubernetes, eseguire il comando seguente:

az aks nodepool update --cluster-name myCluster --resource-group myResourceGroup --name mynodepool --disable-secure-boot 

Nota

Aggiornamenti avviare automaticamente una ricreazione dell'immagine di un nodo e questa operazione può richiedere alcuni minuti per nodo.

Disabilitare vTPM

Per disabilitare vTPM in un cluster del servizio Azure Kubernetes, eseguire il comando seguente:

az aks nodepool update --cluster-name myCluster --resource-group myResourceGroup --name mynodepool --disable-vtpm

Passaggi successivi

In questo articolo si è appreso come abilitare l'avvio attendibile. Altre informazioni sull'avvio attendibile.