Linux VM 的 Azure 磁碟加密疑難排解指南

適用於:✔️ Linux VM ✔️ 彈性擴展集

本指南適用於組織採用 Azure 磁碟加密的 IT 專業人員、資訊安全性分析師和雲端系統管理員。 本文旨在協助磁碟加密相關問題的疑難排解。

在採取以下任何步驟之前,請先確定想要加密的 VM 是支援的 VM 大小與作業系統,且已符合所有先決條件:

針對 Linux OS 磁碟加密進行疑難排解

Linux 作業系統 (OS) 磁碟加密必須先將 OS 磁碟機取消掛接後,才能透過完整磁碟加密流程加以執行。 如果無法取消掛接磁碟機,則可能出現「後續無法取消掛接...」錯誤訊息。

若環境已從支援的內建資源庫映像進行變更,當嘗試在 VM 上進行 OS 磁碟加密時就可能發生此錯誤。 來自受支援映像的偏差可能會干擾 OS 磁碟機取消掛接擴充功能。 偏差的範例可能包括下列項目:

  • 不再符合支援的檔案系統或資料分割配置的自訂映像。
  • 在加密之前已於 OS 中安裝且執行諸如 SAP、MongoDB 或 Apache Cassandra 與 Docker 等大型應用程式時,則不支援這些應用程式。 在依要求準備 OS 磁碟機進行磁碟加密時,Azure 磁碟加密無法安全地關閉這些處理序。 如果仍然有作用中的處理序持有 OS 磁碟機的開啟檔案控制代碼,則 OS 磁碟機無法取消掛接,因而造成無法加密 OS 磁碟機。
  • 自訂指令碼與要啟用的加密在相近時間下執行,或在加密流程期間對 VM 進行任何其他變更。 當 Azure Resource Manager 範本定義要同時執行的多個擴充功能,或當自訂指令碼擴充功能或其他動作同時對磁碟加密執行時,會發生此衝突。 將這些步驟序列化和隔離,就可解決此問題。
  • 啟用加密之前尚未停用安全性增強 Linux (SELinux) 時,取消掛接步驟就會失敗。 完成加密後,即可重新啟用 SELinux。
  • OS 磁碟會使用邏輯磁碟區管理員 (LVM) 配置。 雖然可以使用有限的 LVM 資料磁碟支援,但是 LVM OS 磁碟並沒有。
  • 未符合最小記憶體需求 (OS 磁碟加密建議為 7 GB)。
  • 資料磁碟機已遞迴掛接於 /mnt/ directory 下,或彼此掛接 (例如,/mnt/data1、/mnt/data2、/data3 + /data3/data4)。

更新 Ubuntu 14.04 LTS 的預設核心

預設核心版本 4.4 隨附 Ubuntu 14.04 LTS 映像。 此核心版本有已知問題,其中的 Out of Memory Killer 在 OS 加密程序期間不當地終止 dd 命令。 最近的 Azure 微調 Linux 核心已修正這個錯誤 (bug)。 若要避免這個錯誤,在啟用映像加密之前,請使用下列命令,更新為 Azure 微調核心 4.15或更新版本:

sudo apt-get update
sudo apt-get install linux-azure
sudo reboot

在 VM 重新啟動到新的核心之後,可以使用下列命令來確認新的核心版本:

uname -a

更新 Azure 虛擬機器代理程式和延伸模組版本

若使用不支援的 Azure 虛擬機器代理程式版本,虛擬機器映像上的 Azure 磁碟加密作業可能會失敗。 在啟用加密之前,應該先更新代理程式版本早於 2.2.38 版的 Linux 映像。 如需詳細資訊,請參閱如何在 VM 上更新 Azure Linux 代理程式,以及Azure 中虛擬機器代理程式的最低版本支援

也需要正確的 Microsoft.Azure.Security.AzureDiskEncryption 或 Microsoft.Azure.Security.AzureDiskEncryptionForLinux 客體代理程式延伸模組版本。 當滿足 Azure 虛擬機器代理程式必要條件,且使用支援的虛擬機器代理程式版本時,平台會自動維護及更新延伸模組版本。

已取代且不再支援 Microsoft.OSTCExtensions.AzureDiskEncryptionForLinux 延伸模組。

無法將 Linux 磁碟加密

在某些情況下,Linux 磁碟加密似乎會卡在「已啟動的 OS 磁碟加密」且停用 SSH。 在庫存資源庫映像上,此加密程序可能需要 3-16 個小時才能完成。 如果新增多 TB 大小的資料磁碟,此程序可能需要數天的時間。

