Dela via


Azure PowerShell – Aktivera kundhanterade nycklar med kryptering på serversidan – hanterade diskar

Gäller för: ✔️ Flexibla skalningsuppsättningar ✔️ för virtuella Windows-datorer ✔️ Enhetliga skalningsuppsättningar

Med Azure Disk Storage kan du hantera dina egna nycklar när du använder kryptering på serversidan (SSE) för hanterade diskar om du vill. Konceptuell information om SSE med kundhanterade nycklar och andra krypteringstyper för hanterade diskar finns i avsnittet Kundhanterade nycklar i vår diskkrypteringsartikel.

Begränsningar

För tillfället har kundhanterade nycklar följande begränsningar:

  • Om den här funktionen är aktiverad för en disk med inkrementella ögonblicksbilder kan den inte inaktiveras på den disken eller dess ögonblicksbilder. För att undvika detta kopierar du alla data till en helt annan hanterad disk som inte använder kundhanterade nycklar. Du kan göra det med antingen Azure CLI eller Azure PowerShell-modulen.
  • Endast programvara och HSM RSA-nycklar i storlekarna 2 048-bitars, 3 072- och 4 096-bitars stöds, inga andra nycklar eller storlekar.
    • HSM-nycklar kräver premiumnivån för Azure Key Vaults.
  • Endast för Ultra Disks- och Premium SSD v2-diskar:
    • Ögonblicksbilder som skapas från diskar som krypteras med kryptering på serversidan och kundhanterade nycklar måste krypteras med samma kundhanterade nycklar.
    • Användartilldelade hanterade identiteter stöds inte för Ultra Disks- och Premium SSD v2-diskar som krypterats med kundhanterade nycklar.
    • Stöds för närvarande inte i Azure Government eller Azure China.
  • De flesta resurser som är relaterade till dina kundhanterade nycklar (diskkrypteringsuppsättningar, virtuella datorer, diskar och ögonblicksbilder) måste finnas i samma prenumeration och region.
    • Azure Key Vaults kan användas från en annan prenumeration men måste finnas i samma region som diskkrypteringsuppsättningen. Som förhandsversion kan du använda Azure Key Vaults från olika Microsoft Entra-klienter.
  • Diskar som är krypterade med kundhanterade nycklar kan bara flyttas till en annan resursgrupp om den virtuella dator som de är anslutna till frigörs.
  • Diskar, ögonblicksbilder och bilder som krypterats med kundhanterade nycklar kan inte flyttas mellan prenumerationer.
  • Hanterade diskar som för närvarande eller tidigare krypterats med Azure Disk Encryption kan inte krypteras med hjälp av kundhanterade nycklar.
  • Det går bara att skapa upp till 5 000 diskkrypteringsuppsättningar per region per prenumeration.
  • Information om hur du använder kundhanterade nycklar med delade bildgallerier finns i Förhandsversion: Använda kundhanterade nycklar för kryptering av bilder.

Konfigurera ett Azure Key Vault och DiskEncryptionSet om du vill med automatisk nyckelrotation

Om du vill använda kundhanterade nycklar med SSE måste du konfigurera en Azure Key Vault och en DiskEncryptionSet-resurs.

  1. Kontrollera att du har installerat den senaste Versionen av Azure PowerShell och att du är inloggad på ett Azure-konto i med Connect-AzAccount

  2. Skapa en instans av Azure Key Vault och krypteringsnyckeln.

    När du skapar Key Vault-instansen måste du aktivera rensningsskydd. Rensningsskydd säkerställer att en borttagen nyckel inte kan tas bort permanent förrän kvarhållningsperioden förfaller. De här inställningarna skyddar dig från att förlora data på grund av oavsiktlig borttagning. De här inställningarna är obligatoriska när du använder ett Key Vault för att kryptera hanterade diskar.

    $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 
    
  3. Skapa en instans av en DiskEncryptionSet. Du kan ange RotationToLatestKeyVersionEnabled lika med $true för att aktivera automatisk rotation av nyckeln. När du aktiverar automatisk rotation uppdaterar systemet automatiskt alla hanterade diskar, ögonblicksbilder och bilder som refererar till diskkrypteringsuppsättningen för att använda den nya versionen av nyckeln inom en timme.

    $desConfig=New-AzDiskEncryptionSetConfig -Location $LocationName `
        -SourceVaultId $keyVault.ResourceId `
        -KeyUrl $key.Key.Kid `
        -IdentityType SystemAssigned `
        -RotationToLatestKeyVersionEnabled $false
    
    $des=New-AzDiskEncryptionSet -Name $diskEncryptionSetName `
           -ResourceGroupName $ResourceGroupName `
           -InputObject $desConfig
    
  4. Ge resursen DiskEncryptionSet åtkomst till nyckelvalvet.

    Kommentar

    Det kan ta några minuter för Azure att skapa identiteten för diskEncryptionSet i ditt Microsoft Entra-ID. Om du får ett felmeddelande som "Det går inte att hitta Active Directory-objektet" när du kör följande kommando väntar du några minuter och försöker igen.

    Set-AzKeyVaultAccessPolicy -VaultName $keyVaultName -ObjectId $des.Identity.PrincipalId -PermissionsToKeys wrapkey,unwrapkey,get
    

