Azure PowerShell - Mengaktifkan kunci yang dikelola pelanggan dengan enkripsi sisi server - disk terkelola

Berlaku untuk: ✔️ Windows VM ✔️ Kumpulan skala fleksibel ✔️ Kumpulan skala seragam

Penyimpanan Disk Azure memungkinkan Anda mengelola kunci Anda sendiri saat menggunakan enkripsi sisi server (SSE) untuk disk terkelola, jika Anda memilih. Untuk informasi konseptual tentang SSE dengan kunci yang dikelola pelanggan, dan jenis enkripsi disk terkelola lainnya, lihat bagian Kunci yang dikelola pelanggan di artikel enkripsi disk kami.

Batasan

Untuk saat ini, kunci yang dikelola pelanggan memiliki batasan berikut:

  • Jika fitur ini diaktifkan untuk disk dengan rekam jepret bertahap, fitur ini tidak dapat dinonaktifkan pada disk tersebut atau rekam jepretnya. Untuk mengatasi hal ini, salin semua data ke disk terkelola yang sama sekali berbeda yang tidak menggunakan kunci yang dikelola pelanggan. Anda dapat melakukannya dengan Azure CLI atau modul Azure PowerShell.
  • Hanya kunci RSA perangkat lunak dan HSM dengan ukuran 2.048-bit, 3.072-bit, dan 4.096-bit yang didukung, tidak ada kunci atau ukuran lain.
    • Kunci HSM memerlukan tingkat premium Azure Key Vault.
  • Hanya untuk Disk Ultra dan disk Premium SSD v2:
    • Rekam jepret yang dibuat dari disk yang dienkripsi dengan enkripsi sisi server dan kunci yang dikelola pelanggan harus dienkripsi dengan kunci yang dikelola pelanggan yang sama.
    • Identitas terkelola yang ditetapkan pengguna tidak didukung untuk disk Ultra Disk dan Premium SSD v2 yang dienkripsi dengan kunci yang dikelola pelanggan.
  • Sebagian besar sumber daya yang terkait dengan kunci yang dikelola pelanggan (set enkripsi disk, Mesin Virtual, disk, dan snapshot) harus berada dalam langganan dan wilayah yang sama.
    • Azure Key Vault dapat digunakan dari langganan yang berbeda tetapi harus berada di wilayah yang sama dengan set enkripsi disk Anda. Sebagai pratinjau, Anda dapat menggunakan Azure Key Vaults dari penyewa Microsoft Entra yang berbeda.
  • Disk yang dienkripsi dengan kunci yang dikelola pelanggan hanya dapat berpindah ke grup sumber daya lain jika VM yang dilampirkan ke dibatalkan alokasinya.
  • Disk, rekam jepret, dan gambar yang dienkripsi dengan kunci yang dikelola pelanggan tidak dapat dipindahkan di antara langganan.
  • Disk terkelola saat ini atau yang sebelumnya dienkripsi menggunakan Azure Disk Encryption tidak dapat dienkripsi menggunakan kunci yang dikelola pelanggan.
  • Hanya dapat membuat hingga 5000 set enkripsi disk per wilayah per langganan.
  • Untuk informasi tentang menggunakan kunci yang dikelola pelanggan dengan galeri gambar bersama, lihat Pratinjau: Menggunakan kunci yang dikelola pelanggan untuk mengenkripsi gambar.

Siapkan Azure Key Vault dan DiskEncryptionSet dengan rotasi kunci otomatis

Untuk menggunakan kunci yang dikelola pelanggan dengan SSE, Anda harus menyiapkan Azure Key Vault dan sumber daya DiskEncryptionSet.

  1. Pastikan Anda telah menginstal Azure PowerShell versi terbaru, dan Anda masuk ke akun Azure dengan Connect-AzAccount

  2. Buat instans Azure Key Vault dan kunci enkripsi.

    Saat membuat instans Key Vault, Anda harus mengaktifkan penghapusan sementara dan perlindungan pembersihan. Perlindungan pembersihan memastikan bahwa kunci yang dihapus tidak dapat dihapus secara permanen hingga periode retensi berakhir. Pengaturan ini melindungi Anda dari kehilangan data karena tidak sengaja terhapus. Pengaturan ini wajib dilakukan ketika menggunakan Azure Key Vault untuk mengenkripsi disk terkelola.

    $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. Membuat instans DiskEncryptionSet. Anda dapat mengatur RotationToLatestKeyVersionEnabled sama dengan $true untuk mengaktifkan rotasi otomatis kunci. Saat Anda mengaktifkan rotasi otomatis, sistem secara otomatis akan memperbarui semua disk terkelola, rekam jepret, dan gambar yang merujuk pada enkripsi disk yang diatur agar menggunakan versi kunci baru dalam waktu satu jam.

    $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. Berikan akses DiskEncryptionSet akses sumber daya ke brankas kunci.

    Catatan

    Mungkin perlu waktu beberapa menit bagi Azure untuk membuat identitas DiskEncryptionSet Anda di ID Microsoft Entra Anda. Jika Anda mendapatkan kesalahan seperti "Tidak dapat menemukan objek Direktori Aktif" saat menjalankan perintah berikut, tunggu beberapa menit dan coba lagi.

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

