Observação
O acesso a essa página exige autorização. Você pode tentar entrar ou alterar diretórios.
O acesso a essa página exige autorização. Você pode tentar alterar os diretórios.
Azure 密钥保管库 托管 HSM 是一项完全托管、高可用、单租户且符合标准的云服务,使你能够借助经验证符合 FIPS 140-3 3 级要求的硬件安全模块(HSM),保护你的云应用程序中的加密密钥。 托管 HSM 提供一系列内置可靠性功能,以帮助确保密钥保持可用状态。
使用 Azure 时,可靠性是共同的责任。 Azure 提供了一系列支持复原和恢复的功能。 你负责了解这些功能如何在你使用的所有服务中工作,并选择满足业务目标和运行时间目标所需的功能。
本文介绍了托管 HSM 如何抵御各种潜在的中断和问题,包括瞬时故障、分区故障和区域性中断。 它还介绍如何使用备份和安全域进行灾难恢复、恢复功能如何防止意外删除,以及有关托管 HSM 服务级别协议(SLA)的关键信息。
生产部署建议
对于生产工作负载,我们建议您:
可靠性体系结构概述
使用托管 HSM 时,你会部署一个 实例,它有时也称为 池。
托管 HSM 的体系结构旨在实现高可用性和持久性。
单租户隔离: 每个托管 HSM 实例专用于单个客户,由多个加密隔离的 HSM 分区组成的群集组成。
三重冗余分区: 托管 HSM 池由三个负载均衡的 HSM 分区组成,这些分区分布在数据中心内的单独机架中。 此分发可针对硬件故障提供冗余,并确保单个组件(如机架的电源或网络交换机)的丢失不会影响所有分区。
- 自动修复: 如果硬件故障或其他问题影响三个分区之一,该服务会自动在正常运行的硬件上重新生成受影响的分区,而无需任何客户干预,也不会公开机密。
若要了解托管 HSM 如何实现这些功能,请参阅 托管 HSM 中的关键主权、可用性、性能和可伸缩性。
安全域
安全域是托管 HSM 的一个关键组件,用于灾难恢复。 它是一个加密 Blob,其中包含从头开始重新生成托管 HSM 实例所需的所有凭据,包括分区所有者键、分区凭据、数据包装密钥和 HSM 的初始备份。
Important
如果没有安全域,则无法进行灾难恢复。 Azure无法恢复安全域,也不能在没有安全域的情况下访问密钥。
安全域是托管 HSM 安全性和可靠性的关键部分。 建议遵循以下最佳做法:
- 安全生成密钥: 对于生产环境,请在物理隔离环境中生成用于保护安全域的 RSA 密钥对,例如使用本地部署的 HSM 或隔离的工作站。
- 脱机存储: 将安全域密钥存储在加密的 USB 驱动器或其他脱机存储上,每个密钥共享在单独的设备上,位于不同的地理位置。
- 建立多人法定人数机制: 使用至少三名密钥持有者,以防止任何单个人获得所有法定人数密钥,并避免对任何单个人形成依赖。
有关详细信息,请参阅 托管 HSM 中的安全域概述。
暂时性故障的复原能力
暂时性故障是指组件发生短暂的间歇性故障。 这些故障经常出现在云之类的分布式环境中,在运营过程中比较常见。 暂时性故障在短时间内自行纠正。 应用程序通常可以通过重试受影响的请求来处理暂时性故障,这一点很重要。
与任何云托管的 API、数据库和其他组件通信时,所有云托管的应用程序都应遵循 Azure 暂时性故障处理指南。 有关详细信息,请参阅有关处理暂时性故障的建议。
使用与托管 HSM 集成的 Azure 服务时,这些服务会自动处理暂时性故障。
如果生成与托管 HSM 集成的自定义应用程序,请考虑以下最佳做法来处理可能发生的任何暂时性故障:
使用 Azure 密钥保管库 提供的Microsoft SDK,其中包括内置的重试机制。 SDK 适用于 .NET、 Python 和 JavaScript。
对于直接与托管 HSM 交互的任何代码,实现重试逻辑,包括指数退避。
减少对托管 HSM 的直接依赖项数量。 尽可能缓存加密操作的结果,以减少对托管 HSM 的直接请求。 通过缓存公钥材料在本地执行公钥操作,例如加密、包装和验证。 在本地执行操作可减少对托管 HSM 的依赖关系,并降低中断这些操作的暂时性故障的可能性。
如果在高吞吐量方案中使用托管 HSM,则托管 HSM 不会限制加密操作。 它充分利用了其 HSM 硬件的性能。 每个托管 HSM 实例都有三个分区。 在维护或修复操作期间,一个分区可能不可用。 对于容量规划,假设有两个分区可用。 如果需要有保证的吞吐量,请根据可用的一个分区进行规划。 监视 托管 HSM 可用性指标 ,了解服务的运行状况。
若要缩放大型数据卷的加密,请使用密钥层次结构。 仅将密钥加密密钥(KEK)存储在托管 HSM 中,并使用它包装存储在安全密钥存储中的其他位置的较低级别数据加密密钥。
有关性能基准和容量规划的详细信息,请参阅Azure托管 HSM 缩放指南。
分区故障的复原能力
托管 HSM 通过其三冗余体系结构实现高可用性,其中每个 HSM 池由三个 HSM 分区组成,这些分区分布在数据中心内的单独服务器机架中。 此机架级分发针对本地化硬件故障提供冗余。
发生硬件故障或本地化中断时,托管 HSM 会自动将请求重定向到正常的分区,并通过称为 机密服务修复的进程重新生成受影响的分区。 故障分区会自动在健康的硬件上重建,并借助经验证的 TLS 和 Intel SGX 飞地在恢复期间保护机密信息。
Cost
托管 HSM 中的内置高可用性不会增加任何额外费用。 定价基于 HSM 池的数量和所执行的操作数。 有关详细信息,请参阅Azure 托管 HSM 定价。
所有分区处于健康状态时的行为
本部分介绍当托管 HSM 池运行正常且所有分区可用时的期望情况。
流量路由: 托管 HSM 自动管理其三个分区之间的流量路由。 在正常操作期间,它会以透明方式跨分区分配请求。
数据复制: 托管 HSM 跨所有三个分区同步复制所有数据,包括密钥、角色分配和访问控制策略。 此方法可确保即使分区不可用,也可确保一致性和可用性。
分区失败期间的行为
本部分介绍当一个或多个分区不可用时会发生什么情况。
检测和响应: 托管 HSM 服务可检测分区故障并自动响应它们。 在分区失败期间无需执行任何操作。
正在处理的请求: 在分区发生故障期间,发往受影响分区的进行中请求可能会失败,因此客户端应用程序需要重试这些请求。 为了最大程度地减少分区中断的影响,客户端应用程序应遵循 暂时性故障处理做法。
预期数据丢失: 由于跨分区的同步复制,分区失败期间不会发生数据丢失。
预期的停机时间: 对于读取操作和大多数加密操作,分区失败期间应尽可能少或不会停机。 剩余的正常分区继续为请求提供服务。
流量重新路由: 托管 HSM 自动将流量从受影响的分区重新路由到正常的分区,而无需任何客户干预。
分区恢复
当受影响的分区恢复时,托管 HSM 通过机密服务修复自动还原操作。 此过程:
- 在正常运行的硬件上创建新的服务实例。
- 与主分区建立经过证明的 TLS 连接。
- 安全地交换凭据和加密材料。
- 将服务数据密封到新的 CPU。
Azure 平台完全管理此过程,不需要任何客户干预。
应对可用区故障的弹性
托管 HSM 中的高可用性基于数据中心内的机架级分发,而不是显式可用性区域部署。 每个分区在不同的机架中的单独服务器上运行,从而防止机架级故障,例如电源或网络交换机问题。
若要防范数据中心范围或可用性区域范围的中断,请使用区域 范围的故障复原中介绍的方法之一。
对区域范围的故障的复原能力
托管 HSM 资源部署到单个 Azure 区域。 如果区域不可用,则托管 HSM 也不可用。 但是,可以使用某些方法来帮助确保对区域中断的复原能力。
多区域复制
托管 HSM 支持可选的多区域复制,可用于将托管 HSM 池从一个Azure区域(主要区域)扩展到第二个Azure区域(扩展区域)。 配置此功能时:
- 这两个区域都处于活动状态,可以处理请求。
- 密钥材料、角色和权限会自动在区域之间复制。
- Azure 流量管理器将请求路由到最近的可用区域。
- 组合服务水平协议提高。
要求
区域支持: 支持托管 HSM 的所有区域都可以用作主要区域。 不依赖于 Azure 区域配对。
托管 HSM 不支持作为扩展区域的所有区域。 有关详细信息,请参阅 Azure 区域支持。
最大区域数: 可以添加一个扩展区域,总共最多添加两个区域。
Cost
多区域复制会产生额外的计费,因为扩展区域使用第二个 HSM 池。 有关详细信息,请参阅Azure 托管 HSM 定价。
配置多区域复制
添加扩展区域: 有关将扩展区域添加到现有主要区域的详细信息,请参阅 将主要 HSM 扩展到扩展区域。
将托管 HSM 扩展到另一个区域可能需要长达 30 分钟。
删除扩展区域: 有关从现有主要区域中删除扩展区域的详细信息,请参阅 从主要 HSM 中删除扩展区域。
当所有区域都正常时的行为
本部分介绍配置多区域复制时预期的情况,这两个区域都是可操作的。
流量路由: 所有区域都可以为请求提供服务。 Azure 流量管理器将请求路由到具有最近的地理邻近度或最低延迟的区域。
如果使用Azure 专用链接访问托管 HSM,请在两个区域中配置专用终结点,以便在故障转移期间获得最佳路由。 有关详细信息,请参阅 使用多区域复制的专用链接行为。
数据复制: 密钥、角色定义和角色分配的所有更改将在六分钟内异步复制到扩展区域。 在创建或更新密钥后等待 6 分钟,然后再在扩展区域中使用它。
区域故障期间的行为
本节介绍当您配置多区域复制且其中一个复制区域发生中断时,可能会出现的情况。
- 检测和响应:Azure 流量管理器检测不正常的区域,并将将来的请求路由到正常区域。 DNS 记录的生存时间 (TTL) 为 5 秒,但缓存 DNS 查询结果的客户端经历的故障转移时间可能会稍长一些。
- 通知: Azure 不会在某个区域关闭时自动通知你。 但是,可以使用 Azure 服务运行状况 来了解服务的总体运行状况,包括任何区域故障,并且可以设置 服务运行状况警报 来通知问题。
进行中的请求: 发往受影响区域的请求可能会失败,需要重试。
预期数据丢失: 在区域失败前 6 分钟内进行的更改可能不会复制到扩展区域。 如果主要区域不可恢复,这些更改可能会丢失。
预期的停机时间: 在故障转移期间,读取和写入操作在正常区域中保持可用。
靠近不正常区域的客户端应用程序可能会继续定向到该区域,直到 DNS 记录更新,但此更新将在大约五秒内进行。 为了尽量减少故障转移时间,客户端应避免缓存 DNS 查找的时间超过 DNS 记录的 TTL。
重新路由: Azure 流量管理器会自动将请求重新路由到正常区域。
区域恢复
当受影响的区域恢复时,托管 HSM 会自动恢复操作。 Azure 流量管理器会基于邻近度再次开始将请求路由到这两个区域。
针对区域故障进行测试
托管 HSM 完全管理区域故障的流量路由、故障转移和故障回复,因此无需验证区域故障进程或提供任何进一步的输入。
用于复原的自定义多区域解决方案
如果多区域复制不适合你的需求,则可以实现手动灾难恢复。 此方法需要:
- 源 HSM 的安全域。
- 私钥(至少为法定人数)用于加密安全域。
- 来自源 HSM 的最近一次完整 HSM 备份。
若要执行灾难恢复,请执行以下操作:
- 在不同的区域中创建新的托管 HSM 实例。
- 激活安全域恢复模式并上传安全域。
- 备份新的 HSM(还原前需要)。
- 从源 HSM 还原备份副本。
Important
新的 HSM 具有不同的名称和服务终结点 URI。 必须更新应用程序配置才能使用新位置。
有关详细的灾难恢复过程,请参阅 托管 HSM 灾难恢复。
备份和还原
托管 HSM 支持对所有密钥、版本、属性、标记和角色分配进行完整备份和还原。 备份存储在 Azure 存储帐户中。 如果您所在的区域支持此功能,我们建议将托管 HSM 备份到已启用异地冗余存储 (GRS) 的 Azure 存储帐户中。
HSM 使用与 HSM 安全域关联的加密密钥来加密备份。 只能将备份还原到具有相同安全域的 HSM。
托管 HSM 不支持备份调度,但可以使用 Azure Functions 或 Azure 自动化等服务来创建自己的调度器。
备份正在进行时,HSM 可能无法以完全吞吐量运行,因为某些分区正忙于执行备份操作。
有关详细的备份和还原过程,请参阅 完整备份和还原。
对意外删除的抵抗力
托管 HSM 提供两项关键恢复功能,以防止意外或恶意删除。
软删除: 不会立即清除已删除的 HSM 和密钥。 它们在可配置的 7 到 90 天保留期内仍可恢复(默认值为 90 天)。 软删除始终处于启用状态,无法禁用。
注释
软删除的托管 HSM 资源会继续计费,直到它们被清除。
清除保护: 启用后,在保留期届满之前,它会阻止永久删除托管 HSM 及其密钥。 清除保护不能被任何人禁用或覆盖,包括Microsoft。
强烈建议为生产环境启用清除保护。 有关详细信息,请参阅 托管 HSM 软删除和清除保护。
服务维护期间的系统弹性能力
托管 HSM 可处理服务维护,包括固件更新、修补和硬件修复,而无需客户干预。 在维护期间:
- 该服务可能会暂时使分区在应用更新时不可用。
- 在例行维护期间,三个分区中至少有两个保持可用。
- 客户端应用程序应实现重试逻辑来处理短暂中断。
机密服务修复过程可确保服务在维护操作期间永远不会公开机密。
服务级别协议
Azure服务的服务级别协议(SLA)描述了每个服务的预期可用性以及解决方案必须满足的条件,以实现该可用性预期。 有关详细信息,请参阅 联机服务的 SLA。
托管 HSM 为单区域部署提供标准可用性 SLA。 启用 多区域复制 会提高总体预期运行时间,因为如果任一区域不可用,可以从任一区域提供请求。