Usare l'interfaccia della riga di comando di Azure per abilitare la crittografia lato server con chiavi gestite dal cliente per i dischi gestiti
Si applica a: ✔️ macchine virtuali Linux ✔️ macchine virtuali Windows ✔️ set di scalabilità flessibili ✔️ set di scalabilità uniformi
Archiviazione su disco di Azure consente di gestire le proprie chiavi quando si usa la crittografia lato server per i dischi gestiti, se si vuole. Per informazioni concettuali sulla crittografia lato server con chiavi gestite dal cliente e su altri tipi di crittografia del disco gestito, vedere la sezione Chiavi gestite dal cliente dell'articolo relativo alla crittografia dei dischi.
Restrizioni
Per il momento, le chiavi gestite dal cliente presentano le restrizioni seguenti:
- Se questa funzionalità è abilitata per un disco con snapshot incrementali, non può essere disabilitata su tale disco o sui relativi snapshot. Per risolvere questo problema, copiare tutti i dati in un disco gestito completamente diverso che non usa chiavi gestite dal cliente. A tale scopo, è possibile usare l'interfaccia della riga di comando di Azure o il modulo di Azure PowerShell.
- Un disco e tutti gli snapshot incrementali associati devono avere lo stesso set di crittografia del disco.
- Solo chiavi RSA software e HSM di dimensioni pari a 2.048 bit, 3.072 bit e 4.096 bit non sono supportate altre chiavi o dimensioni.
- Le chiavi del modulo di protezione hardware richiedono il livello Premium degli insiemi di credenziali delle chiavi di Azure.
- Solo per Dischi Ultra e dischi SSD Premium v2:
- I dischi creati da snapshot crittografati con la crittografia lato server e le chiavi gestite dal cliente devono essere crittografati con lo stesso set di crittografia del disco.
- Le identità gestite assegnate dall'utente non sono supportate per i Dischi Ultra e i dischi SSD Premium v2 crittografati con chiavi gestite dal cliente.
- La crittografia di dischi Ultra e dischi SSD Premium v2 con chiavi gestite dal cliente tramite Azure Key Vault archiviati in un tenant diverso di Microsoft Entra ID non è attualmente supportata.
- La maggior parte delle risorse correlate alle chiavi gestite dal cliente (set di crittografia dischi, macchine virtuali, dischi e snapshot) deve trovarsi nella stessa sottoscrizione e nella stessa area.
- Gli insiemi di credenziali delle chiavi di Azure possono essere usati da una sottoscrizione diversa, ma devono trovarsi nella stessa area del set di crittografia del disco. Come anteprima, è possibile usare Azure Key Vaults da diversi tenant di Microsoft Entra.
- I dischi crittografati con chiavi gestite dal cliente possono passare a un altro gruppo di risorse solo se la macchina virtuale a cui sono collegati è deallocata.
- Non è possibile spostare dischi, snapshot e immagini crittografati con chiavi gestite dal cliente tra sottoscrizioni.
- I dischi gestiti attualmente o precedentemente crittografati con Crittografia dischi di Azure non possono essere crittografati usando chiavi gestite dal cliente.
- È possibile creare fino a 5000 set di crittografia dischi per area per sottoscrizione.
- Per informazioni sull'uso di chiavi gestite dal cliente con raccolte di immagini condivise, vedere Anteprima: Usare chiavi gestite dal cliente per crittografare le immagini.
Creare le risorse
Dopo aver abilitato la funzionalità, è necessario configurare un oggetto DiskEncryptionSet e un'istanza di Azure Key Vault o un HSM gestito di Azure Key Vault.
Azure Key Vault
- Installare l'ultima interfaccia della riga di comando di Azure e accedere a un account Azure con az login.
- Creare un insieme di credenziali delle chiavi di Azure e una chiave di crittografia.
Quando si crea l'insieme di credenziali delle chiavi, è necessario abilitare la protezione dall'eliminazione. La protezione dall'eliminazione garantisce che una chiave eliminata non possa essere eliminata definitivamente fino a quando non scade il periodo di conservazione. Queste impostazioni consentono di evitare la perdita di dati a causa dell'eliminazione accidentale. Queste impostazioni sono obbligatorie quando si usa un insieme di credenziali delle chiavi per la crittografia dei dischi gestiti.
Importante
Non usare la notazione Camel per l'area, altrimenti è possibile che si verifichino problemi durante l'assegnazione di dischi aggiuntivi alla risorsa nel portale di Azure.
subscriptionId=yourSubscriptionID
rgName=yourResourceGroupName
location=westcentralus
keyVaultName=yourKeyVaultName
keyName=yourKeyName
diskEncryptionSetName=yourDiskEncryptionSetName
diskName=yourDiskName
az account set --subscription $subscriptionId
az group create --resource-group $rgName --location $location
az keyvault create -n $keyVaultName \
-g $rgName \
-l $location \
--enable-purge-protection true
az keyvault key create --vault-name $keyVaultName \
-n $keyName \
--protection software
- Creare un oggetto DiskEncryptionSet. È possibile impostare enable-auto-key-rotation uguale a true per abilitare la rotazione automatica della chiave. Quando si abilita la rotazione automatica, il sistema aggiornerà automaticamente tutti i dischi gestiti, gli snapshot e le immagini che fanno riferimento al set di crittografia del disco per usare la nuova versione della chiave entro un'ora.
keyVaultKeyUrl=$(az keyvault key show --vault-name $keyVaultName --name $keyName --query [key.kid] -o tsv)
az disk-encryption-set create -n $diskEncryptionSetName \
-l $location \
-g $rgName \
--key-url $keyVaultKeyUrl \
--enable-auto-key-rotation false
- Concedere al set di crittografia dischi l'accesso all'insieme di credenziali delle chiavi.
Nota
La creazione dell'identità di DiskEncryptionSet nell'ID Microsoft Entra potrebbe richiedere alcuni minuti. Se quando si esegue il comando seguente viene visualizzato un errore simile a "Impossibile trovare l'oggetto Active Directory", attendere qualche minuto e riprovare.
desIdentity=$(az disk-encryption-set show -n $diskEncryptionSetName -g $rgName --query [identity.principalId] -o tsv)
az keyvault set-policy -n $keyVaultName \
-g $rgName \
--object-id $desIdentity \
--key-permissions wrapkey unwrapkey get
Modulo di protezione hardware gestito di Azure Key Vault
In alternativa, è possibile usare un modulo di protezione hardware gestito per gestire le chiavi.
A tale scopo, è necessario completare i prerequisiti seguenti:
- Installare la versione più recente dell'interfaccia della riga di comando di Azure e accedere a un account Azure con az login.
- Creare e configurare un HSM gestito.
- Assegnare autorizzazioni a un utente, in modo da poter gestire il modulo di protezione hardware gestito.
Impostazione
Dopo aver creato un HSM gestito e aver aggiunto le autorizzazioni, abilitare la protezione dall'eliminazione e creare una chiave di crittografia.
subscriptionId=yourSubscriptionID
rgName=yourResourceGroupName
location=westcentralus
keyVaultName=yourKeyVaultName
keyName=yourKeyName
diskEncryptionSetName=yourDiskEncryptionSetName
diskName=yourDiskName
az account set --subscription $subscriptionId
az keyvault update-hsm --subscription $subscriptionId -g $rgName --hsm-name $keyVaultName --enable-purge-protection true
az keyvault key create --hsm-name $keyVaultName --name $keyName --ops wrapKey unwrapKey --kty RSA-HSM --size 2048
Quindi, creare un oggetto DiskEncryptionSet.
keyVaultKeyUrl=$(az keyvault key show --vault-name $keyVaultName --name $keyName --query [key.kid] -o tsv)
az disk-encryption-set create -n $diskEncryptionSetName \
-l $location \
-g $rgName \
--key-url $keyVaultKeyUrl \
--enable-auto-key-rotation false
Infine, concedere all'oggetto DiskEncryptionSet l'accesso all’HSM gestito.
desIdentity=$(az disk-encryption-set show -n $diskEncryptionSetName -g $rgName --query [identity.principalId] -o tsv)
az keyvault role assignment create --hsm-name $keyVaultName --role "Managed HSM Crypto Service Encryption User" --assignee $desIdentity --scope /keys
Dopo aver creato e configurato queste risorse, è possibile usarle per proteggere i dischi gestiti. I collegamenti seguenti contengono script di esempio, ognuno con uno scenario corrispondente, che è possibile usare per proteggere i dischi gestiti.
Esempi
Creare una macchina virtuale con un'immagine del Marketplace, crittografando il disco del sistema operativo e i dischi dati con chiavi gestite dal cliente
rgName=yourResourceGroupName
vmName=yourVMName
location=westcentralus
vmSize=Standard_DS3_V2
image=LinuxImageURN
diskEncryptionSetName=yourDiskencryptionSetName
diskEncryptionSetId=$(az disk-encryption-set show -n $diskEncryptionSetName -g $rgName --query [id] -o tsv)
az vm create -g $rgName -n $vmName -l $location --image $image --size $vmSize --generate-ssh-keys --os-disk-encryption-set $diskEncryptionSetId --data-disk-sizes-gb 128 128 --data-disk-encryption-sets $diskEncryptionSetId $diskEncryptionSetId
Crittografare i dischi gestiti esistenti
I dischi esistenti non devono essere collegati a una macchina virtuale in esecuzione per poterli crittografare usando lo script seguente:
rgName=yourResourceGroupName
diskName=yourDiskName
diskEncryptionSetName=yourDiskEncryptionSetName
az disk update -n $diskName -g $rgName --encryption-type EncryptionAtRestWithCustomerKey --disk-encryption-set $diskEncryptionSetId
Creare un set di scalabilità di macchine virtuali usando un'immagine del Marketplace, crittografando il sistema operativo e i dischi dati con chiavi gestite dal cliente
rgName=yourResourceGroupName
vmssName=yourVMSSName
location=westcentralus
vmSize=Standard_DS3_V2
image=LinuxImageURN
diskEncryptionSetName=yourDiskencryptionSetName
diskEncryptionSetId=$(az disk-encryption-set show -n $diskEncryptionSetName -g $rgName --query [id] -o tsv)
az vmss create -g $rgName -n $vmssName --image $image --upgrade-policy automatic --admin-username azureuser --generate-ssh-keys --os-disk-encryption-set $diskEncryptionSetId --data-disk-sizes-gb 64 128 --data-disk-encryption-sets $diskEncryptionSetId $diskEncryptionSetId
Creare un disco vuoto crittografato usando la crittografia lato server con chiavi gestite dal cliente e associarlo a una macchina virtuale
vmName=yourVMName
rgName=yourResourceGroupName
diskName=yourDiskName
diskSkuName=Premium_LRS
diskSizeinGiB=30
location=westcentralus
diskLUN=2
diskEncryptionSetName=yourDiskEncryptionSetName
diskEncryptionSetId=$(az disk-encryption-set show -n $diskEncryptionSetName -g $rgName --query [id] -o tsv)
az disk create -n $diskName -g $rgName -l $location --encryption-type EncryptionAtRestWithCustomerKey --disk-encryption-set $diskEncryptionSetId --size-gb $diskSizeinGiB --sku $diskSkuName
diskId=$(az disk show -n $diskName -g $rgName --query [id] -o tsv)
az vm disk attach --vm-name $vmName --lun $diskLUN --ids $diskId
Modificare la chiave di un set di crittografia dischi per ruotare la chiave per tutte le risorse che fanno riferimento al set di crittografia dischi
rgName=yourResourceGroupName
keyVaultName=yourKeyVaultName
keyName=yourKeyName
diskEncryptionSetName=yourDiskEncryptionSetName
keyVaultId=$(az keyvault show --name $keyVaultName--query [id] -o tsv)
keyVaultKeyUrl=$(az keyvault key show --vault-name $keyVaultName --name $keyName --query [key.kid] -o tsv)
az disk-encryption-set update -n keyrotationdes -g keyrotationtesting --key-url $keyVaultKeyUrl --source-vault $keyVaultId
Trovare lo stato di crittografia lato server di un disco
az disk show -g yourResourceGroupName -n yourDiskName --query [encryption.type] -o tsv
Importante
Le chiavi gestite dal cliente si basano sulle identità gestite per le risorse di Azure, una funzionalità di Microsoft Entra ID. Quando si configurano le chiavi gestite dal cliente, un'identità gestita viene assegnata automaticamente alle risorse dietro le quinte. Se successivamente si sposta la sottoscrizione, il gruppo di risorse o il disco gestito da una directory di Microsoft Entra a un'altra, l'identità gestita associata ai dischi gestiti non viene trasferita al nuovo tenant, quindi le chiavi gestite dal cliente potrebbero non funzionare più. Per altre informazioni, vedere Trasferimento di una sottoscrizione tra le directory di Microsoft Entra.
Passaggi successivi
- Esplorare i modelli di Azure Resource Manager per la creazione di dischi crittografati con chiavi gestite dal cliente
- Replicare le macchine virtuali con i dischi abilitati per le chiavi gestite dal cliente
- Configurare il ripristino di emergenza di VM VMware in Azure con PowerShell
- Configurare il ripristino di emergenza in Azure per le macchine virtuali Hyper-V tramite PowerShell e Azure Resource Manager
- Per un esempio di codice, vedere Creare un disco gestito da uno snapshot con l'interfaccia della riga di comando.