Azure 磁盘存储的服务器端加密

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

大多数 Azure 托管磁盘使用 Azure 存储加密进行加密,后者使用服务器端加密 (SSE) 来保护数据,并帮助组织履行在安全性与合规性方面做出的承诺。 将存储在 Azure 托管磁盘(OS 和数据磁盘)上的数据保存到云时,Azure 存储加密在默认情况下会自动对这些数据进行静态加密。 但是,启用了主机加密的磁盘不会通过 Azure 存储进行加密。 对于启用了主机加密的磁盘,托管 VM 的服务器会为数据提供加密,该加密数据会流入 Azure 存储中。

Azure 托管磁盘中的数据使用 256 位 AES 加密(可用的最强大分组加密之一)以透明方式加密,且符合 FIPS 140-2 规范。 有关加密模块基础 Azure 托管磁盘的详细信息,请参阅加密 API:下一代

Azure 存储加密不会影响托管磁盘的性能,并且不会产生额外的费用。 有关 Azure 存储加密的详细信息,请参阅 Azure 存储加密

注意

临时磁盘不是托管磁盘,不会由 SSE 加密,除非在主机上启用了加密。

关于加密密钥管理

可以依赖于平台托管的密钥来加密托管磁盘,也可以使用自己的密钥来管理加密。 如果选择使用自己的密钥管理加密,可以指定一个客户托管密钥,用于加密和解密托管磁盘中的所有数据。

以下部分更详细地介绍了密钥管理的每个选项。

平台托管的密钥

默认情况下,托管磁盘使用平台托管的加密密钥。 所有写入现有托管磁盘的托管磁盘、快照、映像和数据都会自动使用平台托管密钥进行静态加密。 平台管理的密钥由 Azure 管理。

客户管理的密钥

可以选择使用自己的密钥在每个托管磁盘的级别管理加密。 指定客户托管密钥时,该密钥用于保护和控制对数据加密密钥的访问。 使用客户托管密钥可以更灵活地管理访问控制。

必须使用下列其中一个 Azure 密钥存储来存储客户管理的密钥:

可以在 Azure Key Vault 中生成新的 RSA 密钥。 Azure 托管磁盘使用信封加密以完全透明的方式处理加密和解密。 它使用基于 AES 256 的数据加密密钥 (DEK) 对数据进行加密,DEK 反过来使用你的密钥进行保护。 存储服务生成数据加密密钥,并使用 RSA 加密通过客户托管密钥对其进行加密。 通过信封加密,可以根据合规性策略定期轮替(更改)密钥,而不会影响 VM。 轮替密钥时,存储服务会使用新的客户托管密钥对数据加密密钥进行重新加密。

托管磁盘和 Key Vault 必须在同一个 Azure 区域中,但可以在不同的订阅中。 它们还必须位于同一 Microsoft Entra 租户中。

完全控制密钥

必须授予对 Key Vault 或托管 HSM 中的托管磁盘的访问权限,才能使用你的密钥来加密和解密 DEK。 这允许你完全控制数据和密钥。 可以随时禁用密钥或撤销对托管磁盘的访问权限。 还可以通过 Azure Key Vault 监视来审核加密密钥用法,以确保仅托管磁盘或其他受信任的 Azure 服务访问你的密钥。

重要

禁用、删除密钥或密钥过期时,任何具有使用该密钥的操作系统或数据磁盘的 VM 都将自动关闭。 自动关闭后,在再次启用密钥或分配新密钥之前,VM 不会启动。

通常,磁盘 I/O(读或写操作)在密钥被禁用、删除或过期一小时后开始失败。

下图显示了托管磁盘如何借助 Microsoft Entra ID 和 Azure Key Vault 使用客户托管密钥发出请求:

此图显示托管磁盘和客户管理的密钥工作流。管理员创建 Azure Key Vault,然后创建并设置磁盘加密集。该集与 VM 关联,这允许磁盘使用 Microsoft Entra ID 进行身份验证

