Azure PowerShell - Sunucu tarafı şifrelemesiyle müşteri tarafından yönetilen anahtarları etkinleştirme - yönetilen diskler

Şunlar için geçerlidir: ✔️ Windows VM'leri ✔️ Esnek ölçek kümeleri ✔️ Tekdüzen ölçek kümeleri

Azure Disk Depolama, isterseniz yönetilen diskler için sunucu tarafı şifreleme (SSE) kullanırken kendi anahtarlarınızı yönetmenize olanak tanır. Müşteri tarafından yönetilen anahtarlara ve diğer yönetilen disk şifreleme türlerine sahip SSE hakkında kavramsal bilgi için disk şifreleme makalemizin Müşteri tarafından yönetilen anahtarlar bölümüne bakın.

Kısıtlamalar

Şimdilik müşteri tarafından yönetilen anahtarlar aşağıdaki kısıtlamalara sahiptir:

  • Bu özellik artımlı anlık görüntüleri olan bir disk için etkinleştirildiyse, bu diskte veya anlık görüntülerinde devre dışı bırakılamaz. Bu sorunu geçici olarak çözmek için tüm verileri müşteri tarafından yönetilen anahtarları kullanmayan tamamen farklı bir yönetilen diske kopyalayın. Bunu Azure CLI veya Azure PowerShell modülüyle yapabilirsiniz.
  • Yalnızca 2.048 bit, 3.072 bit ve 4.096 bit boyutlarında yazılım ve HSM RSA anahtarları desteklenir; başka anahtar veya boyut yoktur.
    • HSM anahtarları, Azure Anahtar kasalarının premium katmanını gerektirir.
  • Yalnızca Ultra Diskler ve Premium SSD v2 diskleri için:
    • Sunucu tarafı şifreleme ve müşteri tarafından yönetilen anahtarlarla şifrelenmiş disklerden oluşturulan anlık görüntüler aynı müşteri tarafından yönetilen anahtarlarla şifrelenmelidir.
    • Kullanıcı tarafından atanan yönetilen kimlikler, müşteri tarafından yönetilen anahtarlarla şifrelenmiş Ultra Diskler ve Premium SSD v2 diskleri için desteklenmez.
  • Müşteri tarafından yönetilen anahtarlarınız (disk şifreleme kümeleri, VM'ler, diskler ve anlık görüntüler) ile ilgili kaynakların çoğu aynı abonelikte ve bölgede olmalıdır.
    • Azure Key Vaults farklı bir abonelikten kullanılabilir, ancak disk şifreleme kümenizle aynı bölgede olmalıdır. Önizleme olarak, farklı Microsoft Entra kiracılarından Azure Key Vault'ları kullanabilirsiniz.
  • Müşteri tarafından yönetilen anahtarlarla şifrelenmiş diskler, yalnızca bağlı oldukları VM serbest bırakıldığında başka bir kaynak grubuna taşınabilir.
  • Müşteri tarafından yönetilen anahtarlarla şifrelenmiş diskler, anlık görüntüler ve görüntüler abonelikler arasında taşınamaz.
  • Şu anda veya daha önce Azure Disk Şifrelemesi kullanılarak şifrelenen yönetilen diskler, müşteri tarafından yönetilen anahtarlar kullanılarak şifrelenemez.
  • Abonelik başına bölge başına en fazla 5000 disk şifreleme kümesi oluşturabilir.
  • Paylaşılan görüntü galerileriyle müşteri tarafından yönetilen anahtarları kullanma hakkında bilgi için bkz . Önizleme: Görüntüleri şifrelemek için müşteri tarafından yönetilen anahtarları kullanma.

Otomatik anahtar döndürme ile isteğe bağlı olarak bir Azure Key Vault ve DiskEncryptionSet ayarlama

Müşteri tarafından yönetilen anahtarları SSE ile kullanmak için bir Azure Key Vault ve DiskEncryptionSet kaynağı ayarlamanız gerekir.

  1. En son Azure PowerShell sürümünü yüklediğinizden ve Bağlan-AzAccount ile bir Azure hesabında oturum açtığınızdan emin olun

  2. Azure Key Vault ve şifreleme anahtarının bir örneğini oluşturun.

    Key Vault örneğini oluştururken temizleme korumasını etkinleştirmeniz gerekir. Temizleme koruması, silinen anahtarın saklama süresi atlayana kadar kalıcı olarak silinememesini sağlar. Bu ayarlar yanlışlıkla silme nedeniyle veri kaybına karşı sizi korur. Yönetilen diskleri şifrelemek için Key Vault kullanılırken bu ayarlar zorunlu hale getirilir.

    $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. DiskEncryptionSet örneği oluşturun. Anahtarın otomatik döndürmesini etkinleştirmek için RotationToLatestKeyVersionEnabled değerini $true eşit olarak ayarlayabilirsiniz. Otomatik döndürmeyi etkinleştirdiğinizde, sistem bir saat içinde anahtarın yeni sürümünü kullanmak için disk şifreleme kümesine başvuran tüm yönetilen diskleri, anlık görüntüleri ve görüntüleri otomatik olarak güncelleştirir.

    $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. DiskEncryptionSet kaynak erişimini anahtar kasasına verin.

    Not

    Azure'ın Microsoft Entra kimliğinizde DiskEncryptionSet'inizin kimliğini oluşturması birkaç dakika sürebilir. Aşağıdaki komutu çalıştırırken "Active Directory nesnesi bulunamıyor" gibi bir hata alırsanız, birkaç dakika bekleyin ve yeniden deneyin.

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

Farklı bir abonelikte anahtar kasası kullanma

Alternatif olarak, Azure Key Vault'larınızı tek bir abonelikten merkezi olarak yönetebilir ve kuruluşunuzdaki diğer aboneliklerdeki yönetilen diskleri ve anlık görüntüleri şifrelemek için Key Vault'ta depolanan anahtarları kullanabilirsiniz. Bu, güvenlik ekibinizin tek bir aboneliğe sağlam bir güvenlik ilkesi uygulamasına ve kolayca yönetmesine olanak tanır.

Önemli

Bu yapılandırma için hem Key Vault'unuzun hem de disk şifreleme kümenizin aynı bölgede olması ve aynı kiracıyı kullanıyor olması gerekir.

Aşağıdaki betik, bir disk şifreleme kümesini farklı bir abonelikte ancak aynı bölgede key Vault'tan anahtar kullanacak şekilde nasıl yapılandırabileceğinize ilişkin bir örnektir:

$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

Örnekler

Artık bu kaynakları oluşturup yapılandırdığınıza göre, yönetilen disklerinizin güvenliğini sağlamak için bunları kullanabilirsiniz. Aşağıda, yönetilen disklerinizin güvenliğini sağlamak için kullanabileceğiniz, her biri ilgili senaryoya sahip örnek betikler verilmiştir.

Market görüntüsü kullanarak vm oluşturma, işletim sistemini ve veri disklerini müşteri tarafından yönetilen anahtarlarla şifreleme

Betiği kopyalayın, tüm örnek değerleri kendi parametrelerinizle değiştirin ve ardından çalıştırın.

$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

Müşteri tarafından yönetilen anahtarlarla sunucu tarafı şifrelemesi kullanarak şifrelenmiş boş bir disk oluşturma ve vm'ye ekleme

Betiği kopyalayın, tüm örnek değerleri kendi parametrelerinizle değiştirin ve ardından çalıştırın.

$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

Mevcut yönetilen diskleri şifreleme

Aşağıdaki betiği kullanarak şifrelemeniz için mevcut disklerinizin çalışan bir VM'ye bağlı olmaması gerekir:

$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

Mevcut bir sanal makine ölçek kümesini (tekdüzen düzenleme modu) SSE ve müşteri tarafından yönetilen anahtarlarla şifreleme

Bu betik yalnızca tekdüzen düzenleme modunda ölçek kümeleri için çalışır. Esnek düzenleme modundaki ölçek kümeleri için Her VM için mevcut yönetilen diskleri şifreleme'yi izleyin.

Betiği kopyalayın, tüm örnek değerleri kendi parametrelerinizle değiştirin ve çalıştırın:

#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

Market görüntüsü kullanarak, işletim sistemini ve veri disklerini müşteri tarafından yönetilen anahtarlarla şifreleyen bir sanal makine ölçek kümesi oluşturma

Betiği kopyalayın, tüm örnek değerleri kendi parametrelerinizle değiştirin ve ardından çalıştırın.

Önemli

Kasım 2023'den itibaren, düzenleme modu belirtilmezse PowerShell ve Azure CLI kullanılarak oluşturulan VM ölçek kümeleri varsayılan olarak Esnek Düzenleme Modu olarak ayarlanır. Bu değişiklik ve gerçekleştirmeniz gereken eylemler hakkında daha fazla bilgi için BKZ. VMSS PowerShell/CLI Müşterileri için Yeni Değişiklik - 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

DiskEncryptionSet'e başvuran tüm kaynakların anahtarını döndürmek için DiskEncryptionSet anahtarını değiştirme

Betiği kopyalayın, tüm örnek değerleri kendi parametrelerinizle değiştirin ve ardından çalıştırın.

$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

Diskin sunucu tarafı şifreleme durumunu bulma

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

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

Önemli

Müşteri tarafından yönetilen anahtarlar, Microsoft Entra ID'nin bir özelliği olan Azure kaynakları için yönetilen kimlikleri kullanır. Müşteri tarafından yönetilen anahtarları yapılandırdığınızda, kapaklar altındaki kaynaklarınıza otomatik olarak bir yönetilen kimlik atanır. Daha sonra aboneliği, kaynak grubunu veya yönetilen diski bir Microsoft Entra dizininden diğerine taşırsanız, yönetilen disklerle ilişkili yönetilen kimlik yeni kiracıya aktarılmaz, bu nedenle müşteri tarafından yönetilen anahtarlar artık çalışmayabilir. Daha fazla bilgi için bkz . Microsoft Entra dizinleri arasında abonelik aktarma.

Sonraki adımlar