Linux VM 上的 Azure 磁碟加密案例 \(部分機器翻譯\)
適用於:✔️ Linux VM ✔️ 彈性擴展集
適用於 Linux 虛擬機器 (VM) 的 Azure 磁碟加密會使用 Linux 的 DM-Crypt 功能,提供 OS 磁碟和資料磁碟的完整磁碟加密。 此外,使用 EncryptFormatAll 功能時,其也會提供暫存磁碟的加密。
Azure 磁碟加密會與 Azure Key Vault 整合,協助您控制及管理磁碟加密金鑰與祕密。 如需服務的概觀,請參閱適用於 Linux VM 的 Azure 磁碟加密。
必要條件
您只能將磁碟加密套用到受支援 VM 大小和作業系統的虛擬機器。 您也必須符合下列必要條件:
不論是何種情況,您都應該先建立快照集和/或建立備份再將磁碟加密。 擁有備份可確保在加密期間發生任何非預期的失敗時,能有復原選項可供選擇。 具有受控磁碟的 VM 需要有備份,才能進行加密。 在建立備份後,您可以使用 Set-AzVMDiskEncryptionExtension Cmdlet 並指定 -skipVmBackup 參數來加密受控磁碟。 如需如何備份和還原已加密 VM 的詳細資訊,請參閱 Azure 備份一文。
限制
如果您先前使用 Azure 磁碟加密 搭配 Microsoft Entra ID 來加密虛擬機器,您必須繼續使用此選項來加密虛擬機。 如需詳細資料,請參閱將 Azure 磁碟加密與 Microsoft Entra ID 搭配使用 (舊版)。
在加密 Linux OS 磁碟區時,請將 VM 視為無法使用。 強烈建議在加密進行時避免 SSH 登入,以避免在加密程式期間封鎖任何需要存取的開啟檔案的問題。 若要檢查進度,請使用 Get-AzVMDiskEncryptionStatus PowerShell Cmdlet 或 vm encryption show CLI 命令。 此程式可能需要數小時才能使用 30GB OS 磁碟區,再加上加密數據磁碟區的額外時間。 除非使用 [加密所有格式] 選項,否則資料磁碟區加密時間將與資料磁碟區的大小和數量成正比。
只有資料磁碟區支援在 Linux VM 上停用加密。 如果 OS 磁碟區已加密,則數據或 OS 磁碟區不支援停用加密。
Azure 磁碟加密不適用於下列 Linux 案例、功能和技術:
- 將基本層 VM 或透過傳統 VM 建立方法所建立的 VM 加密。
- 在加密 OS 磁碟機時,於 OS 磁碟機或 Linux VM 的資料磁碟機上停用加密。
- 將 Linux 虛擬機器擴展集的 OS 磁碟加密。
- 加密 Linux VM 上的自訂映像。
- 與內部部署金鑰管理系統整合。
- Azure 檔案 (共用檔案系統)。
- 網路檔案系統 (NFS)。
- 動態磁碟區。
- 暫時性 OS 磁碟。
- 加密共用/分散式檔案系統,例如 (但不限於):DFS、GFS、DRDB 和 CephFS。
- 將已加密的 VM 移到另一個訂閱或區域。
- 建立已加密 VM 的映像或快照集,並用於部署其他 VM。
- 核心損毀傾印 (kdump)。
- Oracle ACFS (ASM 叢集檔案系統)。
- NVMe 磁碟,例如高效能運算 VM 大小或儲存體最佳化 VM 大小上的磁碟。
- 具有「巢狀裝入點」的 VM;也就是說,單一路徑中的多個裝入點(例如 “/1stmountpoint/data/2ndmountpoint” )。
- 裝載於 OS 資料夾上方資料磁碟機的 VM。
- 使用資料磁碟擴充根 (OS 磁碟) 邏輯磁碟區的 VM。
- 調整 OS 磁碟的大小。
- 具有寫入加速器磁碟的 M 系列 VM。
- 將 ADE 套用到具有主機加密磁碟,或使用客戶自控金鑰進行伺服器端加密 (SSE + CMK) 的 VM。 將 SSE + CMK 套用到資料磁碟,或者將已設定 SSE + CMK 的資料磁碟新增到使用 ADE 加密的 VM,也是不支援的情節。
- 將已使用 ADE 加密、或曾使用 ADE 加密的 VM,移轉到主機加密或使用客戶自控金鑰的伺服器端加密。
- 加密容錯移轉叢集中的 VM。
- Azure Ultra 磁碟的加密。
- 進階 SSD v2 磁碟的加密。
- 對啟用祕密應具有指定的最大有效期限原則並啟用 DENY 效果的訂用帳戶中的虛擬機器進行加密。
安裝工具並連線至 Azure
Azure 磁碟加密可以透過 Azure CLI 和 Azure PowerShell 來加以啟用及管理。 若要這麼做,您必須在本機安裝工具,並連線到您的 Azure 訂閱。
Azure CLI 2.0 是命令列工具,可用於管理 Azure 資源。 CLI 的設計是要讓您能夠彈性地查詢資料、以非封鎖處理序的形式支援長時間執行作業,並輕鬆地撰寫指令碼。 您可以遵循安裝 Azure CLI 中的步驟,將其安裝到本機。
若要使用 Azure CLI 登入您的 Azure 帳戶,請使用 az login 命令。
az login
如果您想要選取用於登入的租用戶,請使用:
az login --tenant <tenant>
如果您有多個訂用帳戶並想要指定特定訂用帳戶,請使用 az account list 取得訂用帳戶清單並以 az account set 進行指定。
az account list
az account set --subscription "<subscription name or ID>"
如需詳細資訊,請參閱開始使用 Azure CLI 2.0。
在現有或執行中的 Linux VM 上啟用加密
在這個案例中,您可以使用 Resource Manager 範本、PowerShell Cmdlet 或 CLI 命令啟用加密。 若您需要虛擬機器擴充之結構描述資訊,請參閱 Linux 擴充功能之 Azure 磁碟加密一文。
重要
您必須在啟用 Azure 磁碟加密之前,先在 Azure 磁碟加密之外對以受控磁碟為基礎的 VM 執行個體建立快照集和/或備份。 您可以從入口網站建立受控磁碟的快照集,也可以透過 Azure 備份來建立。 擁有備份可確保在加密期間發生任何非預期的失敗時,能有復原選項可供選擇。 在建立備份後,您就可以使用 Set-AzVMDiskEncryptionExtension Cmdlet 並指定 -skipVmBackup 參數來加密受控磁碟。 Set-AzVMDiskEncryptionExtension 命令會針對受控磁碟型 VM 失敗,直到建立備份且指定此參數為止。
加密或停用加密功能,可能會導致 VM 重新啟動。
若要停用加密,請參閱停用加密並移除加密延伸模組 (英文)。
您可以安裝並使用 Azure CLI 命令列工具,在加密的 VHD 上啟用磁碟加密。 您可以在瀏覽器中將它與 Azure Cloud Shell 搭配使用,或可將它安裝在本機電腦上,並在任何 PowerShell 工作階段中使用它。 若要在 Azure 中現有或執行中的 Linux VM 上啟用加密,請使用下列 CLI 命令:
在 Azure 中使用 az vm encryption enable 命令以在執行中的虛擬機器上啟用加密。
加密執行中的 VM:
az vm encryption enable --resource-group "MyVirtualMachineResourceGroup" --name "MySecureVM" --disk-encryption-keyvault "MySecureVault" --volume-type [All|OS|Data]
使用 KEK 加密執行中的 VM:
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]確認磁碟已加密:若要檢查 VM 的加密狀態,請使用 az vm encryption show 命令。
az vm encryption show --name "MySecureVM" --resource-group "MyVirtualMachineResourceGroup"
若要停用加密,請參閱停用加密並移除加密延伸模組 (英文)。
將 EncryptFormatAll 功能使用於 Linux VM 上的資料磁碟
EncryptFormatAll 參數會減少加密 Linux 資料磁碟的時間。 符合特定準則的分割區 (連同其目前的檔案系統) 將會格式化,然後重新掛接回執行命令之前的所在位置。 如果想要排除符合準則的資料磁碟,您可以在執行命令前將它取消掛接。
執行此命令之後,先前掛接的任何磁碟機都會格式化,而加密層則會在現在的空白磁碟機之上啟動。 選取此選項後,也會加密連結至 VM 的暫存磁碟。 如果重設暫存磁碟,則 Azure 磁碟加密解決方案會為 VM 將其重新格式化並重新加密。 當資源磁碟進行加密後,Microsoft Azure Linux 代理程式就無法管理資源磁碟和啟用分頁檔,但您可以手動設定分頁檔。
警告
VM 的資料磁碟區有所需的資料時,不應該使用 EncryptFormatAll。 您可將磁碟取消掛接,將它們排除在加密之外。 您應該先在測試 VM 上試用 EncryptFormatAll,了解功能參數和其含意,然後在生產 VM 上試用。 EncryptFormatAll 選項會將資料磁碟格式化,而其上的所有資料都將遺失。 繼續之前,確認您想要排除的磁碟已正確卸載。
如果您在更新加密設定時設定此參數,則可能導致在實際加密前重新啟動。 在此情況下,您也可以從 fstab 檔案中移除您不想格式化的磁碟。 同樣地,您應該先將想要加密格式化的磁碟分割新增至 fstab 檔案,在起始加密作業。
EncryptFormatAll 準則
此參數會通過所有磁碟分割,只要它們符合下列所有準則,就會予以加密:
- 不是根/OS/開機磁碟分割
- 尚未加密
- 不是 BEK 磁碟區
- 不是 RAID 磁碟區
- 不是 LVM 磁碟區
- 已掛接
對組成 RAID 或 LVM 磁碟區的磁碟進行加密,而非對 RAID 或 LVM 磁碟區本身進行加密。
在 Azure 中使用 az vm encryption enable 命令以在執行中的虛擬機器上啟用加密。
使用 EncryptFormatAll 來加密執行中的 VM:
az vm encryption enable --resource-group "MyVirtualMachineResourceGroup" --name "MySecureVM" --disk-encryption-keyvault "MySecureVault" --volume-type "data" --encrypt-format-all
使用 EncryptFormatAll 參數搭配邏輯磁碟區管理員 (LVM)
我們建議進行 LVM-on-crypt 設定。 如需有關 crypt 設定上 LVM 的詳細指示,請參閱 在 ADE 加密裝置上設定 LVM 和 RAID。
透過客戶加密的 VHD 和加密金鑰所建立的新 VM
在這個案例中,您可以使用 PowerShell Cmdlet 或 CLI 命令啟用加密。
使用 Azure 磁碟加密相同指令碼中的指示來準備可用於 Azure 的預先加密映像。 映像建立之後,您可以使用下一節的步驟來建立加密的 Azure VM。
重要
您必須在啟用 Azure 磁碟加密之前,先在 Azure 磁碟加密之外對以受控磁碟為基礎的 VM 執行個體建立快照集和/或備份。 您可以從入口網站建立受控磁碟的快照集,也可以使用 Azure 備份來建立。 擁有備份可確保在加密期間發生任何非預期的失敗時,能有復原選項可供選擇。 在建立備份後,您就可以使用 Set-AzVMDiskEncryptionExtension Cmdlet 並指定 -skipVmBackup 參數來加密受控磁碟。 Set-AzVMDiskEncryptionExtension 命令會針對受控磁碟型 VM 失敗,直到建立備份且指定此參數為止。
加密或停用加密功能,可能會導致 VM 重新啟動。
使用 Azure PowerShell 來加密具有預先加密 VHD 的 VM
您可以使用 PowerShell Cmdlet Set-AzVMOSDisk 在加密的 VHD 上啟用磁碟加密。 此範例提供一些常見的參數。
$VirtualMachine = New-AzVMConfig -VMName "MySecureVM" -VMSize "Standard_A1"
$VirtualMachine = Set-AzVMOSDisk -VM $VirtualMachine -Name "SecureOSDisk" -VhdUri "os.vhd" Caching ReadWrite -Linux -CreateOption "Attach" -DiskEncryptionKeyUrl "https://mytestvault.vault.azure.net/secrets/Test1/514ceb769c984379a7e0230bddaaaaaa" -DiskEncryptionKeyVaultId "/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/myresourcegroup/providers/Microsoft.KeyVault/vaults/mytestvault"
New-AzVM -VM $VirtualMachine -ResourceGroupName "MyVirtualMachineResourceGroup"
在新增的資料磁碟上啟用加密
您可以使用 az vm disk attach 或透過 Azure 入口網站,新增磁碟新增。 您必須先掛接新連結的資料磁碟,才可以加密。 您必須要求資料磁碟機加密,因為在進行加密時,將無法使用該磁碟機。
若虛擬機器先前以「All」加密,則 --磁碟區類型參數也應該保留為「All」。 全部包含作業系統與資料磁碟。 若虛擬機器先前以「OS」磁碟類別加密,則應變更 --磁碟區類型參數為「All」,確保作業系統和新的資料磁碟都包含在其中。 若虛擬機器僅使用「Data」磁碟區類型加密,則可以如下所示,保留參數值為「Data」。 要準備進行加密,僅是新增及附加新資料磁碟至虛擬機器是不夠的。 啟用加密之前,新附加的磁碟必須經過格式化,並正確裝載於虛擬機器中。 在 Linux 上磁碟必須裝載於 /etc/fstab,且必須有一致的區塊裝置名稱。
在啟用加密時,與 PowerShell 語法不同,CLI 不需要使用者提供唯一的序列版本。 CLI 為自動產生並使用其唯一序列版本的值。
加密執行中虛擬機器的資料磁碟:
az vm encryption enable --resource-group "MyVirtualMachineResourceGroup" --name "MySecureVM" --disk-encryption-keyvault "MySecureVault" --volume-type "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 "Data"
停用加密並移除加密延伸模組
您可以停用 Azure 磁碟加密延伸模組,也可以移除 Azure 磁碟加密延伸模組。 這兩者是不同的作業。
若要移除 ADE,建議您先停用加密,然後再移除延伸模組。 如果您移除加密延伸模組而不將其停用,磁碟仍會加密。 如果您在移除延伸模組之後停用加密,則會重新安裝延伸模組 (以執行解密作業),而且將必須再次移除。
警告
如果 OS 磁碟已加密,則無法停用加密。 (若原始加密作業指定 volumeType=ALL 或 volumeType=OS,則會加密 OS 磁碟。)
只有在資料磁碟已加密,但 OS 磁碟未加密時,才能停用加密。
停用加密
您可以使用 Azure PowerShell、Azure CLI 或 Resource Manager 範本來停用加密。 停用加密不會移除延伸模組 (請參閱移除加密延伸模組) (英文)。
停用使用 Azure PowerShell 的磁碟加密: 若要停用加密,請使用 Disable-AzVMDiskEncryption Cmdlet。
Disable-AzVMDiskEncryption -ResourceGroupName "MyVirtualMachineResourceGroup" -VMName "MySecureVM" -VolumeType "data"
透過 Azure CLI 停用加密:若要停用加密,請使用 az vm encryption disable 命令。
az vm encryption disable --name "MySecureVM" --resource-group "MyVirtualMachineResourceGroup" --volume-type "data"
透過 Resource Manager 範本停用加密:
- 從在執行中的 Linux VM 上停用磁碟加密範本 (英文),按一下 [Deploy to Azure] (部署至 Azure)。
- 選取訂用帳戶、資源群組、位置、VM、磁碟區類型、法律條款及合約。
- 按一下 [Purchase] (購買) 以在執行中的 Linux VM 上停用磁碟加密。
警告
一旦解密開始,建議不要干擾流程。
移除加密延伸模組
如果您想要解密磁碟並移除加密延伸模組,您必須先停用加密,才能移除延伸模組;請參閱停用加密 (英文)。
您可以使用 Azure PowerShell 或 Azure CLI 移除加密延伸模組。
停用 Azure PowerShell 的磁碟加密:若要移除加密,請使用 Remove-AzVMDiskEncryptionExtension Cmdlet。
Remove-AzVMDiskEncryptionExtension -ResourceGroupName "MyVirtualMachineResourceGroup" -VMName "MySecureVM"
透過 Azure CLI 停用加密:若要移除加密,請使用 az vm extension delete 命令。
az vm extension delete -g "MyVirtualMachineResourceGroup" --vm-name "MySecureVM" -n "AzureDiskEncryptionForLinux"