為現有的 VM 磁碟加密
假設您的公司決定對所有虛擬機器實作 Azure 磁碟加密 (ADE)。 您必須評估如何對現有的虛擬機器 (VM) 磁碟區施行加密。 在此,我們會探討 ADE 的需求,以及對現有 Linux 與 Windows VM 上的磁碟加密所涉及的步驟。 在下一個單元中,您會完成加密現有 VM 磁碟的程序。
Azure 磁碟加密的必要條件
您必須先完成下列作業,才能將 VM 磁碟加密:
- 建立金鑰保存庫。
- 設定金鑰保存庫存取原則以支援磁碟加密。
- 使用金鑰保存庫來儲存 ADE 加密金鑰。
Azure Key Vault
ADE 使用的加密金鑰可儲存在 Azure Key Vault 中。 Azure Key Vault 是可安全儲存及存取祕密的工具。 祕密是指任何需受到嚴密控制存取的項目,例如 API 金鑰、密碼或憑證。 Azure Key Vault 會提供高度可用且可調整的安全儲存體,如同在聯邦資訊處理標準 (FIPS) 140-2 Level 2 驗證的硬體安全模組 (HSM) 中所定義。 使用 Azure Key Vault 時,您將可完全掌控用來加密資料的金鑰,並且可管理及稽核金鑰的使用方式。
注意
使用 Azure 磁碟加密時,您的金鑰保存庫和 VM 必須位於相同的 Azure 區域中;這可確保加密祕密不會跨越區域界限。
您可以設定和管理金鑰保存庫的方式如下:
PowerShell
New-AzKeyVault -Location <location> `
-ResourceGroupName <resource-group> `
-VaultName "myKeyVault" `
-EnabledForDiskEncryption
Azure CLI
az keyvault create \
--name "myKeyVault" \
--resource-group <resource-group> \
--location <location> \
--enabled-for-disk-encryption True
Azure 入口網站
Azure Key Vault 是您可以使用一般資源建立程序在 Azure 入口網站中建立的資源。
從 Azure 入口網站功能表或 [首頁] 頁面,選取 [建立資源]。
在搜尋方塊中,搜尋並選取 [金鑰保存庫]。 [金鑰保存庫] 窗格隨即出現。
選取 建立。 [建立金鑰保存庫] 窗格隨即出現。
在 [基本] 索引標籤上,為每個設定輸入下列值。
設定 值 專案詳細資料 訂用帳戶 選取要放置金鑰保存庫的訂用帳戶 (預設為您目前的訂用帳戶)。 資源群組 選取現有的資源群組或建立新群組。 [執行個體詳細資料] 金鑰保存庫名稱 輸入金鑰保存庫的名稱。 區域 選取 VM 所在的區域。 定價層 標準。 您可以選取「標準」或「進階」定價層。 主要差異在於「進階」定價層允許硬體加密備份金鑰。 選取 [下一步] 以移至 [存取組態] 索引標籤。您必須變更存取原則,以支援磁碟加密。 預設會將「您的」帳戶新增至原則。
在 [存取組態] 索引標籤上,為設定輸入下列值。
設定 值 資源存取 勾選 [用於磁碟區加密的 Azure 磁碟加密] 的方塊。 如果您只想使用金鑰保存庫進行磁碟加密,您可以視需要移除自己的帳戶。 選取 [檢閱 + 建立]。
通過驗證之後,若要建立新的金鑰保存庫,請選取 [建立]。
啟用金鑰保存庫中的存取原則
Azure 需要存取您金鑰保存庫中的加密金鑰或祕密,讓該資訊可供 VM 用來將磁碟區開機和解密。 當您變更 [存取原則] 時,在上述步驟中啟用此存取權。
您可以啟用三個原則:
- 磁碟加密:Azure 磁碟加密的必要項。
- 部署:(選擇性) 可讓
Microsoft.Compute
資源提供者在資源建立期間參考了此金鑰保存庫的情況下,從此金鑰保存庫擷取祕密。 例如,建立 VM 時。 - 範本部署:(選擇性) 讓 Azure Resource Manager 在範本部署參考了這個金鑰保存庫的情況下,從這個金鑰保存庫取得祕密。
啟用磁碟加密原則的方法如下。 其他兩個原則的方法也類似,但會使用不同的旗標。
Set-AzKeyVaultAccessPolicy -VaultName <keyvault-name> -ResourceGroupName <resource-group> -EnabledForDiskEncryption
az keyvault update --name <keyvault-name> --resource-group <resource-group> --enabled-for-disk-encryption true
為現有的 VM 磁碟加密
在設定好金鑰保存庫之後,您可以使用 Azure CLI 或 Azure PowerShell 將虛擬機器加密。 第一次為 Windows VM 加密時,您可以選擇將所有磁碟加密,或僅限 OS 磁碟。 在某些 Linux 散發套件上,只能加密資料磁碟。 若要符合加密條件,您的 Windows 磁碟必須格式化為新技術檔案系統 (NTFS) 磁碟區。
警告
您必須先建立快照集或受控磁碟的備份,才能開啟加密功能。 下列 SkipVmBackup
旗標會告知工具已在受控磁碟上完成備份。 在沒有備份的情況下,如果加密因某些原因而失敗,您就無法復原 VM。
若要使用 PowerShell 啟用加密,請執行 Set-AzVmDiskEncryptionExtension
Cmdlet。
Set-AzVmDiskEncryptionExtension `
-ResourceGroupName <resource-group> `
-VMName <vm-name> `
-VolumeType [All | OS | Data]
-DiskEncryptionKeyVaultId <keyVault.ResourceId> `
-DiskEncryptionKeyVaultUrl <keyVault.VaultUri> `
-SkipVmBackup
若要使用 Azure CLI 啟用加密,請執行 az vm encryption enable
命令,並使用 --volume-type [all | os | data]
參數指定要加密的磁碟區。 以下是將虛擬機器的所有磁碟區加密的範例:
az vm encryption enable \
--resource-group <resource-group> \
--name <vm-name> \
--disk-encryption-keyvault <keyvault-name> \
--volume-type all
檢視磁碟狀態
您可以檢查特定磁碟是否已被加密。
Get-AzVmDiskEncryptionStatus -ResourceGroupName <resource-group> -VMName <vm-name>
az vm encryption show --resource-group <resource-group> --name <vm-name>
這兩個命令會傳回與所指定 VM 連結的每個磁碟狀態。
解密磁碟機
若要透過 PowerShell 來解密,請執行 Disable-AzVMDiskEncryption
Cmdlet。
Disable-AzVMDiskEncryption -ResourceGroupName <resource-group> -VMName <vm-name>
針對 Azure CLI,執行 vm encryption disable
命令。
az vm encryption disable --resource-group <resource-group> --name <vm-name>
這些命令會停用所指定虛擬機器 與 類型的磁碟區加密。 如同加密一樣,若要決定要解密的磁碟,您可以指定 -VolumeType
參數 [All | OS | Data]
。 如果未提供,則會預設為 All
。
警告
當作業系統和資料磁碟都已加密,在 Windows VM 上停用資料磁碟加密將無法按預期運作。 您必須改為停用所有磁碟上的加密。
在下一個練習中,您會在新的 VM 嘗試一部分命令。