下表更详细地介绍了该图:

  1. Azure Key Vault 管理员创建密钥保管库资源。
  2. 密钥保管库管理员可以将 RSA 密钥导入 Key Vault,也可以在 Key Vault 中生成新的 RSA 密钥。
  3. 该管理员创建磁盘加密集资源的实例,指定 Azure Key Vault ID 和密钥 URL。 磁盘加密集是为了简化托管磁盘的密钥管理而引入的新资源。
  4. 创建磁盘加密集时,将在 Microsoft Entra ID 中创建系统分配的托管标识,并将其与磁盘加密集相关联。
  5. 然后,Azure Key Vault 管理员授予托管标识权限,以在密钥保管库中执行操作。
  6. VM 用户可以通过将磁盘与磁盘加密集相关联来创建磁盘。 VM 用户还可以通过将现有资源的客户托管密钥与磁盘加密集相关联来启用客户托管密钥的服务器端加密。
  7. 托管磁盘使用托管标识将请求发送到 Azure Key Vault。
  8. 若要读取或写入数据,托管磁盘会将请求发送到 Azure Key Vault 以加密(包装)和解密(解包)数据加密密钥,以便执行数据的加密和解密。

若要撤销对客户托管密钥的访问权限,请参阅 Azure Key Vault PowerShellAzure Key Vault CLI。 撤销访问权限会实际阻止对存储帐户中所有数据的访问权限,因为 Azure 存储无法访问加密密钥。

自动轮换客户管理的密钥

通常来说,如果你使用客户管理的密钥,则应启用自动密钥轮换以使用最新的密钥版本。 自动密钥轮换有助于确保密钥安全。 磁盘通过其磁盘加密集引用密钥。 为磁盘加密集启用自动轮换后,系统将自动更新引用该磁盘加密集的所有托管磁盘、快照和映像,以便在一小时内使用新版本密钥。 若要了解如何使用自动密钥轮换来启用客户管理的密钥,请参阅使用自动密钥轮换来设置 Azure Key Vault 和 DiskEncryptionSet

注意

自动密钥轮换期间不会重新启动虚拟机。

如果你无法启用自动密钥轮换,则可以使用其他方法在密钥过期之前发出警报。 这样,你可以确保在过期前轮换密钥,并保持业务连续性。 你可以使用 Azure PolicyAzure 事件网格在密钥即将过期时发送通知。

限制

目前,客户托管密钥具有以下限制:

  • 如果为具有增量快照的磁盘启用了此功能,则不能在该磁盘或其快照上禁用此功能。 要解决此问题,请将所有数据复制到完全不同的、不使用客户管理的密钥的托管磁盘。 可以使用 Azure CLIAzure PowerShell 模块执行此操作。

  • 仅支持大小为 2048 位、3,072 位和 4,096 位的软件密钥,不支持其他密钥或其他大小。

  • 仅适用于超级磁盘和高级 SSD v2 磁盘:

    • 从使用服务器端加密和客户托管密钥加密的磁盘创建的快照必须使用相同的客户托管密钥进行加密。
    • 使用客户管理的密钥加密的超级磁盘和高级 SSD v2 磁盘不支持用户分配的托管标识。
  • 与客户管理的密钥相关的大部分资源(磁盘加密集、VM、磁盘和快照)都必须位于同一订阅和区域中。

  • Azure 密钥保管库可以在不同的订阅中使用,但必须与磁盘加密集位于同一区域中。

  • 使用客户管理的密钥加密的磁盘只能移动到另一个资源组(如果附加到的 VM 已解除分配)。

  • 无法在不同订阅间移动使用客户管理的密钥加密的磁盘、快照和映像。

  • 当前或以前使用 Azure 磁盘加密加密的托管磁盘不能使用客户管理的密钥进行加密。

  • 每个区域、每个订阅最多只能创建 5000 个磁盘加密集。

  • 有关将客户托管密钥与共享映像库结合使用的信息,请参阅预览版:使用客户托管密钥加密映像

支持的区域

可在提供托管磁盘的所有区域中使用客户管理的密钥。

重要

客户管理的密钥依赖于 Azure 资源的托管标识,后者是 Microsoft Entra ID 的一项功能。 配置客户托管密钥时,实际上会自动将托管标识分配给你的资源。 如果随后将订阅、资源组或托管磁盘从一个 Microsoft Entra 目录移动到另一个目录,则与托管磁盘关联的托管标识不会转移到新租户,因此,客户管理的密钥可能不再有效。 有关详细信息,请参阅在 Microsoft Entra 目录之间转移订阅

