Membuat dan mengonfigurasi brankas kunci untuk Azure Disk Encryption dengan ID Microsoft Entra (rilis sebelumnya) untuk VM Linux
Berlaku untuk: ✔️ Mesin Virtual Linux ✔️ Set skala fleksibel
Rilis baru Azure Disk Encryption menghilangkan persyaratan untuk menyediakan parameter aplikasi Microsoft Entra untuk mengaktifkan enkripsi disk VM. Dengan rilis baru, Anda tidak lagi diharuskan untuk memberikan kredensial Microsoft Entra selama langkah mengaktifkan enkripsi. Semua VM baru harus dienkripsi tanpa parameter aplikasi Microsoft Entra menggunakan rilis baru. Untuk melihat petunjuk untuk mengaktifkan enkripsi disk mesin virtual menggunakan rilis baru, lihat Azure Disk Encryption. VM yang sudah dienkripsi dengan parameter aplikasi Microsoft Entra masih didukung dan harus terus dipertahankan dengan sintaks Microsoft Entra.
Azure Disk Encryption menggunakan Azure Key Vault untuk mengontrol dan mengelola kunci dan rahasia enkripsi disk. Untuk informasi selengkapnya mengenai brankas kunci, lihat Mulai menggunakan Azure Key Vault dan Amankan brankas kunci Anda.
Membuat dan mengonfigurasi brankas kunci untuk digunakan dengan Azure Disk Encryption dengan ID Microsoft Entra (rilis sebelumnya) melibatkan tiga langkah:
- Membuat brankas kunci.
- Siapkan aplikasi Microsoft Entra dan perwakilan layanan.
- Atur kebijakan akses brankas kunci untuk aplikasi Microsoft Entra.
- Atur kebijakan akses tingkat lanjut untuk key vault.
Anda juga dapat, jika Anda mau, menghasilkan, atau mengimpor kunci enkripsi kunci (KEK).
Lihat artikel utama Membuat dan mengonfigurasi key vault bagi Azure Disk Encryption untuk mendapatkan langkah-langkah mengenai cara Menginstal alat dan menyambungkan ke Azure.
Catatan
Langkah-langkah dalam artikel ini diotomatisasi dalam skrip CLI prasyarat Azure Disk Encryption dan skrip PowerShell prasyarat Azure Disk Encryption.
Buat brankas kunci
Azure Disk Encryption sudah terintegrasi dengan Azure Key Vault untuk membantu Anda mengontrol dan mengelola kunci serta rahasia enkripsi disk dalam langganan key vault Anda. Anda dapat membuat key vault atau menggunakan vault yang sudah ada untuk Azure Disk Encryption. Untuk informasi selengkapnya mengenai brankas kunci, lihat Mulai menggunakan Azure Key Vault dan Amankan brankas kunci Anda. Anda dapat menggunakan template Azure Resource Manager, Azure PowerShell, atau Azure CLI untuk membuat key vault.
Peringatan
Untuk memastikan rahasia enkripsi tidak melewati batas regional, Azure Disk Encryption membutuhkan Key Vault dan VM yang akan berlokasi di wilayah yang sama. Buat dan gunakan Key Vault yang berlokasi di wilayah yang sama dengan VM yang akan dienkripsi.
Buat key vault menggunakan PowerShell
Anda dapat membuat kubah kunci dengan Azure PowerShell menggunakan cmdlet New-AzKeyVault. Untuk memperoleh cmdlet tambahan untuk Key Vault, lihat Az.KeyVault.
Buat grup sumber daya baru, dengan New-AzResourceGroup jika diperlukan. Untuk memperoleh lokasi pusat data, gunakan Get-AzLocation.
# Get-AzLocation New-AzResourceGroup –Name 'MyKeyVaultResourceGroup' –Location 'East US'
Membuat key vault baru dengan New-AzKeyVault
New-AzKeyVault -VaultName 'MySecureVault' -ResourceGroupName 'MyKeyVaultResourceGroup' -Location 'East US'
Perhatikan Nama Vault, Nama Grup Sumber Daya, ID Sumber Daya, URI Vault, dan ID Objek yang dijalankan untuk digunakan nanti saat Anda mengenkripsi disk.
Buat key vault menggunakan Azure CLI
Anda bisa mengelola key vault dengan Azure CLI menggunakan perintah keyvault az. Untuk membuat key vault, silakan gunakan buat keyvault az.
Membuat grup sumber daya baru, menggunakan buat grup az jika diperlukan. Untuk mencantumkan lokasi, gunakan az account list-locations
# To list locations: az account list-locations --output table az group create -n "MyKeyVaultResourceGroup" -l "East US"
Membuat key vault baru dengan menggunakan buat keyvault az.
az keyvault create --name "MySecureVault" --resource-group "MyKeyVaultResourceGroup" --location "East US"
Perhatikan Nama Vault (nama), Nama Grup Sumber Daya, ID Sumber Daya (ID), URI Vault, serta ID Objek yang dijalankan untuk digunakan nanti.
Membuat key vault menggunakan template Resource Manager
Anda dapat membuat key vault dengan menggunakan template Resource Manager.
- Pada Templat Mulai Cepat Azure, pilih Sebarkan ke Azure.
- Pilih langganan, grup sumber daya, lokasi grup sumber daya, nama Key Vault, ID Objek, persyaratan hukum, dan perjanjian, lalu pilih Beli.
Menyiapkan aplikasi Microsoft Entra dan perwakilan layanan
Ketika Anda membutuhkan enkripsi untuk diaktifkan pada VM yang berjalan di Azure, Azure Disk Encryption akan menghasilkan dan menulis kunci enkripsi ke key vault Anda. Mengelola kunci enkripsi di brankas kunci Anda memerlukan autentikasi Microsoft Entra. Buat aplikasi Microsoft Entra untuk tujuan ini. Untuk tujuan autentikasi, Anda dapat menggunakan autentikasi berbasis rahasia klien atau autentikasi Microsoft Entra berbasis sertifikat klien.
Menyiapkan aplikasi Microsoft Entra dan perwakilan layanan dengan Azure PowerShell
Untuk menjalankan perintah berikut, dapatkan dan gunakan modul Azure PowerShell.
Gunakan cmdlet PowerShell New-AzADApplication untuk membuat aplikasi Microsoft Entra. MyApplicationHomePage dan MyApplicationUri dapat menjadi nilai apa saja yang Anda inginkan.
$aadClientSecret = "My AAD client secret" $aadClientSecretSec = ConvertTo-SecureString -String $aadClientSecret -AsPlainText -Force $azureAdApplication = New-AzADApplication -DisplayName "My Application Display Name" -HomePage "https://MyApplicationHomePage" -IdentifierUris "https://MyApplicationUri" -Password $aadClientSecretSec $servicePrincipal = New-AzADServicePrincipal –ApplicationId $azureAdApplication.ApplicationId -Role Contributor
$azureAdApplication.ApplicationId adalah Microsoft Entra ClientID dan $aadClientSecret adalah rahasia klien yang akan Anda gunakan nanti untuk mengaktifkan Azure Disk Encryption. Lindungi rahasia klien Microsoft Entra dengan tepat. Menjalankan
$azureAdApplication.ApplicationId
akan menunjukkan ApplicationID.
Menyiapkan aplikasi Microsoft Entra dan perwakilan layanan dengan Azure CLI
Anda dapat mengelola perwakilan layanan dengan Azure CLI menggunakan perintah az ad sp. Untuk informasi selengkapnya, lihat Membuat perwakilan layanan Azure.
Buat perwakilan layanan baru.
az ad sp create-for-rbac --name "ServicePrincipalName" --password "My-AAD-client-secret" --role Contributor --scopes /subscriptions/<subscription_id>
appId yang dikembalikan adalah Microsoft Entra ClientID yang digunakan dalam perintah lain. Hal ini juga merupakan SPN yang akan Anda gunakan untuk set-policy az keyvault. Kata sandi adalah rahasia klien yang harus Anda gunakan nanti untuk mengaktifkan Azure Disk Encryption. Lindungi rahasia klien Microsoft Entra dengan tepat.
Menyiapkan aplikasi Microsoft Entra dan perwakilan layanan melalui portal Azure
Gunakan langkah-langkah dari artikel Menggunakan portal untuk membuat aplikasi Microsoft Entra dan perwakilan layanan yang dapat mengakses sumber daya untuk membuat aplikasi Microsoft Entra. Setiap langkah yang tercantum di bawah ini akan membawa Anda langsung ke bagian artikel untuk diselesaikan.
- Memverifikasi izin yang diperlukan
- Membuat aplikasi Microsoft Entra
- Anda dapat menggunakan nama dan URL sign-on apa pun yang Anda inginkan saat membuat aplikasi.
- Dapatkan ID aplikasi dan kunci autentikasi.
- Kunci autentikasi adalah rahasia klien dan digunakan sebagai AadClientSecret untuk Set-AzVMDiskEncryptionExtension.
- Kunci autentikasi digunakan oleh aplikasi sebagai kredensial untuk masuk ke ID Microsoft Entra. Di portal Microsoft Azure, rahasia ini disebut kunci, tetapi tidak memiliki hubungan dengan key vault. Amankan rahasia ini dengan tepat.
- ID aplikasi akan digunakan nantinya sebagai AadClientId untuk Set-AzVMDiskEncryptionExtension dan sebagai ServicePrincipalName untuk Set-AzKeyVaultAccessPolicy.
- Kunci autentikasi adalah rahasia klien dan digunakan sebagai AadClientSecret untuk Set-AzVMDiskEncryptionExtension.
Mengatur kebijakan akses brankas kunci untuk aplikasi Microsoft Entra
Untuk menulis rahasia enkripsi ke Key Vault tertentu, Azure Disk Encryption memerlukan ID Klien dan Rahasia Klien aplikasi Microsoft Entra yang memiliki izin untuk menulis rahasia ke Key Vault.
Catatan
Azure Disk Encryption mengharuskan Anda mengonfigurasi kebijakan akses berikut ke aplikasi klien Microsoft Entra Anda: Izin WrapKey dan Set .
Mengatur kebijakan akses brankas kunci untuk aplikasi Microsoft Entra dengan Azure PowerShell
Aplikasi Microsoft Entra Anda memerlukan hak untuk mengakses kunci atau rahasia di vault. Gunakan cmdlet Set-AzKeyVaultAccessPolicy untuk memberikan izin ke aplikasi, menggunakan ID klien (yang dihasilkan ketika aplikasi terdaftar) sebagai nilai parameter –ServicePrincipalName. Untuk mempelajari selengkapnya, lihat posting blog Azure Key Vault - Langkah demi Langkah.
Atur kebijakan akses key vault untuk aplikasi AD menggunakan PowerShell.
$keyVaultName = 'MySecureVault' $aadClientID = 'MyAadAppClientID' $KVRGname = 'MyKeyVaultResourceGroup' Set-AzKeyVaultAccessPolicy -VaultName $keyVaultName -ServicePrincipalName $aadClientID -PermissionsToKeys 'WrapKey' -PermissionsToSecrets 'Set' -ResourceGroupName $KVRGname
Mengatur kebijakan akses brankas kunci untuk aplikasi Microsoft Entra dengan Azure CLI
Gunakan az keyvault set-policy untuk mengatur kebijakan akses. Untuk informasi selengkapnya, lihat Mengelola Key Vault menggunakan CLI 2.0.
Berikan perwakilan layanan yang Anda buat melalui akses Azure CLI untuk mendapatkan rahasia dan warp key dengan perintah berikut:
az keyvault set-policy --name "MySecureVault" --spn "<spn created with CLI/the Azure AD ClientID>" --key-permissions wrapKey --secret-permissions set
Mengatur kebijakan akses brankas kunci untuk aplikasi Microsoft Entra dengan portal
- Buka grup sumber daya dengan key vault Anda.
- Pilih brankas kunci Anda, buka Kebijakan Akses, lalu pilih Tambahkan baru.
- Di bawah Pilih prinsipal, cari aplikasi Microsoft Entra yang Anda buat dan pilih.
- Untuk Izin kunci, centang Warp Key di bawah Operasi Kriptografis.
- Untuk Izin Rahasia, centang Atur di bawah Operasi Manajemen Rahasia.
- Pilih OK untuk menyimpan kebijakan akses.
Mengatur kebijakan akses tingkat lanjut key vault
Platform Azure membutuhkan akses ke kunci enkripsi atau rahasia di key vault Anda untuk membuatnya tersedia bagi VM untuk mem-boot dan mendekripsi volume. Aktifkan enkripsi disk pada key vault atau penyebaran akan gagal.
Mengatur kebijakan akses tingkat lanjut key vault menggunakan Azure PowerShell
Gunakan key vault cmdlet PowerShell Set-AzKeyVaultAccessPolicy guna mengaktifkan enkripsi disk untuk key vault.
Aktifkan Key Vault untuk enkripsi disk: EnabledForDiskEncryption diperlukan untuk enkripsi Azure Disk.
Set-AzKeyVaultAccessPolicy -VaultName 'MySecureVault' -ResourceGroupName 'MyKeyVaultResourceGroup' -EnabledForDiskEncryption
Aktifkan Key Vault untuk penyebaran, jika diperlukan: Mengaktifkan Microsoft. Penyedia sumber daya komputasi untuk mengambil rahasia dari brankas kunci ini ketika brankas kunci ini direferensikan dalam pembuatan sumber daya, misalnya saat membuat komputer virtual.
Set-AzKeyVaultAccessPolicy -VaultName 'MySecureVault' -ResourceGroupName 'MyKeyVaultResourceGroup' -EnabledForDeployment
Mengaktifkan Key Vault untuk penyebaran template, jika dibutuhkan: Mengaktifkan Azure Resource Manager untuk mendapatkan rahasia dari key vault ini saat key vault ini direferensikan dalam penyebaran template.
Set-AzKeyVaultAccessPolicy -VaultName 'MySecureVault' -ResourceGroupName 'MyKeyVaultResourceGroup' -EnabledForTemplateDeployment
Mengatur kebijakan akses tingkat lanjut kubah utama menggunakan Azure CLI
Gunakan pembaruan keyvault az untuk mengaktifkan enkripsi disk untuk key vault.
Aktifkan Key Vault untuk enkripsi disk: Diaktifkan-untuk-disk-enkripsi diperlukan.
az keyvault update --name "MySecureVault" --resource-group "MyKeyVaultResourceGroup" --enabled-for-disk-encryption "true"
Mengaktifkan Key Vault untuk penyebaran, jika dibutuhkan: Izinkan Microsoft Azure Virtual Machines untuk mengambil sertifikat yang disimpan sebagai rahasia dari vault.
az keyvault update --name "MySecureVault" --resource-group "MyKeyVaultResourceGroup" --enabled-for-deployment "true"
Mengaktifkan Vault Kunci untuk penyebaran template, jika dibutuhkan: Izinkan Azure Resource Manager untuk mengambil rahasia dari vault.
az keyvault update --name "MySecureVault" --resource-group "MyKeyVaultResourceGroup" --enabled-for-template-deployment "true"
Mengatur kebijakan akses tingkat lanjut key vault melalui portal Microsoft Azure
- Pilih keyvault Anda, buka Kebijakan Akses, dan Klik untuk menampilkan kebijakan akses lanjutan.
- Pilih kotak berlabel Aktifkan akses ke Azure Disk Encryption untuk enkripsi volume.
- Pilih Aktifkan akses ke Azure Virtual Machines untuk penerapan dan/atau Aktifkan Akses ke Azure Resource Manager untuk penerapan template, jika diperlukan.
- Pilih Simpan.
Mengatur kunci enkripsi kunci (opsional)
Jika Anda ingin menggunakan kunci enkripsi kunci (KEK) untuk lapisan keamanan tambahan untuk kunci enkripsi, tambahkan KEK ke brankas kunci Anda. Gunakan cmdlet Add-AzKeyVaultKey untuk membuat key encryption key di key vault. Anda juga dapat mengimpor KEK dari HSM manajemen kunci lokal Anda. Untuk informasi selengkapnya, lihat Dokumentasi Kunci Vault. Ketika kunci enkripsi kunci ditentukan, Azure Disk Encryption menggunakan kunci tersebut untuk membungkus rahasia enkripsi sebelum menulis ke Key Vault.
Saat menghasilkan kunci, gunakan jenis kunci RSA. Azure Disk Encryption belum mendukung penggunaan kunci Kurva Elips.
URL rahasia dan KEK key vault Anda harus berversi. Azure memberlakukan pembatasan penerapan versi ini. Untuk URL rahasia dan KEK yang valid, lihat contoh berikut:
- Contoh URL rahasia yang valid: https://contosovault.vault.azure.net/secrets/EncryptionSecretWithKek/xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
- Contoh URL KEK yang valid: https://contosovault.vault.azure.net/keys/diskencryptionkek/xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
Azure Disk Encryption tidak mendukung penentuan nomor port sebagai bagian dari rahasia brankas kunci dan URL KEK. Untuk contoh URL vault kunci yang tidak didukung dan didukung, lihat contoh berikut:
- URL brankas kunci yang tidak dapat diterima https://contosovault.vault.azure.net:443/secrets/contososecret/xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
- URL brankas kunci yang dapat diterima: https://contosovault.vault.azure.net/secrets/contososecret/xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
Mengatur kunci enkripsi kunci dengan Azure PowerShell
Sebelum menggunakan skrip PowerShell, Anda harus terbiasa dengan prasyarat Azure Disk Encryption untuk memahami langkah-langkah dalam skrip. Sampel skrip mungkin membutuhkan perubahan untuk lingkungan Anda. Skrip ini membuat semua prasyarat Azure Disk Encryption dan mengenkripsi IaaS VM yang ada, membungkus kunci enkripsi disk dengan menggunakan key encryption key.
# Step 1: Create a new resource group and key vault in the same location.
# Fill in 'MyLocation', 'MyKeyVaultResourceGroup', and 'MySecureVault' with your values.
# Use Get-AzLocation to get available locations and use the DisplayName.
# To use an existing resource group, comment out the line for New-AzResourceGroup
$Loc = 'MyLocation';
$KVRGname = 'MyKeyVaultResourceGroup';
$KeyVaultName = 'MySecureVault';
New-AzResourceGroup –Name $KVRGname –Location $Loc;
New-AzKeyVault -VaultName $KeyVaultName -ResourceGroupName $KVRGname -Location $Loc;
$KeyVault = Get-AzKeyVault -VaultName $KeyVaultName -ResourceGroupName $KVRGname;
$KeyVaultResourceId = (Get-AzKeyVault -VaultName $KeyVaultName -ResourceGroupName $KVRGname).ResourceId;
$diskEncryptionKeyVaultUrl = (Get-AzKeyVault -VaultName $KeyVaultName -ResourceGroupName $KVRGname).VaultUri;
# Step 2: Create the AD application and service principal.
# Fill in 'MyAADClientSecret', "<My Application Display Name>", "<https://MyApplicationHomePage>", and "<https://MyApplicationUri>" with your values.
# MyApplicationHomePage and the MyApplicationUri can be any values you wish.
$aadClientSecret = 'MyAADClientSecret';
$aadClientSecretSec = ConvertTo-SecureString -String $aadClientSecret -AsPlainText -Force;
$azureAdApplication = New-AzADApplication -DisplayName "<My Application Display Name>" -HomePage "<https://MyApplicationHomePage>" -IdentifierUris "<https://MyApplicationUri>" -Password $aadClientSecretSec
$servicePrincipal = New-AzADServicePrincipal –ApplicationId $azureAdApplication.ApplicationId -Role Contributor;
$aadClientID = $azureAdApplication.ApplicationId;
#Step 3: Enable the vault for disk encryption and set the access policy for the Microsoft Entra application.
Set-AzKeyVaultAccessPolicy -VaultName $KeyVaultName -ResourceGroupName $KVRGname -EnabledForDiskEncryption;
Set-AzKeyVaultAccessPolicy -VaultName $keyVaultName -ServicePrincipalName $aadClientID -PermissionsToKeys 'WrapKey' -PermissionsToSecrets 'Set' -ResourceGroupName $KVRGname;
#Step 4: Create a new key in the key vault with the Add-AzKeyVaultKey cmdlet.
# Fill in 'MyKeyEncryptionKey' with your value.
$keyEncryptionKeyName = 'MyKeyEncryptionKey';
Add-AzKeyVaultKey -VaultName $KeyVaultName -Name $keyEncryptionKeyName -Destination 'Software';
$keyEncryptionKeyUrl = (Get-AzKeyVaultKey -VaultName $KeyVaultName -Name $keyEncryptionKeyName).Key.kid;
#Step 5: Encrypt the disks of an existing IaaS VM
# Fill in 'MySecureVM' and 'MyVirtualMachineResourceGroup' with your values.
$VMName = 'MySecureVM';
$VMRGName = 'MyVirtualMachineResourceGroup';
Set-AzVMDiskEncryptionExtension -ResourceGroupName $VMRGName -VMName $vmName -AadClientID $aadClientID -AadClientSecret $aadClientSecret -DiskEncryptionKeyVaultUrl $diskEncryptionKeyVaultUrl -DiskEncryptionKeyVaultId $KeyVaultResourceId -KeyEncryptionKeyUrl $keyEncryptionKeyUrl -KeyEncryptionKeyVaultId $KeyVaultResourceId;
Autentikasi berbasis sertifikat (opsional)
Jika Anda ingin menggunakan autentikasi sertifikat, Anda dapat mengunggahnya ke key vault dan menyebarkannya ke klien. Sebelum menggunakan skrip PowerShell, Anda harus terbiasa dengan prasyarat Azure Disk Encryption untuk memahami langkah-langkah dalam skrip. Sampel skrip mungkin membutuhkan perubahan untuk lingkungan Anda.
# Fill in "MyKeyVaultResourceGroup", "MySecureVault", and 'MyLocation' ('My location' only if needed)
$KVRGname = 'MyKeyVaultResourceGroup'
$KeyVaultName= 'MySecureVault'
# Create a key vault and set enabledForDiskEncryption property on it.
# Comment out the next three lines if you already have an existing key vault enabled for encryption. No need to set 'My location' in this case.
$Loc = 'MyLocation'
New-AzKeyVault -VaultName $KeyVaultName -ResourceGroupName $KVRGname -Location $Loc
Set-AzKeyVaultAccessPolicy -VaultName $KeyVaultName -ResourceGroupName $KVRGname -EnabledForDiskEncryption
#Setting some variables with the key vault information
$KeyVault = Get-AzKeyVault -VaultName $KeyVaultName -ResourceGroupName $KVRGname
$DiskEncryptionKeyVaultUrl = $KeyVault.VaultUri
$KeyVaultResourceId = $KeyVault.ResourceId
# Create the Microsoft Entra application and associate the certificate with it.
# Fill in "C:\certificates\mycert.pfx", "Password", "<My Application Display Name>", "<https://MyApplicationHomePage>", and "<https://MyApplicationUri>" with your values.
# MyApplicationHomePage and the MyApplicationUri can be any values you wish
$CertPath = "C:\certificates\mycert.pfx"
$CertPassword = "Password"
$Cert = New-Object System.Security.Cryptography.X509Certificates.X509Certificate2($CertPath, $CertPassword)
$CertValue = [System.Convert]::ToBase64String($cert.GetRawCertData())
$AzureAdApplication = New-AzADApplication -DisplayName "<My Application Display Name>" -HomePage "<https://MyApplicationHomePage>" -IdentifierUris "<https://MyApplicationUri>" -CertValue $CertValue
$ServicePrincipal = New-AzADServicePrincipal -ApplicationId $AzureAdApplication.ApplicationId -Role Contributor
$AADClientID = $AzureAdApplication.ApplicationId
$aadClientCertThumbprint= $cert.Thumbprint
Set-AzKeyVaultAccessPolicy -VaultName $keyVaultName -ServicePrincipalName $aadClientID -PermissionsToKeys 'WrapKey' -PermissionsToSecrets 'Set' -ResourceGroupName $KVRGname
# Upload the pfx file to the key vault.
# Fill in "MyAADCert".
$KeyVaultSecretName = "MyAADCert"
$FileContentBytes = get-content $CertPath -Encoding Byte
$FileContentEncoded = [System.Convert]::ToBase64String($fileContentBytes)
$JSONObject = @"
{
"data" : "$filecontentencoded",
"dataType" : "pfx",
"password" : "$CertPassword"
}
"@
$JSONObjectBytes = [System.Text.Encoding]::UTF8.GetBytes($jsonObject)
$JSONEncoded = [System.Convert]::ToBase64String($jsonObjectBytes)
#Set the secret and set the key vault policy for -EnabledForDeployment
$Secret = ConvertTo-SecureString -String $JSONEncoded -AsPlainText -Force
Set-AzKeyVaultSecret -VaultName $KeyVaultName -Name $KeyVaultSecretName -SecretValue $Secret
Set-AzKeyVaultAccessPolicy -VaultName $KeyVaultName -ResourceGroupName $KVRGname -EnabledForDeployment
# Deploy the certificate to the VM
# Fill in 'MySecureVM' and 'MyVirtualMachineResourceGroup' with your values.
$VMName = 'MySecureVM'
$VMRGName = 'MyVirtualMachineResourceGroup'
$CertUrl = (Get-AzKeyVaultSecret -VaultName $KeyVaultName -Name $KeyVaultSecretName).Id
$SourceVaultId = (Get-AzKeyVault -VaultName $KeyVaultName -ResourceGroupName $KVRGName).ResourceId
$VM = Get-AzVM -ResourceGroupName $VMRGName -Name $VMName
$VM = Add-AzVMSecret -VM $VM -SourceVaultId $SourceVaultId -CertificateStore "My" -CertificateUrl $CertUrl
Update-AzVM -VM $VM -ResourceGroupName $VMRGName
#Enable encryption on the VM using Microsoft Entra client ID and the client certificate thumbprint
Set-AzVMDiskEncryptionExtension -ResourceGroupName $VMRGName -VMName $VMName -AadClientID $AADClientID -AadClientCertThumbprint $AADClientCertThumbprint -DiskEncryptionKeyVaultUrl $DiskEncryptionKeyVaultUrl -DiskEncryptionKeyVaultId $KeyVaultResourceId
Autentikasi berbasis sertifikat dan KEK (opsional)
Jika Anda ingin menggunakan autentikasi sertifikat dan membungkus kunci enkripsi dengan KEK, Anda dapat menggunakan skrip di bawah ini sebagai contoh. Sebelum menggunakan skrip PowerShell, Anda harus memahami semua prasyarat Azure Disk Encryption sebelumnya untuk memahami langkah-langkah dalam skrip. Sampel skrip mungkin membutuhkan perubahan untuk lingkungan Anda.
Penting
Autentikasi berbasis sertifikat Microsoft Entra saat ini tidak didukung pada VM Linux.
# Fill in 'MyKeyVaultResourceGroup', 'MySecureVault', and 'MyLocation' (if needed)
$KVRGname = 'MyKeyVaultResourceGroup'
$KeyVaultName= 'MySecureVault'
# Create a key vault and set enabledForDiskEncryption property on it.
# Comment out the next three lines if you already have an existing key vault enabled for encryption.
$Loc = 'MyLocation'
New-AzKeyVault -VaultName $KeyVaultName -ResourceGroupName $KVRGname -Location $Loc
Set-AzKeyVaultAccessPolicy -VaultName $KeyVaultName -ResourceGroupName $KVRGname -EnabledForDiskEncryption
# Create the Azure AD application and associate the certificate with it.
# Fill in "C:\certificates\mycert.pfx", "Password", "<My Application Display Name>", "<https://MyApplicationHomePage>", and "<https://MyApplicationUri>" with your values.
# MyApplicationHomePage and the MyApplicationUri can be any values you wish
$CertPath = "C:\certificates\mycert.pfx"
$CertPassword = "Password"
$Cert = New-Object System.Security.Cryptography.X509Certificates.X509Certificate2($CertPath, $CertPassword)
$CertValue = [System.Convert]::ToBase64String($cert.GetRawCertData())
$AzureAdApplication = New-AzADApplication -DisplayName "<My Application Display Name>" -HomePage "<https://MyApplicationHomePage>" -IdentifierUris "<https://MyApplicationUri>" -CertValue $CertValue
$ServicePrincipal = New-AzADServicePrincipal -ApplicationId $AzureAdApplication.ApplicationId -Role Contributor
$AADClientID = $AzureAdApplication.ApplicationId
$aadClientCertThumbprint= $cert.Thumbprint
## Give access for setting secrets and wraping keys
Set-AzKeyVaultAccessPolicy -VaultName $keyVaultName -ServicePrincipalName $aadClientID -PermissionsToKeys 'WrapKey' -PermissionsToSecrets 'Set' -ResourceGroupName $KVRGname
# Upload the pfx file to the key vault.
# Fill in "MyAADCert".
$KeyVaultSecretName = "MyAADCert"
$FileContentBytes = get-content $CertPath -Encoding Byte
$FileContentEncoded = [System.Convert]::ToBase64String($fileContentBytes)
$JSONObject = @"
{
"data" : "$filecontentencoded",
"dataType" : "pfx",
"password" : "$CertPassword"
}
"@
$JSONObjectBytes = [System.Text.Encoding]::UTF8.GetBytes($jsonObject)
$JSONEncoded = [System.Convert]::ToBase64String($jsonObjectBytes)
#Set the secret and set the key vault policy for deployment
$Secret = ConvertTo-SecureString -String $JSONEncoded -AsPlainText -Force
Set-AzKeyVaultSecret -VaultName $KeyVaultName -Name $KeyVaultSecretName -SecretValue $Secret
Set-AzKeyVaultAccessPolicy -VaultName $KeyVaultName -ResourceGroupName $KVRGname -EnabledForDeployment
#Setting some variables with the key vault information and generating a KEK
# FIll in 'KEKName'
$KEKName ='KEKName'
$KeyVault = Get-AzKeyVault -VaultName $KeyVaultName -ResourceGroupName $KVRGname
$DiskEncryptionKeyVaultUrl = $KeyVault.VaultUri
$KeyVaultResourceId = $KeyVault.ResourceId
$KEK = Add-AzKeyVaultKey -VaultName $KeyVaultName -Name $KEKName -Destination "Software"
$KeyEncryptionKeyUrl = $KEK.Key.kid
# Deploy the certificate to the VM
# Fill in 'MySecureVM' and 'MyVirtualMachineResourceGroup' with your values.
$VMName = 'MySecureVM';
$VMRGName = 'MyVirtualMachineResourceGroup';
$CertUrl = (Get-AzKeyVaultSecret -VaultName $KeyVaultName -Name $KeyVaultSecretName).Id
$SourceVaultId = (Get-AzKeyVault -VaultName $KeyVaultName -ResourceGroupName $KVRGName).ResourceId
$VM = Get-AzVM -ResourceGroupName $VMRGName -Name $VMName
$VM = Add-AzVMSecret -VM $VM -SourceVaultId $SourceVaultId -CertificateStore "My" -CertificateUrl $CertUrl
Update-AzVM -VM $VM -ResourceGroupName $VMRGName
#Enable encryption on the VM using Azure AD client ID and the client certificate thumbprint
Set-AzVMDiskEncryptionExtension -ResourceGroupName $VMRGName -VMName $VMName -AadClientID $AADClientID -AadClientCertThumbprint $AADClientCertThumbprint -DiskEncryptionKeyVaultUrl $DiskEncryptionKeyVaultUrl -DiskEncryptionKeyVaultId $KeyVaultResourceId -KeyEncryptionKeyUrl $keyEncryptionKeyUrl -KeyEncryptionKeyVaultId $KeyVaultResourceId
Langkah berikutnya
Mengaktifkan Azure Disk Encryption dengan ID Microsoft Entra di VM Linux (rilis sebelumnya)