你当前正在访问 Microsoft Azure Global Edition 技术文档网站。 如果需要访问由世纪互联运营的 Microsoft Azure 中国技术文档网站,请访问 https://docs.azure.cn

使用客户管理的密钥为 Azure Cache for Redis 实例配置磁盘加密

默认情况下,Redis 服务器中的数据存储在内存中。 此数据未加密。 在将数据写入缓存之前,你可以对数据实施自己的加密。 在某些情况下,由于操作系统的操作,或者由于蓄意使用导出数据持久性功能来保留数据,数据可能会驻留在磁盘上。

默认情况下,Azure Cache for Redis 提供平台管理的密钥 (PMK)(也称为 Microsoft 管理的密钥 (MMK))用于加密所有层中的磁盘数据。 Azure Cache for Redis 的 Enterprise 和 Enterprise Flash 层还提供使用客户管理的密钥 (CMK) 对 OS 和数据持久性磁盘进行加密的功能。 客户管理的密钥可用于包装 MMK 来控制对这些密钥的访问。 这使 CMK 成为密钥加密密钥 (KEK)。 有关详细信息,请参阅 Azure 中的密钥管理

CMK 磁盘加密的可用性范围

基本、标准、高级 Enterprise、Enterprise Flash
Microsoft 托管密钥 (MMK)
客户管理的密钥 (CMK)

警告

默认情况下,所有 Azure Cache for Redis 层都使用 Microsoft 托管密钥来加密装载到缓存实例的磁盘。 但是,在基本层和标准层中,C0 和 C1 SKU 不支持任何磁盘加密。

重要

在高级层上,数据持久性将数据直接流式传输到 Azure 存储,因此磁盘加密不那么重要。 Azure 存储提供了多种加密方法可供使用。

加密覆盖范围

企业层

Enterprise 层中,磁盘加密用于加密持久性磁盘、临时文件和 OS 磁盘:

  • 持久性磁盘:作为数据持久性的一部分保留持久化 RDB 或 AOF 文件
  • 导出中使用的临时文件:加密所使用和导出的临时数据。 导出数据时,最终导出数据的加密由存储帐户中的设置控制。
  • OS 磁盘

默认情况下,使用 MMK 加密这些磁盘,但也可以使用 CMK 进行加密。

Enterprise Flash 层中,密钥和值也使用非易失性快速存储器 (NVMe) 闪存存储部分存储在磁盘上。 但是,此磁盘与用于持久化数据的磁盘不同。 相反,它是暂时性的,在停止、解除分配或重新启动缓存后,不会保留数据。 此磁盘仅支持 MMK,因为此数据是暂时的。

永久性 磁盘 加密选项
持久性文件 持久性磁盘 MMK 或 CMK
等待导出的 RDB 文件 OS 磁盘和持久性磁盘 MMK 或 CMK
密钥和值(仅限 Enterprise Flash 层) 暂时性 NVMe 磁盘 MMK

其他层

基本、标准和高级层中,操作系统磁盘默认使用 MMK 进行加密。 未装载持久性磁盘,而是使用 Azure 存储。 C0 和 C1 SKU 不使用磁盘加密。

先决条件和限制

常规先决条件和限制

  • 磁盘加密在 C0 或 C1 SKU 的基本层和标准层中不可用
  • 仅支持用户分配的托管标识连接到 Azure 密钥保管库。 不支持系统分配的托管标识。
  • 在现有缓存实例上的 MMK 和 CMK 之间进行更改会触发长时间运行的维护操作。 不建议将其用于生产用途,因为发生了服务中断。

Azure Key Vault 先决条件和限制

  • 包含客户管理的密钥的 Azure Key Vault 资源必须与缓存资源位于同一区域。
  • 必须在 Azure Key Vault 实例中启用清除保护和软删除。 默认情况下不启用清除保护。
  • 在 Azure Key Vault 中使用防火墙规则时,必须将 Key Vault实例配置为允许受信任的服务
  • 仅支持 RSA 密钥
  • 必须在 Key Vault 访问策略中向用户分配的托管标识授予“获取”、“解包密钥”和“包装密钥”权限,或者在 Azure 基于角色的访问控制中授予等效权限。 具有此方案所需最低特权的建议内置角色定义称为“密钥保管库加密服务加密用户”。

如何在 Enterprise 缓存上配置 CMK 加密

使用门户创建启用了 CMK 的新缓存

  1. 登录到 Azure 门户并启动“创建 Redis Enterprise 缓存”快速入门指南。

  2. 在“高级”页上,转到标题为“客户管理的密钥静态加密”部分,并启用“使用客户管理的密钥”选项。

    Screenshot of the advanced settings with customer-managed key encryption checked and in a red box.

  3. 选择“添加”,将用户分配的托管标识分配给资源。 此托管标识用于连接到保存客户管理的密钥的 Azure Key Vault 实例。

    Screenshot showing user managed identity in the working pane.

  4. 选择所选用户分配的托管标识,然后选择要使用的密钥输入方法。

  5. 如果使用“选择 Azure Key Vault 和密钥”输入方法,请选择保存客户管理的密钥的 Key Vault 实例。 此实例必须与缓存位于同一区域。

    注意

    有关如何设置 Azure Key Vault 实例的说明,请参阅 Azure Key Vault 快速入门指南。 还可以选择 Key Vault 选项下的“创建密钥保管库”链接,以创建新的 Key Vault 实例。 请记住,必须在 Azure 密钥保管库实例中同时启用清除保护和软删除。

  6. 使用客户管理的密钥 (RSA) 和“版本”下拉列表选择特定密钥和版本。

    Screenshot showing the select identity and key fields completed.

  7. 如果使用 URI 输入法,请输入 Azure Key Vault 中所选密钥的密钥标识符 URI。

  8. 输入缓存的所有信息后,请选择“查看 + 创建”。

将 CMK 加密添加到现有 Enterprise 缓存

  1. 转到缓存实例的“资源”菜单中的“加密”。 如果已设置 CMK,则会看到密钥信息。

  2. 如果尚未设置或想要更改 CMK 设置,请选择“更改加密设置Screenshot encryption selected in the Resource menu for an Enterprise tier cache.

  3. 选择“使用客户管理的密钥”以查看配置选项。

  4. 选择“添加”,将用户分配的托管标识分配给资源。 此托管标识用于连接到保存客户管理的密钥的 Azure Key Vault 实例。

  5. 选择所选用户分配的托管标识,然后选择要使用的密钥输入方法。

  6. 如果使用“选择 Azure Key Vault 和密钥”输入方法,请选择保存客户管理的密钥的 Key Vault 实例。 此实例必须与缓存位于同一区域。

    注意

    有关如何设置 Azure Key Vault 实例的说明,请参阅 Azure Key Vault 快速入门指南。 还可以选择 Key Vault 选项下的“创建密钥保管库”链接,以创建新的 Key Vault 实例。

  7. 使用“客户管理的密钥 (RSA)”下拉列表选择特定密钥。 如果有多个版本的密钥可供选择,请使用“版本”下拉列表。 Screenshot showing the select identity and key fields completed for Encryption.

  8. 如果使用 URI 输入法,请输入 Azure Key Vault 中所选密钥的密钥标识符 URI。

  9. 选择“保存”

后续步骤

详细了解 Azure Cache for Redis 功能: