Avvio attendibile per servizio Azure Kubernetes (servizio Azure Kubernetes)
L'avvio attendibile 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, kernel del sistema operativo e driver verificati e firmati. Tramite l'utilizzo di un avvio con misurazioni e sicuro, gli amministratori ottengono informazioni dettagliate e attendibilità in merito all'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 Trusted Platform Module (TPM) hardware, conforme alla specifica TPM 2.0. Tale modulo funge da insieme di credenziali sicuro dedicato per chiavi e misure. 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 di integrità, l'avvio attendibile può certificare crittograficamente che la macchina virtuale è stata avviata correttamente. Se il processo ha esito negativo, 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: alla base dell'avvio attendibile si trova l’avvio protetto per la macchina virtuale. Questa modalità, che viene implementata nel firmware della piattaforma, protegge dall'installazione di kit avvio e rootkit basati su malware. L'avvio sicuro 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 alcune distribuzioni Linux supportano l'avvio sicuro. Se l'avvio protetto non riesce ad autenticare un'immagine firmata da un autore attendibile, non è consentito 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 eseguireaz upgrade
per aggiornare la versione. Se è necessario eseguire l'installazione o l'aggiornamento, vedere Installare l'interfaccia della riga di comando di Azure. - L'avvio protetto richiede caricatori di avvio, kernel del sistema operativo e driver firmati.
Limiti
- Il servizio Azure Kubernetes supporta l'avvio attendibile nella versione 1.25.2 e successive.
- L'avvio attendibile supporta solo le macchine virtuali di Azure di seconda generazione.
- I nodi del cluster che eseguono il sistema operativo Windows Server non sono supportati.
- L'avvio attendibile non supporta i pool di nodi con FIPS abilitato o basato su Arm64.
- Avvio attendibile non supporta il nodo virtuale.
- I set di disponibilità non sono supportati, fatta eccezione per i 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, vedere Ignorare 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 del sistema operativo temporanee per l'avvio attendibile.
Distribuire un nuovo cluster
Eseguire la procedura seguente per distribuire un cluster del servizio Azure Kubernetes tramite l'interfaccia della riga di comando di Azure.
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 del 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, kernel del sistema operativo e driver firmati. Se dopo aver abilitato l'avvio protetto i nodi non si avviano, è 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 dell’avvio protetto.
L'esempio seguente crea un cluster denominato myAKSCluster con un nodo in myResourceGroup, quindi abilita l'avvio protetto e vTPM:
az aks create \ --name myAKSCluster \ --resource-group myResourceGroup \ --node-count 1 \ --enable-secure-boot \ --enable-vtpm \ --generate-ssh-keys
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 l’avvio attendibile abilitato
Distribuire un pool di nodi con l’avvio attendibile abilitato tramite 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 del 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, kernel del sistema operativo e driver firmati. Se dopo aver abilitato l'avvio protetto i nodi non si avviano, è 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 dell’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 abilitati 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 l’avvio attendibile abilitato tramite 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
Per impostazione predefinita, la creazione di un pool di nodi con una configurazione compatibile con TL genera un'immagine di avvio attendibile. Se non si specificano i parametri --enable-vtpm
o --enable-secure-boot
, questi vengono disabilitati per impostazione predefinita e possono essere abilitati in un secondo momento tramite il comando az aks nodepool update
. Il pool di nodi esistente deve usare un'immagine di avvio attendibile per l'abilitazione in un pool di nodi esistente.
Nota
L'avvio protetto richiede caricatori di avvio, kernel del sistema operativo e driver firmati. Se dopo aver abilitato l'avvio protetto i nodi non si avviano, è 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 dell’avvio protetto.
L'esempio seguente aggiorna il pool di nodi mynodepool nel 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 limitarne l'esecuzione in uno o più nodi specifici o, in alternativa, in nodi con l'avvio attendibile abilitato. È possibile controllare questa operazione tramite il selettore del pool di nodi seguente nel manifesto del pod.
Per un pool di nodi che esegue vTPM, applicare l’operazione seguente:
spec:
nodeSelector:
kubernetes.azure.com/trusted-launch: true
Per un pool di nodi che esegue l'avvio protetto, applicare l’operazione seguente:
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
Gli aggiornamenti avviano automaticamente il re-imaging dei nodi, operazione che può richiedere alcuni minuti per ogni 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.
Azure Kubernetes Service