Condividi tramite


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 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.
  • Non è possibile abilitare nelle macchine virtuali (VM) o nei set di scalabilità di macchine virtuali attualmente abilitati o mai 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.

Disponibilità a livello di area

La crittografia nell'host è disponibile in tutte le aree per tutti i tipi di disco.

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 recuperarli a livello di codice, vedere la sezione Ricerca di dimensioni di macchine virtuali supportate. L'aggiornamento delle dimensioni della macchina virtuale comporta la convalida per verificare se le nuove dimensioni della macchina virtuale 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 diskEncryptionSet e un insieme di credenziali delle chiavi di Azure o un modulo di protezione hardware gestito di Azure Key Vault.

Azure Key Vault

  • Installare l'interfaccia della riga di comando di Azure più recente e accedere a un account Azure in 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

Se si esegue questa operazione, non è possibile che si verifichino problemi durante l'assegnazione di dischi aggiuntivi alla risorsa nella 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:

Impostazione

Dopo aver creato un modulo di protezione hardware 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

Creare quindi 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 al modulo di protezione hardware 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 di DiskEncryptionSet creato 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 la crittografia abilitata per l'host con chiavi gestite dal cliente

Creare un set di scalabilità di macchine virtuali con dischi gestiti usando l'URI della risorsa di DiskEncryptionSet creato 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 della crittografia nell'host. 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 EncryptionAtHostSupported funzionalità 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.

Esempi di modelli di Azure Resource Manager