发布日期:2026-07-09 浏览次数:
HSM-clustering-and-high-availability-done-right" style="text-align: center;">
HSM 存储着所有其他系统赖以运行的密钥,例如 TLS 私钥、签名密钥以及封装环境中所有其他秘密信息的主密钥。这就引出了一个很多架构评审都会避而不谈的棘手问题:如果其中一个密钥失效会发生什么?如果诚实的答案是“我们不太确定”,那么你最重要的加密操作就存在一个单点故障,而且你会在最糟糕的时候发现它的危害有多大。
HSM的高可用性是消除这种风险的关键,而现代云 HSM 平台已经使基础配置变得相对简单。在集群中部署多个 HSM,工作负载就会自动在它们之间进行负载均衡。将这些 HSM 分布在不同的可用区,就能增强抵御区域级故障的能力。这部分很简单。
问题在于,团队往往认为启用多可用区配置就足够了。可用性和密钥持久性并非同一概念,理解二者的区别才是关键所在。本文将探讨 HSM 集群的工作原理、如何跨可用区和区域构建弹性架构,以及为什么你从未测试过的故障转移场景往往会导致最严重的宕机。
首先要了解其机制,因为集群的价值来自两个截然不同的属性,而人们常常将这两个属性混淆在一起。
首先是负载均衡。当集群拥有多个 HSM 时,客户端会根据每个 HSM 的剩余容量将加密操作分配到它们之间。这关乎吞吐量,而不仅仅是弹性。单个 HSM 每秒可执行的操作数量是有限的,对于繁忙的签名或TLS终止工作负载,这个上限是实际存在的。向集群添加 HSM 可以提高这个上限。
第二点是高可用性。当 HSM 位于不同的可用区时,任何单个 HSM 或任何单个可用区都不会成为故障点。即使其中一个 HSM 发生故障,其他 HSM 仍能继续提供服务,客户端只需停止向发生故障的 HSM 发送工作负载即可。通常的基本建议是在同一区域内的两个不同可用区中至少部署两个 HSM;对于任何您真正无法承受损失的组件,两个 HSM 只是最低配置,而非最终目标。
这两个特性背后都蕴藏着集群之所以为集群的关键所在:同步。当您生成或导入密钥时,集群会将该密钥材料复制到集群中的每个硬件安全模块 (HSM),从而确保每个成员上都存在完全相同的密钥。正是这种复制机制使得集群中的任何 HSM 都能响应任何请求,同时也是持久性的基石。如果密钥仅存在于单个设备上,那么一旦发生硬件故障,密钥就会失效。
这就是陷阱所在。人们很容易想当然地认为,高可用性集群就意味着密钥安全。但可用性和持久性回答的是两个不同的问题。
可用性是指您当前是否可以执行加密操作。多可用区集群可以很好地满足这一要求:如果一个HSM或可用区发生故障,另一个 HSM 或可用区会处理该请求,从而确保您的应用程序能够继续运行。
持久性提出了一个更为严肃的问题:你的密钥材料是否会永久丢失?这个问题应该让架构师夜不能寐,因为丢失 HSM 密钥与丢失服务器截然不同。如果保护所有其他密钥的密钥丢失,且没有可恢复的副本,那么这些密钥所保护的数据也可能永远无法恢复。
目前没有任何支持工单可以恢复数据。集群复制可以防止单个设备丢失,但仅靠复制本身并非备份策略,因为某些故障会蔓延。错误的管理操作、损坏的密钥导入或配置错误都可能同时影响所有同步成员。持久性要求对密钥材料进行独立备份,这些备份必须与运行中的集群分开,这样才能避免单一灾难性事件同时导致密钥及其唯一副本丢失。
设计 HSM 弹性架构意味着要同时考虑这两个问题。一个可用性极佳但没有独立且经过测试的备份的集群,一旦出现故障,就可能面临无法恢复的灾难。
了解了这些特性之后,设计选择就迎刃而解了。
在同一区域内,将 HSM 分布在至少两个可用区中,如果吞吐量或风险承受能力需要,则应增加超出最小容量的容量。在网络层面上,应将 HSM 部署在靠近使用它们的应用程序的位置,因为每次加密调用都是一次往返,在高负载下延迟会累积。确保集群有足够的余量,即使失去一个成员也不会导致剩余成员超出其容量,因为故障转移如果立即导致剩余 HSM 过载,则只会将一个问题变成两个问题。
跨区域部署时,情况就有所不同。多可用区集群可以防止单个可用区故障,但无法防止整个区域的故障,也无法防止区域服务中断。对于那些对服务中断有严格要求的工作负载(无论是灾难恢复还是满足地理隔离方面的监管要求),您需要一种跨区域的策略。
这通常意味着要能够从备份中在第二个区域启动或恢复 HSM 集群,并确保这些备份保持最新。跨区域密钥处理对数据驻留和密钥材料的移动方式有着自身的限制,因此设计必须同时满足技术规范和合规性要求。
核心在于容量规划与故障规划的结合。要了解每个高位支撑模块(HSM)的承载能力,了解当某个构件或区域发生故障时会造成多大的损失,并确保剩余部分能够承受这些损失。
Luna Network HSM 可为对您至关重要的加密应用程序提供可扩展性和冗余性。对于需要持续不间断运行的应用程序,Luna HSM Client(客户端) 允许您将多个 HSM 上的应用程序分区合并到一个逻辑组中,即高可用性 (HA) 组。
Luna Network HSM 支持
通过 LunaCM hagroup 命令,客户端可以创建和管理高可用性 (HA) 组;“参与”的成员 HSM 并不知道它们属于某个组。
PKCS#11 API 的扩展功能可用于完全编程您自己的 HA 环境,或者与合适的 COTS 高可用性解决方案集成,这些解决方案提供合适的应用程序接口,使用 HA 间接登录调用来处理组中 HSM 分区之间的通用身份验证。
对等集群,是指成员 HSM 设备之间相互协调的集群——它使用 HSM 设备集群和密钥环(Keyrings),而不是传统的“虚拟 HSM”分区。
高可用性 (HA) 组允许您的客户端应用程序在至少有一个成员 HSM 正常运行并连接到网络的情况下访问加密服务。这样,您可以在不暂停应用程序的情况下对任何单个成员进行维护,并在单个成员发生故障时提供冗余。加密请求会分发到所有活动的组成员,因此每增加一个成员,性能都会有所提升。加密对象会在整个组中进行复制,因此 HA 还可用于维护组内容的最新、自动的远程备份。
揽阁信息是Thales的重要合作伙伴,拥有丰富的 Luna HSM 销售、支持、制作定制化解决方案的能力和经验,欢迎联系我们获取更多信息。
揽阁信息 · 值得您信赖的信息安全顾问!