Nota
L'accesso a questa pagina richiede l'autorizzazione. È possibile provare ad accedere o modificare le directory.
L'accesso a questa pagina richiede l'autorizzazione. È possibile provare a modificare le directory.
Applica a: ✔️ 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 (SSE) per i dischi gestiti, se si sceglie. Per informazioni concettuali sulla crittografia sul lato server con chiavi gestite dal cliente e altri tipi di crittografia dei dischi gestiti, vedere la sezione Chiavi gestite dal cliente nel nostro articolo sulla 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 il modulo interfaccia della riga di comando di Azure o il modulo Azure PowerShell.
- Un disco e tutti gli snapshot incrementali associati devono avere lo stesso set di crittografia del disco.
- Sono supportate solo chiavi RSA software e HSM di dimensioni a 2.048 bit, a 3.072 bit e a 4.096 bit, senza altre chiavi o dimensioni.
- Le chiavi HSM richiedono il livello Premium degli Azure Key Vault.
- Solo per Dischi Ultra e dischi SSD Premium v2:
- (Anteprima) Le identità gestite assegnate dall'utente sono disponibili per dischi Ultra e dischi SSD Premium v2 crittografati con chiavi gestite dal cliente.
- 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.
- Azure Key Vault può essere usato da una sottoscrizione diversa, ma deve trovarsi nella stessa area del set di crittografia del disco. Azure Key Vault in tenant Microsoft Entra diversi sono supportati per i dischi gestiti. Per informazioni dettagliate, vedere Crittografare i dischi gestiti con chiavi gestite dal cliente tra tenant.
- 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 dei 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.
Configurare un Azure Key Vault e DiskEncryptionSet con rotazione automatica delle chiavi
Per usare le chiavi gestite dal cliente con SSE, è necessario configurare un Azure Key Vault e una risorsa DiskEncryptionSet.
Assicurarsi di aver installato la versione più recente Azure PowerShell ed è stato eseguito l'accesso a un account Azure con Connect-AzAccount
Creare un'istanza di Azure Key Vault e chiave di crittografia.
Quando si crea l'istanza di Key Vault, è 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 Key Vault per crittografare i dischi gestiti.
$ResourceGroupName="yourResourceGroupName" $LocationName="westcentralus" $keyVaultName="yourKeyVaultName" $keyName="yourKeyName" $keyDestination="Software" $diskEncryptionSetName="yourDiskEncryptionSetName" $keyVault = New-AzKeyVault -Name $keyVaultName ` -ResourceGroupName $ResourceGroupName ` -Location $LocationName ` -EnablePurgeProtection $key = Add-AzKeyVaultKey -VaultName $keyVaultName ` -Name $keyName ` -Destination $keyDestination Set-AzKeyVaultKeyRotationPolicy -VaultName $keyVaultName -KeyName $keyName -ExpiresIn P2Y -KeyRotationLifetimeAction @{Action="Rotate";TimeBeforeExpiry = "P18M"}Creare un'istanza di un set di crittografia dischi. Questo script imposta RotationToLatestKeyVersionEnabled uguale a $true per abilitare la rotazione automatica della chiave. Quando si abilita la rotazione automatica, il sistema aggiorna 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.
$desConfig=New-AzDiskEncryptionSetConfig -Location $LocationName ` -SourceVaultId $keyVault.ResourceId ` -KeyUrl $key.Key.Kid ` -IdentityType SystemAssigned ` -RotationToLatestKeyVersionEnabled $true $des=New-AzDiskEncryptionSet -Name $diskEncryptionSetName ` -ResourceGroupName $ResourceGroupName ` -InputObject $desConfigConcedere alla risorsa DiskEncryptionSet l'accesso alla cassaforte delle chiavi.
Nota
Potrebbe volerci qualche minuto perché Azure crei l'identità del tuo DiskEncryptionSet nel Microsoft Entra ID. Se viene visualizzato un errore simile a "Impossibile trovare l'oggetto Active Directory" quando si esegue il comando seguente, attendere alcuni minuti e riprovare.
Set-AzKeyVaultAccessPolicy -VaultName $keyVaultName -ObjectId $des.Identity.PrincipalId -PermissionsToKeys wrapkey,unwrapkey,get
Usare un Key Vault in una sottoscrizione diversa
In alternativa, è possibile gestire centralmente gli insiemi di credenziali delle chiavi Azure da una singola sottoscrizione e usare le chiavi archiviate nel Key Vault per crittografare dischi gestiti e snapshot in altre sottoscrizioni dell'organizzazione. Ciò consente al team di sicurezza di gestire e applicare facilmente criteri di sicurezza affidabili a una singola sottoscrizione.
Importante
Per questa configurazione, sia il Key Vault che il set di crittografia del disco devono trovarsi nella stessa area e usare lo stesso tenant.
Lo script seguente è un esempio di come configurare un set di crittografia del disco per l'uso di una chiave da un Key Vault in una sottoscrizione diversa, ma nella stessa area:
$sourceSubscriptionId="<sourceSubID>"
$sourceKeyVaultName="<sourceKVName>"
$sourceKeyName="<sourceKeyName>"
$targetSubscriptionId="<targetSubID>"
$targetResourceGroupName="<targetRGName>"
$targetDiskEncryptionSetName="<targetDiskEncSetName>"
$location="<targetRegion>"
Set-AzContext -Subscription $sourceSubscriptionId
$key = Get-AzKeyVaultKey -VaultName $sourceKeyVaultName -Name $sourceKeyName
Set-AzContext -Subscription $targetSubscriptionId
$desConfig=New-AzDiskEncryptionSetConfig -Location $location `
-KeyUrl $key.Key.Kid `
-IdentityType SystemAssigned `
-RotationToLatestKeyVersionEnabled $true
$des=New-AzDiskEncryptionSet -Name $targetDiskEncryptionSetName `
-ResourceGroupName $targetResourceGroupName `
-InputObject $desConfig
Esempi
Dopo aver creato e configurato queste risorse, è possibile usarle per proteggere i dischi gestiti. Di seguito sono riportati gli script di esempio, ognuno con uno scenario corrispondente, che è possibile usare per proteggere i dischi gestiti.
Creare una macchina virtuale con un'immagine del Marketplace, crittografando il disco del sistema operativo e i dischi dati con chiavi gestite dal cliente
Copiare lo script, sostituire tutti i valori di esempio con i propri parametri e quindi eseguirlo.
$VMLocalAdminUser = "yourVMLocalAdminUserName"
$VMLocalAdminSecurePassword = ConvertTo-SecureString <password> -AsPlainText -Force
$LocationName = "yourRegion"
$ResourceGroupName = "yourResourceGroupName"
$ComputerName = "yourComputerName"
$VMName = "yourVMName"
$VMSize = "yourVMSize"
$diskEncryptionSetName="yourdiskEncryptionSetName"
$NetworkName = "yourNetworkName"
$NICName = "yourNICName"
$SubnetName = "yourSubnetName"
$SubnetAddressPrefix = "10.0.0.0/24"
$VnetAddressPrefix = "10.0.0.0/16"
$SingleSubnet = New-AzVirtualNetworkSubnetConfig -Name $SubnetName -AddressPrefix $SubnetAddressPrefix
$Vnet = New-AzVirtualNetwork -Name $NetworkName -ResourceGroupName $ResourceGroupName -Location $LocationName -AddressPrefix $VnetAddressPrefix -Subnet $SingleSubnet
$NIC = New-AzNetworkInterface -Name $NICName -ResourceGroupName $ResourceGroupName -Location $LocationName -SubnetId $Vnet.Subnets[0].Id
$Credential = New-Object System.Management.Automation.PSCredential ($VMLocalAdminUser, $VMLocalAdminSecurePassword);
$VirtualMachine = New-AzVMConfig -VMName $VMName -VMSize $VMSize
$VirtualMachine = Set-AzVMOperatingSystem -VM $VirtualMachine -Windows -ComputerName $ComputerName -Credential $Credential -ProvisionVMAgent -EnableAutoUpdate
$VirtualMachine = Add-AzVMNetworkInterface -VM $VirtualMachine -Id $NIC.Id
$VirtualMachine = Set-AzVMSourceImage -VM $VirtualMachine -PublisherName 'MicrosoftWindowsServer' -Offer 'WindowsServer' -Skus '2012-R2-Datacenter' -Version latest
$diskEncryptionSet=Get-AzDiskEncryptionSet -ResourceGroupName $ResourceGroupName -Name $diskEncryptionSetName
$VirtualMachine = Set-AzVMOSDisk -VM $VirtualMachine -Name $($VMName +"_OSDisk") -DiskEncryptionSetId $diskEncryptionSet.Id -CreateOption FromImage
$VirtualMachine = Add-AzVMDataDisk -VM $VirtualMachine -Name $($VMName +"DataDisk1") -DiskSizeInGB 128 -StorageAccountType Premium_LRS -CreateOption Empty -Lun 0 -DiskEncryptionSetId $diskEncryptionSet.Id
New-AzVM -ResourceGroupName $ResourceGroupName -Location $LocationName -VM $VirtualMachine -Verbose
Creare un disco vuoto crittografato usando la crittografia lato server con chiavi gestite dal cliente e associarlo a una macchina virtuale
Copiare lo script, sostituire tutti i valori di esempio con i propri parametri e quindi eseguirlo.
$vmName = "yourVMName"
$LocationName = "westcentralus"
$ResourceGroupName = "yourResourceGroupName"
$diskName = "yourDiskName"
$diskSKU = "Premium_LRS"
$diskSizeinGiB = 30
$diskLUN = 1
$diskEncryptionSetName="yourDiskEncryptionSetName"
$vm = Get-AzVM -Name $vmName -ResourceGroupName $ResourceGroupName
$diskEncryptionSet=Get-AzDiskEncryptionSet -ResourceGroupName $ResourceGroupName -Name $diskEncryptionSetName
$vm = Add-AzVMDataDisk -VM $vm -Name $diskName -CreateOption Empty -DiskSizeInGB $diskSizeinGiB -StorageAccountType $diskSKU -Lun $diskLUN -DiskEncryptionSetId $diskEncryptionSet.Id
Update-AzVM -ResourceGroupName $ResourceGroupName -VM $vm
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"
$diskEncryptionSet = Get-AzDiskEncryptionSet -ResourceGroupName $rgName -Name $diskEncryptionSetName
New-AzDiskUpdateConfig -EncryptionType "EncryptionAtRestWithCustomerKey" -DiskEncryptionSetId $diskEncryptionSet.Id | Update-AzDisk -ResourceGroupName $rgName -DiskName $diskName
Crittografare un set di scalabilità di macchine virtuali esistente (modalità di orchestrazione uniforme) con la crittografia del servizio di archiviazione e le chiavi gestite dal cliente
Questo script funzionerà solo per i set di scalabilità in modalità di orchestrazione uniforme. Per i set di scalabilità in modalità di orchestrazione flessibile, seguire Crittografare i dischi gestiti esistenti per ogni macchina virtuale.
Copiare lo script, sostituire tutti i valori di esempio con i propri parametri e quindi eseguirlo:
#set variables
$vmssname = "name of the vmss that is already created"
$diskencryptionsetname = "name of the diskencryptionset already created"
$vmssrgname = "vmss resourcegroup name"
$diskencryptionsetrgname = "diskencryptionset resourcegroup name"
#get vmss object and create diskencryptionset object attach to vmss os disk
$ssevmss = get-azvmss -ResourceGroupName $vmssrgname -VMScaleSetName $vmssname
$ssevmss.VirtualMachineProfile.StorageProfile.OsDisk.ManagedDisk.DiskEncryptionSet = New-Object -TypeName Microsoft.Azure.Management.Compute.Models.DiskEncryptionSetParameters
#get diskencryption object and retrieve the resource id
$des = Get-AzDiskEncryptionSet -ResourceGroupName $diskencryptionsetrgname -Name $diskencryptionsetname
write-host "the diskencryptionset resource id is:" $des.Id
#associate DES resource id to os disk and update vmss
$ssevmss.VirtualMachineProfile.StorageProfile.OsDisk.ManagedDisk.DiskEncryptionSet.id = $des.Id
$ssevmss | update-azvmss
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
Copiare lo script, sostituire tutti i valori di esempio con i propri parametri e quindi eseguirlo.
Importante
A partire da novembre 2023, i set di scalabilità delle macchine virtuali creati con PowerShell e interfaccia della riga di comando di Azure utilizzeranno per impostazione predefinita la modalità di orchestrazione flessibile se non è specificata alcuna modalità di orchestrazione. Per ulteriori informazioni su questa modifica e sulle azioni da intraprendere, consultare Modifica significativa per gli utenti di PowerShell/CLI di VMSS - Microsoft Community Hub
$VMLocalAdminUser = "yourLocalAdminUser"
$VMLocalAdminSecurePassword = ConvertTo-SecureString Password@123 -AsPlainText -Force
$LocationName = "westcentralus"
$ResourceGroupName = "yourResourceGroupName"
$ComputerNamePrefix = "yourComputerNamePrefix"
$VMScaleSetName = "yourVMSSName"
$VMSize = "Standard_DS3_v2"
$diskEncryptionSetName="yourDiskEncryptionSetName"
$NetworkName = "yourVNETName"
$SubnetName = "yourSubnetName"
$SubnetAddressPrefix = "10.0.0.0/24"
$VnetAddressPrefix = "10.0.0.0/16"
$SingleSubnet = New-AzVirtualNetworkSubnetConfig -Name $SubnetName -AddressPrefix $SubnetAddressPrefix
$Vnet = New-AzVirtualNetwork -Name $NetworkName -ResourceGroupName $ResourceGroupName -Location $LocationName -AddressPrefix $VnetAddressPrefix -Subnet $SingleSubnet
$ipConfig = New-AzVmssIpConfig -Name "myIPConfig" -SubnetId $Vnet.Subnets[0].Id
$VMSS = New-AzVmssConfig -Location $LocationName -SkuCapacity 2 -SkuName $VMSize -UpgradePolicyMode 'Automatic' -OrchestrationMode 'Uniform'
$VMSS = Add-AzVmssNetworkInterfaceConfiguration -Name "myVMSSNetworkConfig" -VirtualMachineScaleSet $VMSS -Primary $true -IpConfiguration $ipConfig
$diskEncryptionSet=Get-AzDiskEncryptionSet -ResourceGroupName $ResourceGroupName -Name $diskEncryptionSetName
# Enable encryption at rest with customer managed keys for OS disk by setting DiskEncryptionSetId property
$VMSS = Set-AzVmssStorageProfile $VMSS -OsDiskCreateOption "FromImage" -DiskEncryptionSetId $diskEncryptionSet.Id -ImageReferenceOffer 'WindowsServer' -ImageReferenceSku '2012-R2-Datacenter' -ImageReferenceVersion latest -ImageReferencePublisher 'MicrosoftWindowsServer'
$VMSS = Set-AzVmssOsProfile $VMSS -ComputerNamePrefix $ComputerNamePrefix -AdminUsername $VMLocalAdminUser -AdminPassword $VMLocalAdminSecurePassword
# Add a data disk encrypted at rest with customer managed keys by setting DiskEncryptionSetId property
$VMSS = Add-AzVmssDataDisk -VirtualMachineScaleSet $VMSS -CreateOption Empty -Lun 1 -DiskSizeGB 128 -StorageAccountType Premium_LRS -DiskEncryptionSetId $diskEncryptionSet.Id
$Credential = New-Object System.Management.Automation.PSCredential ($VMLocalAdminUser, $VMLocalAdminSecurePassword);
New-AzVmss -VirtualMachineScaleSet $VMSS -ResourceGroupName $ResourceGroupName -VMScaleSetName $VMScaleSetName
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
Copiare lo script, sostituire tutti i valori di esempio con i propri parametri e quindi eseguirlo.
$ResourceGroupName="yourResourceGroupName"
$keyVaultName="yourKeyVaultName"
$keyName="yourKeyName"
$diskEncryptionSetName="yourDiskEncryptionSetName"
$keyVault = Get-AzKeyVault -VaultName $keyVaultName -ResourceGroupName $ResourceGroupName
$keyVaultKey = Get-AzKeyVaultKey -VaultName $keyVaultName -Name $keyName
Update-AzDiskEncryptionSet -Name $diskEncryptionSetName -ResourceGroupName $ResourceGroupName -SourceVaultId $keyVault.ResourceId -KeyUrl $keyVaultKey.Id
Trovare lo stato di crittografia lato server di un disco
$ResourceGroupName="yourResourceGroupName"
$DiskName="yourDiskName"
$disk=Get-AzDisk -ResourceGroupName $ResourceGroupName -DiskName $DiskName
$disk.Encryption.Type
Importante
Le chiavi gestite dal cliente si basano sulle identità gestite per le risorse 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 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 ulteriori informazioni, vedere Trasferimento di una sottoscrizione tra 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
- Impostare il ripristino di emergenza di macchine virtuali VMware per Azure con PowerShell
- Configura il ripristino di emergenza su Azure per le macchine virtuali Hyper-V con PowerShell e Azure Resource Manager