Linux OS 磁碟加密順序會暫時取消掛接 OS 磁碟機。 然後會對整個 OS 磁碟執行逐區塊加密,再於它處於已加密狀態時重新掛接。 Linux 磁碟加密不允許在加密過程中同時使用 VM。 VM 的效能特性在完成加密所需的時間上有顯著差異。 這些特性包括磁碟的大小以及儲存體帳戶是標準或進階 (SSD) 儲存體。

加密 OS 磁碟機時,VM 會進入服務狀態並停用 SSH,以避免中斷任何進行中的流程。 若要檢查加密狀態,請使用 Azure PowerShell Get-AzVmDiskEncryptionStatus 命令,並按一下 [ProgressMessage] 欄位。 當資料和 OS 已經過加密,[ProgressMessage] 會回報一系列狀態:

PS > Get-AzVMDiskEncryptionStatus -ResourceGroupName "MyResourceGroup" -VMName "myVM"

OsVolumeEncrypted          : EncryptionInProgress
DataVolumesEncrypted       : EncryptionInProgress
OsVolumeEncryptionSettings :
ProgressMessage            : Transitioning

PS > Get-AzVMDiskEncryptionStatus -ResourceGroupName "MyResourceGroup" -VMName "myVM"

OsVolumeEncrypted          : EncryptionInProgress
DataVolumesEncrypted       : EncryptionInProgress
OsVolumeEncryptionSettings : Microsoft.Azure.Management.Compute.Models.DiskEncryptionSettings
ProgressMessage            : Encryption succeeded for data volumes

PS > Get-AzVMDiskEncryptionStatus -ResourceGroupName "MyResourceGroup" -VMName "myVM"

OsVolumeEncrypted          : EncryptionInProgress
DataVolumesEncrypted       : EncryptionInProgress
OsVolumeEncryptionSettings : Microsoft.Azure.Management.Compute.Models.DiskEncryptionSettings
ProgressMessage            : Provisioning succeeded

PS > Get-AzVMDiskEncryptionStatus -ResourceGroupName "MyResourceGroup" -VMName "myVM"

OsVolumeEncrypted          : EncryptionInProgress
DataVolumesEncrypted       : EncryptionInProgress
OsVolumeEncryptionSettings : Microsoft.Azure.Management.Compute.Models.DiskEncryptionSettings
ProgressMessage            : OS disk encryption started

針對大部份的加密流程,[ProgressMessage] 會保留在已啟動的 OS 磁碟加密。 成功完成加密時,[ProgressMessage] 會傳回:

PS > Get-AzVMDiskEncryptionStatus -ResourceGroupName "MyResourceGroup" -VMName "myVM"

OsVolumeEncrypted          : Encrypted
DataVolumesEncrypted       : NotMounted
OsVolumeEncryptionSettings : Microsoft.Azure.Management.Compute.Models.DiskEncryptionSettings
ProgressMessage            : Encryption succeeded for all volumes

可以使用此訊息之後,加密的 OS 磁碟機應該會就緒可供使用,且 VM 也就緒可再次使用。

如果開機資訊、進度訊息或錯誤回報此過程中的 OS 加密失敗,請將 VM 還原至加密前立即建立的快照集或備份。 訊息的範本是本指南中所述的「無法取消掛接」錯誤。

在重新嘗試加密之前,請重新評估 VM 的特性,並確定已滿足所有必要條件。

針對防火牆後方的 Azure 磁碟加密進行疑難排解

請參閱隔離式網路上的磁碟加密

針對加密狀態進行疑難排解

即使已在 VM 內解密磁碟,入口網站也可能會將其顯示為加密。 當使用低層級命令直接從 VM 內解密磁碟,而不是使用較高層級的 Azure 磁碟加密管理命令時,就會發生這種情況。 較高層級的命令不只會從 VM 內解密磁碟,也會在 VM 外部更新與 VM 建立關聯的重要平台層級加密設定和延伸模組設定。 如果內外未保持一致,則平台將無法回報加密狀態或適當地佈建 VM。

若要停用 PowerShell 的 Azure 磁碟加密,請於 Remove-AzVMDiskEncryptionExtension 後接著使用 Disable-AzVMDiskEncryption。 若在停用加密之前執行 Remove-AzVMDiskEncryptionExtension 將會導致失敗。

若要停用 CLI 的 Azure 磁碟加密,請使用 az vm encryption disable

下一步

在本文件中,您已深入了解 Azure 磁碟加密中的一些常見問題,以及如何進行疑難排解。 如需此服務和其功能的相關資訊,請參閱下列文章: