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 Key Vault 的集成体验。

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

完全控制密钥

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

禁用或删除密钥后,包含使用该密钥的磁盘的任何 VM 都会自动关闭。 之后,VM 将无法使用,除非再次启用密钥或分配新密钥。

对于高级 SSD、标准 SSD 和标准 HDD:禁用或删除密钥后,包含使用该密钥的磁盘的任何 VM 都会自动关闭。 之后,VM 将无法使用,除非再次启用密钥或分配新密钥。

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

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

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

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

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

限制

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

  • 如果为磁盘启用了此功能,则无法禁用它。 如果需要解决此问题,必须使用 Azure PowerShell 模块Azure CLI 将所有数据复制到完全不同的托管磁盘(未使用客户管理的密钥)。
  • 仅支持大小为 2048 位、3,072 位和 4,096 位的软件密钥,不支持其他密钥或其他大小。

  • 从使用服务器端加密和客户托管密钥加密的自定义映像创建的磁盘必须使用相同的客户托管密钥进行加密,且必须位于同一订阅中。

  • 从使用服务器端加密和客户托管密钥加密的磁盘创建的快照必须使用相同的客户托管密钥进行加密。

  • 与客户托管密钥相关的所有资源(Azure Key Vault、磁盘加密集、VM、磁盘和快照)都必须位于同一订阅和区域中。

  • 使用客户托管密钥加密的磁盘、快照和映像不能移至其他资源组和订阅。

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

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

支持的区域

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

重要

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

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

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

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

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

限制

  • 如果在 VM/虚拟机规模集上启用了 Azure 磁盘加密(使用 bitlocker/DM-Crypt 的来宾 VM 加密),则无法启用。
  • 无法在启用了主机加密的磁盘上启用 Azure 磁盘加密。
  • 可以在现有的虚拟机规模集上启用加密。 但是,只有启用加密后新建的 VM 才会自动加密。
  • 现有 VM 只有在经过释放和重新分配后才能加密。
  • 支持临时 OS 磁盘,但仅支持平台管理的密钥。

支持的 VM 大小

所有最新一代的 VM,无论容量多大,都支持主机加密:

类型 不支持 支持
常规用途 Dv3, Dv2, Av2 B, DSv2, Dsv3
计算优化 Fsv2
内存优化 Ev3 DSv2, Esv3, M
GPU NCv3
前几代 F, A, D DS, Fs

你还可以以编程方式找到 VM 大小。 若要了解如何以编程方式检索它们,请参阅 Azure PowerShell 模块的查找支持的 VM 大小部分。

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

静态双重加密

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

支持的区域

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

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

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

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

重要

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

常见问题

问:当我创建托管磁盘时,系统是否会默认启用服务器端加密?

答: 是的。 通过使用服务器端加密和平台管理的密钥对托管磁盘进行加密。

问:默认情况下,托管磁盘上的启动卷是否已加密?

答: 是的。 默认情况下,所有托管磁盘均已加密,包括 OS 磁盘。

问:加密密钥由谁管理?

答:平台管理的密钥由 Azure 管理。 你还可以使用和管理 Azure Key Vault 中存储的你自己的密钥。

问:是否可以为托管磁盘禁用服务器端加密?

答: 不是。

问:服务器端加密是否仅适用于特定区域?

答: 不是。 使用平台管理的密钥和客户管理的密钥的服务器端加密适用于提供 Azure 托管磁盘的所有区域。

问:对于本地到 Azure 和 Azure 到 Azure 灾难恢复方案,Azure Site Recovery 是否支持服务器端加密(使用客户管理的密钥)?

答: 是的。

问:是否可以使用 Azure 备份服务来备份通过服务器端加密(使用客户管理的密钥)进行加密的托管磁盘?

答: 是的。

问:托管快照和映像是否加密?

答: 是的。 所有托管快照和映像均会自动加密。

问:如果 VM 非托管磁盘位于现在加密的或以前加密的存储帐户上,是否可将这些磁盘转换为托管磁盘?

答: 是的。

问:是否还会加密从托管磁盘或快照导出的 VHD?

答: 不是。 但如果将 VHD 从加密托管磁盘或快照导出到加密存储帐户,则会对其进行加密。

后续步骤