Crittografare il sistema operativo e i dischi dati collegati in un set di scalabilità di macchine virtuali con l'interfaccia della riga di comando di Azure
L'interfaccia della riga di comando di Azure viene usata per creare e gestire le risorse di Azure dalla riga di comando o negli script. Questa guida introduttiva illustra come usare l'interfaccia della riga di comando di Azure per creare e crittografare un set di scalabilità di macchine virtuali. Per altre informazioni sull'applicazione della crittografia dischi di Azure a un set di scalabilità di macchine virtuali, vedere Crittografia dischi di Azure per set di scalabilità di macchine virtuali.
Prerequisiti
Usare l'ambiente Bash in Azure Cloud Shell. Per altre informazioni, vedere Avvio rapido su Bash in Azure Cloud Shell.
Se si preferisce eseguire i comandi di riferimento dell'interfaccia della riga di comando in locale, installare l'interfaccia della riga di comando di Azure. Per l'esecuzione in Windows o macOS, è consigliabile eseguire l'interfaccia della riga di comando di Azure in un contenitore Docker. Per altre informazioni, vedere Come eseguire l'interfaccia della riga di comando di Azure in un contenitore Docker.
Se si usa un'installazione locale, accedere all'interfaccia della riga di comando di Azure con il comando az login. Per completare il processo di autenticazione, seguire la procedura visualizzata nel terminale. Per altre opzioni di accesso, vedere Accedere tramite l'interfaccia della riga di comando di Azure.
Quando richiesto, al primo utilizzo installare l'estensione dell'interfaccia della riga di comando di Azure. Per altre informazioni sulle estensioni, vedere Usare le estensioni con l'interfaccia della riga di comando di Azure.
Eseguire az version per trovare la versione e le librerie dipendenti installate. Per eseguire l'aggiornamento alla versione più recente, eseguire az upgrade.
- Questo articolo richiede la versione 2.0.31 dell'interfaccia della riga di comando di Azure. Se si usa Azure Cloud Shell, la versione più recente è già installata.
Creare un set di scalabilità
Per poter creare un set di scalabilità, è prima necessario creare un gruppo di risorse con il comando az group create. L'esempio seguente crea un gruppo di risorse denominato myResourceGroup nella posizione eastus:
az group create --name myResourceGroup --location eastus
Si può ora creare un set di scalabilità di macchine virtuali con il comando az vmss create. L'esempio seguente crea un set di scalabilità denominato myScaleSet impostato per l'aggiornamento automatico man mano che vengono applicate le modifiche e genera chiavi SSH se non esistono in ~/.ssh/id_rsa. Un disco dati da 32 GB è collegato a ogni istanza di macchina virtuale e l'estensione script personalizzata di Azure viene usata per preparare i dischi dati con az vmss extension set:
Importante
Assicurarsi di selezionare il sistema operativo supportato con ADE. Sistema operativo supportato per AdE.
# Create a scale set with attached data disk
az vmss create \
--resource-group myResourceGroup \
--name myScaleSet \
--orchestration-mode Flexible \
--image <SKU Linux Image> \
--admin-username azureuser \
--generate-ssh-keys \
--data-disk-sizes-gb 32
# Prepare the data disk for use with the Custom Script Extension
az vmss extension set \
--publisher Microsoft.Azure.Extensions \
--version 2.0 \
--name CustomScript \
--resource-group myResourceGroup \
--vmss-name myScaleSet \
--settings '{"fileUris":["https://raw.githubusercontent.com/Azure-Samples/compute-automation-configurations/master/prepare_vm_disks.sh"],"commandToExecute":"./prepare_vm_disks.sh"}'
La creazione e la configurazione di tutte le macchine virtuali e risorse del set di scalabilità richiedono alcuni minuti.
Creare un insieme di credenziali delle chiavi di Azure abilitato per la crittografia dei dischi
L'insieme di credenziali delle chiavi di Azure consente di archiviare chiavi, chiavi private o password da implementare in tutta sicurezza in applicazioni e servizi. Le chiavi di crittografia vengono archiviate in Azure Key Vault che usa la protezione del software oppure è possibile importare o generare le chiavi in moduli di protezione hardware certificati per gli standard FIPS 140 convalidati. Queste chiavi di crittografia vengono usate per crittografare e decrittografare i dischi virtuali collegati alla VM. È possibile esercitare il controllo su queste chiavi di crittografia e sul loro uso.
Definire un nome_keyvault univoco. Creare quindi un KeyVault con il comando az keyvault create nella stessa sottoscrizione e nella stessa area del set di scalabilità e impostare il criterio di accesso --enabled-for-disk-encryption.
# Provide your own unique Key Vault name
keyvault_name=myuniquekeyvaultname
# Create Key Vault
az keyvault create --resource-group myResourceGroup --name $keyvault_name --enabled-for-disk-encryption
Usare un insieme di credenziali delle chiavi esistente
Questo passaggio è necessario solo se si vuole usare un insieme di credenziali delle chiavi già esistente con la crittografia dei dischi. Ignorare questo passaggio se si è creato un insieme di credenziali delle chiavi nella sezione precedente.
Definire un nome_keyvault univoco. Aggiornare quindi il KeyVault con az keyvault update e impostare il criterio di accesso --enabled-for-disk-encryption.
# Provide your own unique Key Vault name
keyvault_name=myuniquekeyvaultname
# Create Key Vault
az keyvault update --name $keyvault_name --enabled-for-disk-encryption
Abilitare la crittografia
Nota
Se si usa set di scalabilità di macchine virtuali in modalità di orchestrazione flessibile, verranno crittografate solo le nuove istanze. Le istanze esistenti nel set di scalabilità dovranno essere crittografate singolarmente o rimosse e sostituite.
Per crittografare le istanze di macchine virtuali in un set di scalabilità, ottenere prima alcune informazioni sull'ID risorsa dell'insieme di credenziali delle chiavi con az keyvault show. Queste variabili vengono quindi usate per avviare il processo di crittografia con il comando az vmss encryption enable:
# Get the resource ID of the Key Vault
vaultResourceId=$(az keyvault show --resource-group myResourceGroup --name $keyvault_name --query id -o tsv)
# Enable encryption of the data disks in a scale set
az vmss encryption enable \
--resource-group myResourceGroup \
--name myScaleSet \
--disk-encryption-keyvault $vaultResourceId \
--volume-type DATA
L'avvio del processo di crittografia potrebbe richiedere un minuto o due.
Poiché il criterio di aggiornamento per il set di scalabilità creato in un passaggio precedente è impostato come automatico, le istanze di macchine virtuali avviano automaticamente il processo di crittografia. Nei set di scalabilità in cui il criterio di aggiornamento è manuale, avviare il criterio di crittografia nelle istanze di macchine virtuali con az vmss update-instances.
Abilitare la crittografia con la chiave di crittografia della chiave per eseguire il wrapping della chiave
Per maggiore sicurezza è anche possibile usare una chiave di crittografia della chiave durante la crittografia del set di scalabilità di macchine virtuali.
# Get the resource ID of the Key Vault
vaultResourceId=$(az keyvault show --resource-group myResourceGroup --name $keyvault_name --query id -o tsv)
# Enable encryption of the data disks in a scale set
az vmss encryption enable \
--resource-group myResourceGroup \
--name myScaleSet \
--disk-encryption-keyvault $vaultResourceId \
--key-encryption-key myKEK \
--key-encryption-keyvault $vaultResourceId \
--volume-type DATA
Nota
La sintassi per il valore del parametro disk-encryption-keyvault è la stringa dell'identificatore completo:
/subscriptions/[subscription-id-guid]/resourceGroups/[resource-group-name]/providers/Microsoft.KeyVault/vaults/[keyvault-name]
La sintassi per il valore del parametro key-encryption-key è l'URI completo della chiave KEK come in:
https://[keyvault-name].vault.azure.net/keys/[kekname]/[kek-unique-id]
Verificare lo stato della crittografia
Per controllare lo stato della crittografia dei dischi, usare az vmss encryption show:
az vmss encryption show --resource-group myResourceGroup --name myScaleSet
Quando le istanze di macchine virtuali sono crittografate, il codice di stato indica EncryptionState/encrypted, come mostrato nell'output di esempio seguente:
[
{
"disks": [
{
"encryptionSettings": null,
"name": "myScaleSet_myScaleSet_0_disk2_3f39c2019b174218b98b3dfae3424e69",
"statuses": [
{
"additionalProperties": {},
"code": "EncryptionState/encrypted",
"displayStatus": "Encryption is enabled on disk",
"level": "Info",
"message": null,
"time": null
}
]
}
],
"id": "/subscriptions/guid/resourceGroups/MYRESOURCEGROUP/providers/Microsoft.Compute/virtualMachineScaleSets/myScaleSet/virtualMachines/0",
"resourceGroup": "MYRESOURCEGROUP"
}
]
Disabilitare la crittografia
Se non si vogliono più usare i dischi delle istanze di macchine virtuali crittografate, è possibile disabilitare la crittografia con az vmss encryption disable, come segue:
az vmss encryption disable --resource-group myResourceGroup --name myScaleSet
Passaggi successivi
- In questo articolo è stata usata l'interfaccia della riga di comando di Azure per crittografare un set di scalabilità di macchine virtuali. È anche possibile usare Azure PowerShell o i modelli di Azure Resource Manager.
- Se si vuole che Crittografia dischi di Azure venga applicato dopo il provisioning di un'altra estensione, è possibile usare la sequenziazione delle estensioni.
- Un esempio di file batch end-to-end per la crittografia del disco dati del set di scalabilità di Linux è disponibile qui. Questo esempio crea un gruppo di risorse, un set di scalabilità Linux, monta un disco dati da 5 GB e crittografa il set di scalabilità di macchine virtuali.