Använda ett nyckelvalv i en annan prenumeration

Du kan också hantera dina Azure Key Vaults centralt från en enda prenumeration och använda nycklarna som lagras i Key Vault för att kryptera hanterade diskar och ögonblicksbilder i andra prenumerationer i din organisation. På så sätt kan ditt säkerhetsteam framtvinga och enkelt hantera en robust säkerhetsprincip för en enda prenumeration.

Viktigt!

För den här konfigurationen måste både nyckelvalvet och diskkrypteringsuppsättningen finnas i samma region och använda samma klientorganisation.

Följande skript är ett exempel på hur du konfigurerar en diskkrypteringsuppsättning för att använda en nyckel från ett nyckelvalv i en annan prenumeration, men samma region:

$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 $false

$des=New-AzDiskEncryptionSet -Name $targetDiskEncryptionSetName `
-ResourceGroupName $targetResourceGroupName `
-InputObject $desConfig

Exempel

Nu när du har skapat och konfigurerat dessa resurser kan du använda dem för att skydda dina hanterade diskar. Följande är exempelskript, var och en med ett respektive scenario, som du kan använda för att skydda dina hanterade diskar.

Skapa en virtuell dator med en Marketplace-avbildning och kryptera operativsystemet och datadiskarna med kundhanterade nycklar

Kopiera skriptet, ersätt alla exempelvärden med dina egna parametrar och kör det sedan.

$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

Skapa en tom disk krypterad med kryptering på serversidan med kundhanterade nycklar och koppla den till en virtuell dator

Kopiera skriptet, ersätt alla exempelvärden med dina egna parametrar och kör det sedan.

$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

Kryptera befintliga hanterade diskar

Dina befintliga diskar får inte vara anslutna till en virtuell dator som körs för att du ska kunna kryptera dem med hjälp av följande skript:

$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

Kryptera en befintlig vm-skalningsuppsättning (enhetligt orkestreringsläge) med SSE och kundhanterade nycklar

Det här skriptet fungerar endast för skalningsuppsättningar i enhetligt orkestreringsläge. För skalningsuppsättningar i flexibelt orkestreringsläge följer du Kryptera befintliga hanterade diskar för varje virtuell dator.

Kopiera skriptet, ersätt alla exempelvärden med dina egna parametrar och kör det sedan:

#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

Skapa en VM-skalningsuppsättning med en Marketplace-avbildning och kryptera operativsystemet och datadiskarna med kundhanterade nycklar

Kopiera skriptet, ersätt alla exempelvärden med dina egna parametrar och kör det sedan.

Viktigt!

Från och med november 2023 kommer VM-skalningsuppsättningar som skapats med PowerShell och Azure CLI som standard att vara flexibla orkestreringsläge om inget orkestreringsläge har angetts. Mer information om den här ändringen och vilka åtgärder du bör vidta finns i Icke-bakåtkompatibla ändringar för VMSS PowerShell/CLI-kunder – 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

Ändra nyckeln för en DiskEncryptionSet för att rotera nyckeln för alla resurser som refererar till DiskEncryptionSet

Kopiera skriptet, ersätt alla exempelvärden med dina egna parametrar och kör det sedan.

$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

Hitta status för kryptering på serversidan för en disk

$ResourceGroupName="yourResourceGroupName"
$DiskName="yourDiskName"

$disk=Get-AzDisk -ResourceGroupName $ResourceGroupName -DiskName $DiskName
$disk.Encryption.Type

Viktigt!

Kundhanterade nycklar förlitar sig på hanterade identiteter för Azure-resurser, en funktion i Microsoft Entra-ID. När du konfigurerar kundhanterade nycklar tilldelas en hanterad identitet automatiskt till dina resurser under täcket. Om du senare flyttar prenumerationen, resursgruppen eller den hanterade disken från en Microsoft Entra-katalog till en annan överförs inte den hanterade identiteten som är associerad med de hanterade diskarna till den nya klientorganisationen, så kundhanterade nycklar kanske inte längre fungerar. Mer information finns i Överföra en prenumeration mellan Microsoft Entra-kataloger.

Nästa steg