Usare l'interfaccia della riga di comando di Azure per abilitare la crittografia end-to-end usando la crittografia nell'host
Si applica a: ✔️ macchine virtuali di Linux ✔️ set di scalabilità flessibili
Quando si abilita la crittografia nell'host, i dati archiviati nell'host della macchina virtuale vengono crittografati inattivi e i flussi crittografati nel servizio di archiviazione. Per informazioni concettuali sulla crittografia nell'host e su altri tipi di crittografia del disco gestito, vedere Crittografia nell'host - Crittografia end-to-end per i dati della macchina virtuale.
Restrizioni
- Supportato per le dimensioni del settore 4k Ultra e SSD Premium v2.
- Supportato solo su Ultra SSD di dimensioni settore 512e e SSD Premium v2 se sono stati creati dopo il 13/5/2023.
- Per i dischi creati prima di questa data, eseguire uno snapshot del disco e creare un nuovo disco usando lo snapshot.
- Non è possibile abilitarla su macchine virtuali o set di scalabilità di macchine virtuali su cui è o è stata abilitata la Crittografia dischi di Azure.
- Crittografia dischi di Azure non può essere abilitata nei dischi in cui è abilitata la crittografia nell'host.
- La crittografia può essere abilitata nei set di scalabilità di macchine virtuali esistenti. Tuttavia, solo le nuove macchine virtuali create dopo l'abilitazione della crittografia vengono crittografate automaticamente.
- Le macchine virtuali esistenti devono essere deallocate e riallocate per poter essere crittografate.
Dimensioni delle macchine virtuali supportate
È possibile eseguire il pull dell'elenco completo delle dimensioni delle macchine virtuali supportate a livello di codice. Per informazioni su come eseguirne il recupero a livello di codice, consultare la sezione Ricerca delle dimensioni delle macchine virtuali supportate. L'aggiornamento delle dimensioni della macchina virtuale comporta la convalida per verificare se le nuove dimensioni supportano la funzionalità EncryptionAtHost.
Prerequisiti
È necessario abilitare la funzionalità per la sottoscrizione prima di usare la proprietà EncryptionAtHost per la macchina virtuale o il set di scalabilità di macchine virtuali. Per abilitare la funzionalità per la sottoscrizione, seguire questa procedura:
- Eseguire il comando seguente per registrare la funzionalità per la sottoscrizione
az feature register --namespace Microsoft.Compute --name EncryptionAtHost
- Verificare che lo stato di registrazione sia Registrato (richiede alcuni minuti) usando il comando seguente prima di provare la funzionalità.
az feature show --namespace Microsoft.Compute --name EncryptionAtHost
Creare le risorse
Nota
Questa sezione si applica solo alle configurazioni con chiavi gestite dal cliente. Se si usano chiavi gestite dalla piattaforma, è possibile passare alla sezione Script di esempio.
Dopo aver abilitato la funzionalità, è necessario configurare un oggetto DiskEncryptionSet e un 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
Script di esempio
Creare una macchina virtuale con crittografia abilitata per l'host con chiavi gestite dal cliente
Creare una macchina virtuale con dischi gestiti usando l'URI della risorsa DiskEncryptionSet creata in precedenza per crittografare la cache dei dischi dati e del sistema operativo con chiavi gestite dal cliente. I dischi temporanei vengono crittografati con chiavi gestite dalla piattaforma.
rgName=yourRGName
vmName=yourVMName
location=eastus
vmSize=Standard_DS2_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 \
--encryption-at-host \
--image $image \
--size $vmSize \
--generate-ssh-keys \
--os-disk-encryption-set $diskEncryptionSetId \
--data-disk-sizes-gb 128 128 \
--data-disk-encryption-sets $diskEncryptionSetId $diskEncryptionSetId
Creare una macchina virtuale con crittografia abilitata per l'host con chiavi gestite dalla piattaforma
Creare una macchina virtuale con crittografia nell'host abilitata per crittografare la cache dei dischi del sistema operativo/dati e dei dischi temporanei con chiavi gestite dalla piattaforma.
rgName=yourRGName
vmName=yourVMName
location=eastus
vmSize=Standard_DS2_v2
image=LinuxImageURN
az vm create -g $rgName \
-n $vmName \
-l $location \
--encryption-at-host \
--image $image \
--size $vmSize \
--generate-ssh-keys \
--data-disk-sizes-gb 128 128 \
Aggiornare una macchina virtuale per abilitare la crittografia nell'host
rgName=yourRGName
vmName=yourVMName
az vm update -n $vmName \
-g $rgName \
--set securityProfile.encryptionAtHost=true
Controllare lo stato della crittografia nell'host per una macchina virtuale
rgName=yourRGName
vmName=yourVMName
az vm show -n $vmName \
-g $rgName \
--query [securityProfile.encryptionAtHost] -o tsv
Aggiornare una macchina virtuale per disabilitare la crittografia nell'host
È necessario deallocare la macchina virtuale prima di poter disabilitare la crittografia nell'host.
rgName=yourRGName
vmName=yourVMName
az vm update -n $vmName \
-g $rgName \
--set securityProfile.encryptionAtHost=false
Creare un set di scalabilità di macchine virtuali con crittografia nell'host abilitato con chiavi gestite dal cliente
Creare un set di scalabilità di macchine virtuali con dischi gestiti usando l'URI della risorsa DiskEncryptionSet creata in precedenza per crittografare la cache del sistema operativo e dei dischi dati con chiavi gestite dal cliente. I dischi temporanei vengono crittografati con chiavi gestite dalla piattaforma.
Importante
A partire da novembre 2023, i set di scalabilità di macchine virtuali creati con PowerShell e l'interfaccia della riga di comando di Azure avranno per impostazione predefinita la modalità di orchestrazione flessibile se non è specificata alcuna modalità di orchestrazione. Per altre informazioni su questa modifica e sulle azioni da eseguire, vedere Modifica che causa un'interruzione per i clienti di PowerShell/CLI di VMSS - Hub della community Microsoft
rgName=yourRGName
vmssName=yourVMSSName
location=westus2
vmSize=Standard_DS3_V2
image=Ubuntu2204
diskEncryptionSetName=yourDiskEncryptionSetName
diskEncryptionSetId=$(az disk-encryption-set show -n $diskEncryptionSetName -g $rgName --query [id] -o tsv)
az vmss create -g $rgName \
-n $vmssName \
--encryption-at-host \
--image $image \
--orchestration-mode flexible \
--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 set di scalabilità di macchine virtuali con crittografia abilitata per l'host con chiavi gestite dalla piattaforma
Creare un set di scalabilità di macchine virtuali con crittografia nell'host abilitato per crittografare la cache dei dischi del sistema operativo/dati e dei dischi temporanei con chiavi gestite dalla piattaforma.
Importante
A partire da novembre 2023, i set di scalabilità di macchine virtuali creati con PowerShell e l'interfaccia della riga di comando di Azure avranno per impostazione predefinita la modalità di orchestrazione flessibile se non è specificata alcuna modalità di orchestrazione. Per altre informazioni su questa modifica e sulle azioni da eseguire, vedere Modifica che causa un'interruzione per i clienti di PowerShell/CLI di VMSS - Hub della community Microsoft
rgName=yourRGName
vmssName=yourVMSSName
location=westus2
vmSize=Standard_DS3_V2
image=Ubuntu2204
az vmss create -g $rgName \
-n $vmssName \
--encryption-at-host \
--image $image \
--orchestration-mode flexible \
--admin-username azureuser \
--generate-ssh-keys \
--data-disk-sizes-gb 64 128 \
Aggiornare un set di scalabilità di macchine virtuali per abilitare la crittografia nell'host
rgName=yourRGName
vmssName=yourVMName
az vmss update -n $vmssName \
-g $rgName \
--set virtualMachineProfile.securityProfile.encryptionAtHost=true
Controllare lo stato della crittografia nell'host per un set di scalabilità di macchine virtuali
rgName=yourRGName
vmssName=yourVMName
az vmss show -n $vmssName \
-g $rgName \
--query [virtualMachineProfile.securityProfile.encryptionAtHost] -o tsv
Aggiornare un set di scalabilità di macchine virtuali per disabilitare la crittografia nell'host
È possibile disabilitare la crittografia nell'host nel set di scalabilità di macchine virtuali, ma ciò influirà solo sulle macchine virtuali create dopo la disabilitazione. Per le macchine virtuali esistenti, è necessario deallocare la macchina virtuale, disabilitare la crittografia nell'host in tale singola macchina virtuale, quindi riallocare la macchina virtuale.
rgName=yourRGName
vmssName=yourVMName
az vmss update -n $vmssName \
-g $rgName \
--set virtualMachineProfile.securityProfile.encryptionAtHost=false
Ricerca delle dimensioni delle macchine virtuali supportate
Le dimensioni delle macchine virtuali legacy non sono supportate. È possibile trovare l'elenco delle dimensioni delle macchine virtuali supportate usando le API SKU delle risorse o il modulo di Azure PowerShell. Non è possibile trovare le dimensioni supportate usando l'interfaccia della riga di comando.
Quando si chiama l'API SKU di risorse, verificare che la funzionalità di EncryptionAtHostSupported
sia impostata su True.
{
"resourceType": "virtualMachines",
"name": "Standard_DS1_v2",
"tier": "Standard",
"size": "DS1_v2",
"family": "standardDSv2Family",
"locations": [
"CentralUSEUAP"
],
"capabilities": [
{
"name": "EncryptionAtHostSupported",
"value": "True"
}
]
}
Per il modulo Azure PowerShell, usare il cmdlet Get-AzComputeResourceSku.
$vmSizes=Get-AzComputeResourceSku | where{$_.ResourceType -eq 'virtualMachines' -and $_.Locations.Contains('CentralUSEUAP')}
foreach($vmSize in $vmSizes)
{
foreach($capability in $vmSize.capabilities)
{
if($capability.Name -eq 'EncryptionAtHostSupported' -and $capability.Value -eq 'true')
{
$vmSize
}
}
}
Passaggi successivi
Dopo aver creato e configurato queste risorse, è possibile usarle per proteggere i dischi gestiti. Il collegamento seguente contiene script di esempio, ognuno con uno scenario corrispondente, che è possibile usare per proteggere i dischi gestiti.