若要为托管磁盘启用客户管理的密钥,请参阅我们的相关文章,了解如何使用 Azure PowerShell 模块Azure CLIAzure 门户来启用它。

有关代码示例,请参阅使用 CLI 从快照创建托管磁盘

主机加密 - VM 数据的端到端加密

启用主机加密时,将在 VM 主机本身(VM 分配到的 Azure 服务器)上启动加密。 临时磁盘和 OS/数据磁盘缓存的数据存储在该 VM 主机上。 启用主机端加密后,所有这些数据都会静态加密,并且将以加密状态传输到将保存它的存储服务。 实质上,主机加密会从端到端加密数据。 主机端加密不会使用 VM 的 CPU,并且不会影响 VM 的性能。

启用端对端加密后,会使用平台管理的密钥对临时磁盘和临时 OS 磁盘进行静态加密。 OS 和数据磁盘缓存使用客户管理的密钥或平台管理的密钥进行静态加密,具体取决于所选磁盘加密类型。 例如,如果使用客户管理的密钥对磁盘进行加密,则使用客户管理的密钥对磁盘的缓存进行加密,如果使用平台管理的密钥对磁盘进行加密,则使用平台管理的密钥对磁盘的缓存进行加密。

限制

  • 在 4k 扇区大小的 Ultra Disks 和高级 SSD v2 上受支持。
  • 对于 512e 扇区大小的 Ultra Disks 和高级 SSD v2,只有这些磁盘创建于 2023 年 5 月 13 日之后时,才支持此功能。
  • 如果在虚拟机 (VM) 或虚拟机规模集上启用了 Azure 磁盘加密(使用 bitlocker/DM-Crypt 的来宾 VM 加密),则无法启用。
  • 无法在启用了主机加密的磁盘上启用 Azure 磁盘加密。
  • 可以在现有的虚拟机规模集上启用加密。 但是,只有启用加密后新建的 VM 才会自动加密。
  • 现有 VM 只有在经过释放和重新分配后才能加密。

支持的 VM 大小

可以通过编程方式拉取受支持的 VM 大小的完整列表。 若要了解如何以编程方式检索它们,请参阅 Azure PowerShell 模块一文的“查找支持的 VM 大小”部分。

若要使用主机加密启用端对端加密,请参阅我们的相关文章,了解如何使用 Azure PowerShell 模块Azure 门户来启用它。

静态双重加密

对安全性高度敏感的客户如果担心出现与任何特定加密算法、实现或密钥泄露相关的风险,现在可以选择在使用平台管理的加密密钥的基础结构层上启用使用其他加密算法/模式的额外加密层。 这个新层可以应用于持久性 OS 和数据磁盘、快照和映像,所有这些都将通过双重加密进行静态加密。

限制

超级磁盘当前不支持双重静态加密。

支持的区域

双重加密适用于托管磁盘可用的所有区域。

若要为托管磁盘启用静态双重加密,请参阅我们的相关文章,了解如何使用 Azure PowerShell 模块Azure CLIAzure 门户来启用它。

服务器端加密与 Azure 磁盘加密

Azure 磁盘加密利用 Linux 的 DM-Crypt 功能或 Windows 的 BitLocker 功能,在来宾 VM 中使用客户管理的密钥来加密托管磁盘。 使用客户托管密钥的服务器端加密改进了 ADE,它通过加密存储服务中的数据使你可以为 VM 使用任何 OS 类型和映像。

重要

客户管理的密钥依赖于 Azure 资源的托管标识,后者是 Microsoft Entra ID 的一项功能。 配置客户托管密钥时,实际上会自动将托管标识分配给你的资源。 如果随后将订阅、资源组或托管磁盘从一个 Microsoft Entra 目录移动到另一个目录,则与托管磁盘关联的托管标识不会转移到新租户,因此,客户托管密钥可能不再有效。 有关详细信息,请参阅在 Microsoft Entra 目录之间转移订阅

后续步骤