Gunakan brankas kunci dalam langganan yang berbeda

Atau, Anda dapat mengelola Azure Key Vaults secara terpusat dari satu langganan, dan menggunakan tombol yang disimpan di Key Vault untuk mengenkripsi disk dan salinan bayangan terkelola di langganan lain di organisasi Anda. Hal ini memungkinkan tim keamanan Anda untuk menerapkan dan mengelola kebijakan keamanan yang kuat dengan mudah untuk satu langganan.

Penting

Untuk konfigurasi ini, kedua Key Vault dan set enkripsi disk Anda harus berada di wilayah yang sama dan menggunakan penyewa yang sama.

Skrip berikut adalah contoh bagaimana Anda akan mengonfigurasi set enkripsi disk untuk menggunakan kunci dari Key Vault dalam langganan yang berbeda, tetapi wilayah yang sama:

$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

Contoh

Setelah membuat dan mengonfigurasi sumber daya ini, Anda dapat menggunakannya untuk mengamankan disk yang terkelola. Tautan berikut berisi skrip contoh, masing-masing dengan skenario masing-masing, yang dapat Anda gunakan untuk mengamankan disk terkelola Anda.

Buat VM menggunakan gambar Marketplace, mengenkripsi OS dan disk data dengan kunci yang dikelola pelanggan

Salin skrip, ganti semua nilai contoh dengan parameter Anda sendiri, lalu jalankan.

$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

Buat disk kosong yang dienkripsi menggunakan enkripsi sisi server dengan kunci yang dikelola pelanggan dan lampirkan ke VM

Salin skrip, ganti semua nilai contoh dengan parameter Anda sendiri, lalu jalankan.

$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

Memuat disk terkelola yang ada

Disk yang ada tidak boleh dilampirkan ke VM yang sedang berjalan agar Anda dapat mengenkripsinya menggunakan skrip berikut:

$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

Enkripsikan rangkaian skala mesin virtual yang ada dengan SSE dan kunci yang dikelola pelanggan

Skrip ini hanya akan berfungsi untuk rangkaian skala hanya dalam mode orkestrasi yang seragam. Untuk rangkaian skala dalam mode orkestrasi fleksibel, ikuti Mengenkripsi disk terkelola yang ada untuk setiap VM.

Salin skrip, ganti semua nilai contoh dengan parameter Anda sendiri, lalu jalankan:

#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

Buat kumpulan skala mesin virtual menggunakan gambar Marketplace, mengenkripsi OS dan disk data dengan kunci yang dikelola pelanggan

Salin skrip, ganti semua nilai contoh dengan parameter Anda sendiri, lalu jalankan.

Penting

Mulai November 2023, set skala VM yang dibuat menggunakan PowerShell dan Azure CLI akan default ke Mode Orkestrasi Fleksibel jika tidak ada mode orkestrasi yang ditentukan. Untuk informasi selengkapnya tentang perubahan ini dan tindakan apa yang harus Anda ambil, buka Melanggar Perubahan untuk Pelanggan VMSS PowerShell/CLI - 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

Ubah kunci DiskEncryptionSet untuk memutar kunci untuk semua sumber daya yang merujuk pada DiskEncryptionSet

Salin skrip, ganti semua nilai contoh dengan parameter Anda sendiri, lalu jalankan.

$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

Temukan status enkripsi sisi server dari disk

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

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

Penting

Kunci yang dikelola pelanggan mengandalkan identitas terkelola untuk sumber daya Azure, fitur ID Microsoft Entra. Saat Anda mengonfigurasi kunci yang dikelola pelanggan, identitas terkelola secara otomatis ditetapkan ke sumber daya Anda di bawah perlindungan. Jika Anda kemudian memindahkan langganan, grup sumber daya, atau disk terkelola dari satu direktori Microsoft Entra ke direktori lain, identitas terkelola yang terkait dengan disk terkelola tidak ditransfer ke penyewa baru, sehingga kunci yang dikelola pelanggan mungkin tidak lagi berfungsi. Untuk informasi selengkapnya, lihat Mentransfer langganan antara direktori Microsoft Entra.

Langkah berikutnya