Azure PowerShell – Povolení klíčů spravovaných zákazníkem pro šifrování na straně serveru – spravované disky

Platí pro: ✔️ Flexibilní škálovací sady virtuálních ✔️ počítačů s Windows Uniform Scale Sets ✔️

Azure Disk Storage umožňuje spravovat vlastní klíče při použití šifrování na straně serveru (SSE) pro spravované disky, pokud se rozhodnete. Koncepční informace o službě SSE s klíči spravovanými zákazníkem a dalších typech šifrování spravovaných disků najdete v části Klíče spravované zákazníkem v našem článku o šifrování disků.

Omezení

Klíče spravované zákazníkem mají prozatím následující omezení:

  • Pokud je tato funkce povolená pro disk s přírůstkovými snímky, není možné ji na tomto disku ani jeho snímky zakázat. Pokud chcete tento problém obejít, zkopírujte všechna data na zcela jiný spravovaný disk, který nepoužívá klíče spravované zákazníkem. Můžete to udělat pomocí Azure CLI nebo modulu Azure PowerShellu.
  • Podporují se pouze klíče RSA softwaru a HSM o velikosti 2 048 bitů, 3 072bitové a 4 096bitové verze, žádné jiné klíče ani velikosti.
    • Klíče HSM vyžadují úroveň Premium trezorů klíčů Azure.
  • Pouze pro disky Úrovně Ultra a disky SSD úrovně Premium v2:
    • Snímky vytvořené z disků, které jsou šifrované pomocí šifrování na straně serveru a klíčů spravovaných zákazníkem, musí být šifrované pomocí stejných klíčů spravovaných zákazníkem.
    • Spravované identity přiřazené uživatelem se nepodporují pro disky Úrovně Ultra a disky SSD úrovně Premium v2 šifrované pomocí klíčů spravovaných zákazníkem.
  • Většina prostředků souvisejících s klíči spravovanými zákazníkem (sady šifrování disků, virtuální počítače, disky a snímky) musí být ve stejném předplatném a oblasti.
    • Služby Azure Key Vault se můžou používat z jiného předplatného, ale musí být ve stejné oblasti jako vaše sada šifrování disků. Ve verzi Preview můžete používat služby Azure Key Vault z různých tenantů Microsoft Entra.
  • Disky šifrované pomocí klíčů spravovaných zákazníkem se můžou přesunout jenom do jiné skupiny prostředků, pokud je virtuální počítač, ke kterému jsou připojeni, uvolněný.
  • Disky, snímky a image šifrované pomocí klíčů spravovaných zákazníkem se mezi předplatnými nedají přesouvat.
  • Spravované disky aktuálně nebo dříve šifrované pomocí služby Azure Disk Encryption se nedají šifrovat pomocí klíčů spravovaných zákazníkem.
  • Může vytvořit až 5 000 sad šifrování disků pro každou oblast na předplatné.
  • Informace o používání klíčů spravovaných zákazníkem se sdílenými galeriemi imagí najdete v tématu Preview: Použití klíčů spravovaných zákazníkem pro šifrování imagí.

Nastavení služby Azure Key Vault a DiskEncryptionSet volitelně pomocí automatické obměny klíčů

Pokud chcete používat klíče spravované zákazníkem se službou SSE, musíte nastavit službu Azure Key Vault a prostředek DiskEncryptionSet.

  1. Ujistěte se, že máte nainstalovanou nejnovější verzi Azure PowerShellu a jste přihlášení k účtu Azure pomocí Připojení-AzAccount.

  2. Vytvořte instanci služby Azure Key Vault a šifrovací klíč.

    Při vytváření instance služby Key Vault je nutné povolit ochranu před vymazáním. Ochrana před vymazáním zajistí, že odstraněný klíč nebude možné trvale odstranit, dokud doba uchovávání nepřesběne. Tato nastavení chrání před ztrátou dat z důvodu náhodného odstranění. Tato nastavení jsou povinná při použití služby Key Vault pro šifrování spravovaných disků.

    $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. Vytvořte instanci DiskEncryptionSet. Můžete nastavit RotationToLatestKeyVersionEnabled rovnou $true povolit automatické obměně klíče. Když povolíte automatickou obměnu, systém automaticky aktualizuje všechny spravované disky, snímky a image odkazující na sadu šifrování disku tak, aby používal novou verzi klíče do jedné hodiny.

    $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. Udělte prostředku DiskEncryptionSet přístup k trezoru klíčů.

    Poznámka:

    Vytvoření identity diskEncryptionSet ve vašem ID Microsoft Entra může trvat několik minut. Pokud se při spuštění následujícího příkazu zobrazí chyba Typu Nejde najít objekt služby Active Directory, počkejte několik minut a zkuste to znovu.

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

