Azure 磁盘加密故障排除指南

重要

Azure 磁盘加密计划于 2028 年 9 月 15 日停用。 在该日期之前,可以继续使用 Azure 磁盘加密,而不会中断。 2028 年 9 月 15 日,已启用 ADE 的工作负荷将继续运行,但 VM 重启后加密磁盘将无法解锁,从而导致服务中断。

使用 主机端加密 用于新 VM。 所有已启用 ADE 的 VM(包括备份)必须在停用日期之前迁移到主机上的加密,以避免服务中断。 有关详细信息,请参阅 从 Azure 磁盘加密迁移到主机加密

适用于:✔️ Windows VM ✔️ 灵活规模集

本指南面向使用 Azure 磁盘加密的 IT 专业人员、信息安全分析师和云管理员。 使用本文排查磁盘加密问题。

在执行这些步骤之前,请确保要加密的 VM 属于 受支持的 VM 大小和操作系统 ,并且满足所有先决条件:

排查“无法发送 DiskEncryptionData”错误

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

  • 密钥保管库 存在于与虚拟机不同的区域或订阅中
  • 密钥保管库 中的高级访问策略未设置为允许 Azure 磁盘加密
  • 密钥加密密钥在密钥保管库中被禁用或删除
  • 密钥保管库或密钥加密密钥 (KEK) 的资源 ID 或 URL 中存在拼写错误
  • 在虚拟机、数据磁盘或密钥的名称中使用特殊字符。 例如,“_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 密钥保管库

使用 Microsoft Entra 凭据启用加密时,目标 VM 必须允许连接到 Microsoft Entra 终结点和 密钥保管库 终结点。 当前 Microsoft Entra 身份验证终结点在 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 磁盘加密需要此组件。 它用于将系统卷与操作系统卷分离,而这一操作在虚拟机的整个生命周期中只进行一次。 以后的加密操作不需要这些组件二进制文件。

若要解决此问题,请将这四个文件从 Windows Server 2016 Datacenter VM 复制到 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
    

1. This command creates a 550 MB system partition. Restart the system.

1. Use DiskPart to check the volumes. Then continue.

For example:

```output
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。

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

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

后续步骤

本文介绍常见的Azure 磁盘加密问题以及如何对其进行故障排除。 有关此服务及其功能的详细信息,请参阅以下文章: