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

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

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

CMK 磁盘加密的可用性范围

内存优化,均衡,计算优化 闪存优化
Microsoft 托管密钥 (MMK) 是的 是的
客户管理的密钥 (CMK) 是的 是的

Azure托管 Redis 中的磁盘加密覆盖率

在Azure托管 Redis 中,磁盘加密保护持久性磁盘、临时文件和 OS 磁盘:

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

默认情况下,MMK 始终用于加密这些磁盘,并且可以在顶部添加 CMK 来控制对数据加密密钥的访问。

在“闪存优化”层中,密钥和值也使用永久性内存快速 (NVMe) 闪存存储来部分存储在磁盘上。 但是,此磁盘与用于持久化数据的磁盘不同。 相反,它是临时的,这意味着在缓存停止、解除分配或重新启动后,数据不会持久保存。 此磁盘仅支持 MMK,因为此数据是临时的。

存储的数据 Disk 加密选项
暂留文件 持久性磁盘 MMK 或 CMK
等待导出的 RDB 文件 OS 磁盘和持久性磁盘 MMK 或 CMK
键和值(仅限闪存优化层) 暂时性 NVMe 磁盘 缅甸元 (MMK)

先决条件和限制

常规先决条件和限制

  • 若要连接到Azure 密钥保管库,请仅使用用户分配的托管标识。 不支持系统分配的托管标识。
  • 在现有缓存实例上的 MMK 和 CMK 之间进行更改会触发长时间运行的维护操作。 请勿在生产环境中使用此操作,因为它会导致服务中断。

Azure 密钥保管库 先决条件和限制

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

如何在 Azure 托管 Redis 中配置 CMK 加密

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

  1. 登录到 Azure 门户并启动创建 Azure 托管 Redis 实例快速入门指南。

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

    “高级设置”页的屏幕截图,其中启用了“客户管理的静态密钥加密”选项,并在红色框中突出显示。

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

    Azure 托管 Redis 中用于客户管理的密钥加密的“用户分配的托管标识”选择窗格屏幕截图。

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

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

    注释

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

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

    磁盘加密配置中已填写“标识”和“客户管理的密钥版本”字段的屏幕截图。

  7. 如果选择 URI 输入法,请从Azure 密钥保管库输入所选密钥的密钥标识符 URI。

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

将 CMK 加密添加到现有的 Azure 托管 Redis 实例

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

  2. 如果未设置 CMK 或想要更改 CMK 设置,请选择“ 更改加密设置”。 Azure托管 Redis 缓存实例的“资源”菜单中选择的“加密”选项的屏幕截图。

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

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

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

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

    注释

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

  7. 使用 客户管理的密钥(RSA) 下拉列表选择特定密钥。 如果有多个版本的密钥可供选择,请使用“版本”下拉列表。 现有缓存的“加密设置”页面上已填写标识和客户管理密钥字段的屏幕截图。

  8. 如果选择 URI 输入法,请从Azure 密钥保管库输入所选密钥的密钥标识符 URI。

  9. 选择“保存”

客户管理的密钥的密钥轮换

将加密密钥的轮换和过期计划为安全最佳做法。 Azure托管 Redis 会自动检测和使用 Azure 密钥保管库 中配置密钥的最新版本。

它在触发轮换后的两小时内检测并使用新的密钥版本。 仅可在这两个小时的时间窗口结束后禁用或使密钥失效。 否则,由于无法访问密钥,缓存可能会脱机。 密钥轮换会重新包装基础数据加密密钥,不会造成任何中断。

注释

2 小时轮换保证仅适用于 Azure Managed Redis。 其他服务可能具有不同的密钥轮换保证。

若要确认密钥轮换已完成,请在Azure 门户的“资源”菜单中查看加密时,查看所使用的密钥版本。

后续步骤