Azure 磁盘加密故障排除指南

适用于:✔️ Windows VM

本指南面向使用 Azure 磁盘加密的组织中的 IT 专业人员、信息安全分析人员和云管理员。 本文旨在帮助排查与磁盘加密相关的问题。

在执行以下任何步骤之前,请首先确保你尝试加密的 VM 具有受支持的 VM 大小和操作系统,并且已满足所有先决条件:

排查“无法发送 DiskEncryptionData”错误

如果加密 VM 时失败并出现错误消息“无法发送 DiskEncryptionData...”,这通常是由以下情况之一导致的:

  • 密钥保管库不在虚拟机所属的区域和/或订阅中
  • 未设置密钥保管库中的高级访问策略来允许 Azure 磁盘加密
  • 密钥加密密钥在使用时在密钥保管库中已被禁用或删除
  • 资源 ID 中或密钥保管库的 URL 中或密钥加密密钥 (KEK) 中存在拼写错误
  • 在命名 VM、数据磁盘或密钥时使用了特殊字符。 即,_VMName、�lite,等等
  • 加密方案不受支持
  • 网络问题妨碍了 VM/主机访问所需的资源

建议

  • 确保密钥保管库与虚拟机位于同一区域和订阅中
  • 确保已正确设置密钥保管库高级访问策略
  • 如果你使用 KEK,请确保密钥存在于密钥保管库中并已启用
  • 检查 VM 名称、数据磁盘和密钥是否遵循了密钥保管库资源命名限制
  • 检查 PowerShell 或 CLI 命令中的密钥保管库名称或 KEK 名称是否有拼写错误

注意

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.cn/keys/[kekname]/[kek-unique-id]

防火墙保护下的 Azure 磁盘加密故障排除

如果连接受到防火墙、代理要求或网络安全组 (NSG) 设置的限制,扩展执行所需任务的能力可能会受到干扰。 这种干扰会导致出现诸如“VM 上未提供扩展状态”的状态消息。在预期的情况下,加密无法完成。 以下部分描述了可能需要调查的一些常见防火墙问题。

网络安全组

应用的任何网络安全组设置仍必须允许终结点满足所述的与磁盘加密相关的网络配置先决条件

防火墙保护下的 Azure Key Vault

使用 Azure AD 凭据启用加密时,目标 VM 必须允许连接到 Azure Active Directory 终结点和密钥保管库终结点。 当前 Azure Active Directory 身份验证终结点在 Microsoft 365 URL 和 IP 地址范围文档中的第 56 和 59 节中进行维护。 在有关如何访问防火墙保护下的 Azure 密钥保管库的文档中提供了密钥保管库说明。

Azure 实例元数据服务

VM 必须能够访问 Azure 实例元数据服务终结点 (169.254.169.254) 和用于与 Azure 平台资源通信的虚拟公共 IP 地址 (168.63.129.16)。 不支持将本地 HTTP 流量更改为这些地址的代理配置(例如,添加 X-Forwarded-For 标头)。

Windows Server 2016 Server Core 疑难解答

在 Windows Server 2016 Server Core 上,bdehdcfg 组件默认不可用。 Azure 磁盘加密需要此组件。 它用于从 OS 卷拆分出系统卷,该操作仅在虚拟机生命期内执行一次。 在后续加密操作中,不需要这些二进制文件。

要暂时避开此问题,请将下面 Windows Server 2016 Data Center VM 中的 4 个文件复制到 Server Core 上的同一位置中:

\windows\system32\bdehdcfg.exe
\windows\system32\bdehdcfglib.dll
\windows\system32\en-US\bdehdcfglib.dll.mui
\windows\system32\en-US\bdehdcfg.exe.mui
  1. 输入以下命令:

    bdehdcfg.exe -target default
    
  2. 此命令将创建一个 550 MB 系统分区。 重新启动系统。

  3. 使用 DiskPart 检查卷,然后继续。

例如:

DISKPART> list vol

  Volume ###  Ltr  Label        Fs     Type        Size     Status     Info
  ----------  ---  -----------  -----  ----------  -------  ---------  --------
  Volume 0     C                NTFS   Partition    126 GB  Healthy    Boot
  Volume 1                      NTFS   Partition    550 MB  Healthy    System
  Volume 2     D   Temporary S  NTFS   Partition     13 GB  Healthy    Pagefile

加密状态故障排除

即使磁盘在 VM 中解密后,门户也可能显示该磁盘已加密。 当使用低级别命令从 VM 内部直接解密磁盘,而不是使用较高级别的 Azure 磁盘加密管理命令时,可能会发生这种情况。 较高级别命令不仅从 VM 内部解密磁盘,而且在 VM 外部它们还更新与 VM 关联的重要平台级加密设置和扩展设置。 如果这些未保持一致,平台将无法报告加密状态或正确预配 VM。

若要使用 PowerShell 禁用 Azure 磁盘加密,请使用 Disable-AzVMDiskEncryption,然后使用 Remove-AzVMDiskEncryptionExtension。 禁用加密之前,运行 Remove-AzVMDiskEncryptionExtension 会失败。

若要使用 CLI 禁用 Azure 磁盘加密,请使用 az vm encryption disable

后续步骤

本文档已详细描述有关 Azure 磁盘加密的一些常见问题和解决这些问题的方法。 有关此服务及其功能的详细信息,请参阅以下文章: