這很重要
Azure 磁碟加密預定於 2028 年 9 月 15 日退休。 在此之前,您可以繼續使用 Azure 磁碟加密,不會中斷。 2028 年 9 月 15 日,啟用 ADE 的工作負載仍可繼續運行,但加密磁碟在虛擬機重啟後將無法解鎖,導致服務中斷。
對於新虛擬機,可以在主機上使用 加密 ,或考慮 機密虛擬機大小搭配作業系統磁碟加密 來處理機密運算工作負載。 所有啟用 ADE 的虛擬機(包括備份)必須在退休日前遷移至主機加密,以避免服務中斷。 詳情請參見「 從 Azure 磁碟加密遷移到主機加密 」。
適用於:✔️ Windows VM ✔️ 彈性擴展集
適用於 Windows 虛擬機器 (VM) 的 Azure 磁碟加密會使用 Windows 的 BitLocker 功能,提供作業系統磁碟和資料磁碟的完整磁碟加密。 此外,當參數 VolumeType 為 All時,它會加密臨時磁碟。
Azure 磁碟加密會與 Azure Key Vault 整合,協助您控制及管理磁碟加密金鑰與祕密。 如需服務的概觀,請參閱適用於 Windows VM 的 Azure 磁碟加密。
必要條件
你只能對 支援的虛擬機大小和作業系統的虛擬機套用磁碟加密。 你還必須符合以下先決條件:
限制
如果你之前用 Azure 磁碟加密 搭配 Microsoft Entra ID 來加密虛擬機,請繼續使用此選項來加密你的虛擬機。 如需詳細資料,請參閱將 Azure 磁碟加密與 Microsoft Entra ID 搭配使用 (舊版)。
在磁碟加密前先 擷取快照或 建立備份。 擁有備份可確保在加密期間發生任何非預期的失敗時,能有復原選項可供選擇。 具有受控磁碟的 VM 需要有備份,才能進行加密。 在建立備份後,您可以使用 Set-AzVMDiskEncryptionExtension Cmdlet 並指定 -skipVmBackup 參數來加密受控磁碟。 如需如何備份和還原已加密 VM 的詳細資訊,請參閱備份和還原加密的 Azure VM。
加密或停用加密可能會導致虛擬機重新啟動。
Azure 磁碟加密 在以下情境、功能和技術上無法使用:
- 將基本層 VM 或透過傳統 VM 建立方法所建立的 VM 加密。
- 使用暫存磁碟 (Ddsv6、Dldsv6、Edsv6、Dadsv6、Dadsv6、Daldsv6、Eadsv6、Dpdsv6、Dpldsv6、Epdsv6 或 Endsv6) 加密 v6 系列 VM。 欲了解更多資訊,請參閱 Azure 虛擬機大小中列出的各虛擬機大小頁面。
- 加密 V7 系列及較新的虛擬機規格。
- BitLocker 的所有需求和限制,例如需要NTFS。 如需詳細資訊,請參閱 BitLocker 概觀。
- 加密已設定軟體型 RAID 系統的 VM。
- 使用 儲存空間直接存取 (S2D) 設定的加密虛擬機器,或在 2016 之前的 Windows Server 版本中設定的 Windows Storage Spaces。
- 與內部部署金鑰管理系統整合。
- Azure 檔案 (共用檔案系統)。
- 網路檔案系統 (NFS)。
- 動態磁碟區。
- Windows Server 容器,會為每個容器建立動態磁碟區。
- 暫時性 OS 磁碟。
- iSCSI 磁碟。
- 加密共用/分散式檔案系統,例如 (但不限於):DFS、GFS、DRDB 和 CephFS。
- 將已加密的 VM 移到另一個訂閱或區域。
- 建立已加密 VM 的映像或快照集,並用於部署其他 VM。
- 「L」系列儲存體最佳化虛擬機器大小系列。
- 具有寫入加速器磁碟的 M 系列 VM。
- 將 ADE 套用至磁碟已使用 主機端加密 或 使用客戶管理金鑰的伺服器端加密(SSE + CMK)的虛擬機器。 將 SSE + CMK 套用到資料磁碟,或者將已設定 SSE + CMK 的資料磁碟新增到使用 ADE 加密的 VM,也是不支援的情節。
- 將一台曾用 DEDE 加密或曾經被 DED 加密的虛擬機,遷移到主機或伺服器端使用客戶管理的金鑰加密。
- 加密故障轉移叢集中的 VM。
- Azure Ultra 磁碟的加密。
- 進階 SSD v2 磁碟的加密。
- 在已啟用
Secrets should have the specified maximum validity period原則且套用 拒絕效果 的訂用帳戶中進行 VM 加密。 - 在已啟用
金鑰保存庫 secrets should have an expiration date原則且套用 拒絕效果 的訂用帳戶中進行 VM 加密。
安裝工具並連線至 Azure
你可以透過 Azure CLI 和 Azure PowerShell 啟用並管理 Azure 磁碟加密。 要做到這點,請在本地安裝工具並連接到你的 Azure 訂閱。
Azure CLI
Azure CLI 2.0 是命令列工具,可用於管理 Azure 資源。 CLI 的設計是要讓您能夠彈性地查詢資料、以非封鎖處理序的形式支援長時間執行作業,並輕鬆地撰寫指令碼。 您可以遵循安裝 Azure CLI 中的步驟,將其安裝到本機。
要用 Azure CLI 登入你的 Azure 帳號,請使用 az login 指令。
az login
若要選取租用戶以登入,請使用:
az login --tenant <tenant>
要指定多個訂閱之一,請使用 az 帳號清單取得訂閱清單,並用 az 帳號設定來指定訂閱。
az account list
az account set --subscription "<subscription name or ID>"
更多資訊請參閱Get started with Azure CLI。
Azure PowerShell
Azure PowerShell Az 模組提供一組 cmdlet,利用 Azure Resource Manager 模型來管理你的 Azure 資源。 你可以在瀏覽器裡搭配 Azure Cloud Shell 使用它,或者你可以依照 Install the Azure PowerShell 模組中的說明在本地機器上安裝。
如果你已經在本地安裝了,請使用最新的 Azure PowerShell 版本來設定 Azure 磁碟加密。 從 Azure PowerShell releases 下載最新版本。
要用 Azure PowerShell 登入你的 Azure 帳戶,請使用 Connect-AzAccount cmdlet。
Connect-AzAccount
若要指定多個訂閱之一,請使用 Get-AzSubscription cmdlet 列出它們,接著是 Set-AzContext cmdlet:
Set-AzContext -Subscription <SubscriptionId>
執行 Get-AzContext 指令檔以確認所選訂閱是正確的。
要確認 Azure 磁碟加密 的 cmdlet 是否已安裝,請使用 Get-Command cmdlet:
Get-Command *diskencryption*
如需詳細資訊,請參閱開始使用 Azure PowerShell。
在現有或執行中的 Windows VM 上啟用加密
在這個案例中,您可以使用 Resource Manager 範本、PowerShell Cmdlet 或 CLI 命令啟用加密。 若您需要虛擬機器擴充功能之結構描述資訊,請參閱 Windows 擴充功能的 Azure 磁碟加密一文。
使用 Azure PowerShell 啟用現有或正在執行的虛擬機加密
在 Azure 中使用 Set-AzVMDiskEncryptionExtension Cmdlet 以在執行 IaaS 的虛擬機器上啟用加密。
加密正在執行的虛擬機: 以下腳本會初始化你的變數並執行 Set-AzVMDiskEncryptionExtension cmdlet。 資源群組、虛擬機和金鑰庫必須已經作為前置條件存在。 以您的值取代 MyKeyVaultResourceGroup、MyVirtualMachineResourceGroup、MySecureVM 和 MySecureVault。
$KVRGname = 'MyKeyVaultResourceGroup'; $VMRGName = 'MyVirtualMachineResourceGroup'; $vmName = 'MySecureVM'; $KeyVaultName = 'MySecureVault'; $KeyVault = Get-AzKeyVault -VaultName $KeyVaultName -ResourceGroupName $KVRGname; $diskEncryptionKeyVaultUrl = $KeyVault.VaultUri; $KeyVaultResourceId = $KeyVault.ResourceId; Set-AzVMDiskEncryptionExtension -ResourceGroupName $VMRGname -VMName $vmName -DiskEncryptionKeyVaultUrl $diskEncryptionKeyVaultUrl -DiskEncryptionKeyVaultId $KeyVaultResourceId;透過使用 KEK 加密正在執行的虛擬機:
$KVRGname = 'MyKeyVaultResourceGroup'; $VMRGName = 'MyVirtualMachineResourceGroup'; $vmName = 'MyExtraSecureVM'; $KeyVaultName = 'MySecureVault'; $keyEncryptionKeyName = 'MyKeyEncryptionKey'; $KeyVault = Get-AzKeyVault -VaultName $KeyVaultName -ResourceGroupName $KVRGname; $diskEncryptionKeyVaultUrl = $KeyVault.VaultUri; $KeyVaultResourceId = $KeyVault.ResourceId; $keyEncryptionKeyUrl = (Get-AzKeyVaultKey -VaultName $KeyVaultName -Name $keyEncryptionKeyName).Key.kid; Set-AzVMDiskEncryptionExtension -ResourceGroupName $VMRGname -VMName $vmName -DiskEncryptionKeyVaultUrl $diskEncryptionKeyVaultUrl -DiskEncryptionKeyVaultId $KeyVaultResourceId -KeyEncryptionKeyUrl $keyEncryptionKeyUrl -KeyEncryptionKeyVaultId $KeyVaultResourceId;注意
disk-encryption-keyvault 參數的值語法為完整識別碼字串:/subscriptions/[subscription-id-guid]/resourceGroups/[resource-group-name]/providers/Microsoft.KeyVault/vaults/[keyvault-name]
key-encryption-key 參數的值語法為 KEK 的完整 URI,如下:https://[keyvault-name].vault.azure.net/keys/[kekname]/[kek-unique-id]確認磁碟已加密: 若要檢查 IaaS VM 的加密狀態,請使用 Get-AzVmDiskEncryptionStatus Cmdlet。
Get-AzVmDiskEncryptionStatus -ResourceGroupName 'MyVirtualMachineResourceGroup' -VMName 'MySecureVM'
若要停用加密,請參閱停用加密並移除加密延伸模組 (英文)。
透過使用 Azure CLI 在現有或正在執行的虛擬機上啟用加密功能
在 Azure 中使用 az vm encryption enable 命令以在執行中的 IaaS 虛擬機器上啟用加密。
加密執行中的 VM:
az vm encryption enable --resource-group "MyVirtualMachineResourceGroup" --name "MySecureVM" --disk-encryption-keyvault "MySecureVault" --volume-type [All|OS|Data]透過使用 KEK 加密正在執行的虛擬機:
az vm encryption enable --resource-group "MyVirtualMachineResourceGroup" --name "MySecureVM" --disk-encryption-keyvault "MySecureVault" --key-encryption-key "MyKEK_URI" --key-encryption-keyvault "MySecureVaultContainingTheKEK" --volume-type [All|OS|Data]注意
disk-encryption-keyvault 參數的值語法為完整識別碼字串:/subscriptions/[subscription-id-guid]/resourceGroups/[resource-group-name]/providers/Microsoft.KeyVault/vaults/[keyvault-name]
key-encryption-key 參數的值語法為 KEK 的完整 URI,如下:https://[keyvault-name].vault.azure.net/keys/[kekname]/[kek-unique-id]確認磁碟已加密:若要檢查 IaaS VM 的加密狀態,請使用 az vm encryption show 命令。
az vm encryption show --name "MySecureVM" --resource-group "MyVirtualMachineResourceGroup"
若要停用加密,請參閱停用加密並移除加密延伸模組 (英文)。
使用 Resource Manager 範本
您可以使用 Resource Manager 範本來加密執行中的 Windows VM,以在 Azure 中現有或執行中的 IaaS Windows VM 上啟用磁碟加密。
在 Azure 快速啟動範本中,選擇「部署到 Azure」。
選取訂用帳戶、資源群組、位置、設定、法律條款及合約。 選擇 購買 以啟用現有或正在運行中的 IaaS 虛擬機加密。
下表列出現有或執行中 VM 的 Resource Manager 範本參數︰
| 參數 | 描述 |
|---|---|
| vmName | 要執行加密作業的 VM 名稱。 |
| keyVaultName | 應上傳 BitLocker 金鑰的金鑰保存庫名稱。 您可以使用 Cmdlet (Get-AzKeyVault -ResourceGroupName <MyKeyVaultResourceGroupName>). Vaultname 或 Azure CLI 命令 az keyvault list --resource-group "MyKeyVaultResourceGroup" 來取得 |
| keyVaultResourceGroup | 包含金鑰保存庫的資源群組名稱 |
| keyEncryptionKeyURL (金鑰加密金鑰網址) | 金鑰加密的 URL,格式為 https://<keyvault-name>.vault.azure.net/key/<key-name>。 如果你不想使用 KEK,請將此欄位留空。 |
| volumeType | 執行加密作業所在磁碟區的類型。 有效值為 OS、Data 和 All。 |
| forceUpdateTag | 每次作業需要強制執行時,都要傳入類似 GUID 的唯一值。 |
| 調整OS磁碟大小 | 是否應該先將 OS 分割區調整大小以佔用完整的 OS VHD,然後才分割系統磁碟區。 |
| 位置 | 所有資源的所在位置。 |
從客戶加密的 VHD 與加密金鑰建立的新 IaaS 虛擬機器
在這種情況下,你可以用 PowerShell cmdlet 或 CLI 指令,從預先加密的 VHD 和相關的加密金鑰建立新的虛擬機。
請使用準備已預先加密的 Windows VHD中的指示。 映像建立之後,您可以使用下一節的步驟來建立加密的 Azure VM。
使用 Azure PowerShell 搭配預先加密的 VHD 來加密 VM
你可以用 PowerShell 指令檔 Set-AzVMOSDisk 在加密的 VHD 上啟用磁碟加密。 下列範例會提供一些常見的參數。
$VirtualMachine = New-AzVMConfig -VMName "MySecureVM" -VMSize "Standard_A1"
$VirtualMachine = Set-AzVMOSDisk -VM $VirtualMachine -Name "SecureOSDisk" -VhdUri "os.vhd" Caching ReadWrite -Windows -CreateOption "Attach" -DiskEncryptionKeyUrl "https://mytestvault.vault.azure.net/secrets/Test1/514ceb769c984379a7e0230bddaaaaaa" -DiskEncryptionKeyVaultId "/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/myKVresourcegroup/providers/Microsoft.KeyVault/vaults/mytestvault"
New-AzVM -VM $VirtualMachine -ResourceGroupName "MyVirtualMachineResourceGroup"
在新增的資料磁碟上啟用加密
你可以用 PowerShell 或 Azure 入口網站新增磁碟到 Windows 虛擬機。
注意
新加入的資料磁碟加密功能只能透過 PowerShell 或 CLI 啟用。 目前,Azure 入口網站不支援在新磁碟上啟用加密功能。
透過使用 Azure PowerShell 啟用新新增磁碟的加密功能
當你使用 PowerShell 加密 Windows 虛擬機的新磁碟時,請指定新的序列版本。 序列版本必須是唯一的。 下列指令碼會產生序列版本的 GUID。 在某些情況下,Azure 磁碟加密擴充功能可能會自動加密新增的資料磁碟。 自動加密通常發生在虛擬機在新磁碟上線後重新啟動。 這種情況通常發生的原因是,先前在 VM 上執行磁碟加密時,磁碟區類型被指定為「All」。 若新加入的資料磁碟發生自動加密,建議重新執行 Set-AzVmDiskEncryptionExtension 指令本並使用新序列版本。 如果你的新資料碟是自動加密的,且你不想加密,先解密所有硬碟,然後用新的序列版本重新加密,並指定磁碟區的作業系統類型。
加密正在執行的虛擬機: 以下腳本會初始化你的變數並執行 Set-AzVMDiskEncryptionExtension cmdlet。 資源群組、虛擬機和金鑰庫必須已經作為前置條件存在。 以您的值取代 MyKeyVaultResourceGroup、MyVirtualMachineResourceGroup、MySecureVM 和 MySecureVault。 以下範例使用「All」作為 -VolumeType 參數,包含作業系統與資料卷。 如果您只想要加密 OS 磁碟區,則請對 -VolumeType 參數使用 "OS"。
$KVRGname = 'MyKeyVaultResourceGroup'; $VMRGName = 'MyVirtualMachineResourceGroup'; $vmName = 'MySecureVM'; $KeyVaultName = 'MySecureVault'; $KeyVault = Get-AzKeyVault -VaultName $KeyVaultName -ResourceGroupName $KVRGname; $diskEncryptionKeyVaultUrl = $KeyVault.VaultUri; $KeyVaultResourceId = $KeyVault.ResourceId; $sequenceVersion = [Guid]::NewGuid(); Set-AzVMDiskEncryptionExtension -ResourceGroupName $VMRGname -VMName $vmName -DiskEncryptionKeyVaultUrl $diskEncryptionKeyVaultUrl -DiskEncryptionKeyVaultId $KeyVaultResourceId -VolumeType "All" –SequenceVersion $sequenceVersion;透過使用 KEK 加密正在執行的虛擬機:以下範例使用「All」作為 -VolumeType 參數,包含作業系統與資料卷。 如果您只想要加密 OS 磁碟區,則請對 -VolumeType 參數使用 "OS"。
$KVRGname = 'MyKeyVaultResourceGroup'; $VMRGName = 'MyVirtualMachineResourceGroup'; $vmName = 'MyExtraSecureVM'; $KeyVaultName = 'MySecureVault'; $keyEncryptionKeyName = 'MyKeyEncryptionKey'; $KeyVault = Get-AzKeyVault -VaultName $KeyVaultName -ResourceGroupName $KVRGname; $diskEncryptionKeyVaultUrl = $KeyVault.VaultUri; $KeyVaultResourceId = $KeyVault.ResourceId; $keyEncryptionKeyUrl = (Get-AzKeyVaultKey -VaultName $KeyVaultName -Name $keyEncryptionKeyName).Key.kid; $sequenceVersion = [Guid]::NewGuid(); Set-AzVMDiskEncryptionExtension -ResourceGroupName $VMRGname -VMName $vmName -DiskEncryptionKeyVaultUrl $diskEncryptionKeyVaultUrl -DiskEncryptionKeyVaultId $KeyVaultResourceId -KeyEncryptionKeyUrl $keyEncryptionKeyUrl -KeyEncryptionKeyVaultId $KeyVaultResourceId -VolumeType "All" –SequenceVersion $sequenceVersion;注意
disk-encryption-keyvault 參數的值語法為完整識別碼字串:/subscriptions/[subscription-id-guid]/resourceGroups/[resource-group-name]/providers/Microsoft.KeyVault/vaults/[keyvault-name]
key-encryption-key 參數的值語法為 KEK 的完整 URI,如下:https://[keyvault-name].vault.azure.net/keys/[kekname]/[kek-unique-id]
使用 Azure CLI 啟用新新增磁碟的加密功能
當你執行啟用加密的指令時,Azure CLI 指令會自動提供新的序列版本。 此範例會對 volume-type 參數使用 "All"。 如果您只加密作業系統磁碟,則可能需要將 volume-type 參數設為 OS。 與 PowerShell 語法不同,CLI 在啟用加密時不要求使用者提供唯一的序列版本。 CLI 會自動生成並使用其獨有的序列版本值。
加密執行中的 VM:
az vm encryption enable --resource-group "MyVirtualMachineResourceGroup" --name "MySecureVM" --disk-encryption-keyvault "MySecureVault" --volume-type "All"透過使用 KEK 加密正在執行的虛擬機:
az vm encryption enable --resource-group "MyVirtualMachineResourceGroup" --name "MySecureVM" --disk-encryption-keyvault "MySecureVault" --key-encryption-key "MyKEK_URI" --key-encryption-keyvault "MySecureVaultContainingTheKEK" --volume-type "All"
停用加密並移除加密延伸模組
你可以停用 Azure 磁碟加密 擴充功能,也可以移除 Azure 磁碟加密 擴充功能。 這些行動是不同的。
要移除 ADE,先停用加密,然後移除擴充功能。 如果你移除加密擴充功能但沒有停用它,磁碟仍然是加密狀態。 如果你在移除擴充功能 後 關閉加密,擴充功能會重新安裝(執行解密操作),你需要第二次移除它。
停用加密
你可以使用 Azure PowerShell、Azure CLI 或 Resource Manager 範本來停用加密。 停用加密不會移除延伸模組 (請參閱移除加密延伸模組) (英文)。
警告
當作業系統和資料磁碟都已加密時,關閉資料磁碟加密可能會產生意想不到的結果。 改為停用所有磁碟上的加密。
停用加密後,BitLocker 會啟動背景程序來解密磁碟。 請給這個過程足夠的時間完成,再嘗試重新啟用加密。
使用 Azure PowerShell 停用磁碟加密:要停用加密,請使用 Disable-AzVMDiskEncryption 指令檔。
Disable-AzVMDiskEncryption -ResourceGroupName "MyVirtualMachineResourceGroup" -VMName "MySecureVM" -VolumeType "all"使用 Azure CLI 停用加密:要停用加密,請使用 az vm encryption disable 指令。
az vm encryption disable --name "MySecureVM" --resource-group "MyVirtualMachineResourceGroup" --volume-type "all"使用Resource Manager範本來停用加密:
- 從「在執行中的 Windows VM 模板中停用磁碟加密」選項中選擇部署到 Azure。
- 選取訂用帳戶、資源群組、位置、VM、磁碟區類型、法律條款及合約。
- 選取 [購買] 以在執行中的 Windows VM 上停用磁碟加密。
移除加密延伸模組
如果你想解密磁碟並移除加密擴充功能,請先停用加密 功能再移除 擴充功能。 欲了解更多資訊,請參閱 「停用加密」。
你可以使用 Azure PowerShell 或 Azure CLI 來移除加密擴充功能。
使用 Azure PowerShell 停用磁碟加密:要解除加密,請使用 Remove-AzVMDiskEncryptionExtension 指令檔。
Remove-AzVMDiskEncryptionExtension -ResourceGroupName "MyVirtualMachineResourceGroup" -VMName "MySecureVM"使用 Azure CLI 停用加密:要移除加密,請使用 az vm 擴充名 delete 指令。
az vm extension delete -g "MyVirtualMachineResourceGroup" --vm-name "MySecureVM" -n "AzureDiskEncryption"