Použití trezoru klíčů v jiném předplatném

Alternativně můžete spravovat služby Azure Key Vault centrálně z jednoho předplatného a používat klíče uložené ve službě Key Vault k šifrování spravovaných disků a snímků v jiných předplatných ve vaší organizaci. Díky tomu může váš bezpečnostní tým vynutit a snadno spravovat robustní zásady zabezpečení do jednoho předplatného.

Důležité

Pro tuto konfiguraci musí být služba Key Vault i sada šifrování disků ve stejné oblasti a musí používat stejného tenanta.

Následující skript představuje příklad konfigurace šifrování disku pro použití klíče ze služby Key Vault v jiném předplatném, ale ve stejné oblasti:

$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

Příklady

Teď, když jste tyto prostředky vytvořili a nakonfigurovali, můžete je použít k zabezpečení spravovaných disků. Následují ukázkové skripty, z nichž každý má odpovídající scénář, který můžete použít k zabezpečení spravovaných disků.

Vytvoření virtuálního počítače pomocí image Marketplace, šifrování disků s operačním systémem a datových disků pomocí klíčů spravovaných zákazníkem

Zkopírujte skript, nahraďte všechny ukázkové hodnoty vlastními parametry a spusťte ho.

$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

Vytvoření prázdného disku šifrovaného pomocí šifrování na straně serveru s klíči spravovanými zákazníkem a jeho připojení k virtuálnímu počítači

Zkopírujte skript, nahraďte všechny ukázkové hodnoty vlastními parametry a spusťte ho.

$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

Šifrování existujících spravovaných disků

Vaše stávající disky nesmí být připojené ke spuštěném virtuálnímu počítači, abyste je mohli zašifrovat pomocí následujícího skriptu:

$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

Šifrování existující škálovací sady virtuálních počítačů (jednotný režim orchestrace) pomocí SSE a klíčů spravovaných zákazníkem

Tento skript bude fungovat pouze pro škálovací sady v režimu jednotné orchestrace. V případě škálovacích sad v flexibilním režimu orchestrace postupujte podle pokynů k šifrování existujících spravovaných disků pro každý virtuální počítač.

Zkopírujte skript, nahraďte všechny ukázkové hodnoty vlastními parametry a spusťte ho:

#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

Vytvoření škálovací sady virtuálních počítačů pomocí image Marketplace, šifrování disků s operačním systémem a datových disků pomocí klíčů spravovaných zákazníkem

Zkopírujte skript, nahraďte všechny ukázkové hodnoty vlastními parametry a spusťte ho.

Důležité

Od listopadu 2023 se škálovací sady virtuálních počítačů vytvořené pomocí PowerShellu a Azure CLI ve výchozím nastavení nastaví do flexibilního režimu orchestrace, pokud není zadaný žádný režim orchestrace. Další informace o této změně a akcích, které byste měli provést, najdete v tématu Zásadní změna pro zákazníky PowerShellu nebo rozhraní příkazového řádku 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

Změňte klíč diskEncryptionSet tak, aby se klíč otočil pro všechny prostředky odkazující na DiskEncryptionSet.

Zkopírujte skript, nahraďte všechny ukázkové hodnoty vlastními parametry a spusťte ho.

$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

Zjištění stavu šifrování disku na straně serveru

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

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

Důležité

Klíče spravované zákazníkem spoléhají na spravované identity pro prostředky Azure, a to je funkce Microsoft Entra ID. Při konfiguraci klíčů spravovaných zákazníkem se spravovaná identita automaticky přiřadí vašim prostředkům v rámci krytů. Pokud následně přesunete předplatné, skupinu prostředků nebo spravovaný disk z jednoho adresáře Microsoft Entra do jiného, spravovaná identita přidružená ke spravovaným diskům se nepřenese do nového tenanta, takže klíče spravované zákazníkem už nemusí fungovat. Další informace naleznete v tématu Převod předplatného mezi adresáři Microsoft Entra.

Další kroky