在 Azure 托管 HSM 上启用多区域复制

多区域复制允许将托管 HSM 池从一个 Azure 区域(称为主要区域)扩展到另一个 Azure 区域(称为扩展区域)。 配置后,这两个区域都处于活动状态,能够处理请求,并且通过自动复制共享相同的密钥材料、角色和权限。 离应用程序最近的可用区域接收并满足请求,从而最大程度地提高读取吞吐量和延迟。 虽然区域中断很少发生,但多区域复制可增强任务关键型加密密钥的可用性(如果一个区域不可用)。 有关 SLA 的详细信息,请访问Azure 密钥保管库托管 HSM 的 SLA

体系结构

托管 HSM 多区域复制的体系架构图。

在托管 HSM 上启用多区域复制时,会在扩展区域中创建第二个托管 HSM 池,其中包含三个负载均衡 HSM 分区。 向流量管理器全局 DNS 终结点<hsm-name>.managedhsm.chinacloudapi.cn发出请求时,最近的可用区域会接收并满足请求。 虽然鉴于 HSM 在整个区域中的分布,每个区域单独维护区域高可用性,但流量管理器可确保即使一个区域中托管 HSM 的所有分区都由于灾难而不可用,扩展区域中的托管 HSM 池仍可为请求提供服务。

Replication latency

在完全复制这两个区域之前,对托管 HSM 执行的任何写入操作(例如创建或更新密钥、创建或更新角色定义或者创建或更新角色分配)最多可能需要 6 分钟才能完成。 在此窗口中,无法保证已在区域之间复制书面材料。 因此,最好在创建或更新密钥与使用密钥之间等待 6 分钟,从而确保密钥材料已在区域之间完全复制。 这同样适用于角色分配和角色定义。

故障转移行为

如果多区域托管 HSM 中的某个区域由于中断而不可用,而另一个区域开始为所有请求提供服务,会发生故障转移。 中断可能仅限于 HSM 池、整个托管 HSM 服务或整个 Azure 区域。 在故障转移期间,可能会注意到行为发生了变化,具体取决于受影响的区域。

受影响的区域 允许读取 允许写入
扩展区域
主要区域 可能

如果扩展区域不可用,当主要区域处于活动状态时,读取操作(获取密钥、列出密钥、所有加密操作、列出角色分配)可用。 写入操作也可用(创建和更新密钥、创建和更新角色分配、创建和更新角色定义)。

如果主要区域不可用,则读取操作可用,但写入操作可能不可用,具体取决于中断范围。

故障转移时间

在后台,DNS 解析处理将请求重定向到主要区域或扩展区域。

如果这两个区域都处于活动状态,流量管理器会将传入请求解析为与请求源地理位置最接近或网络延迟最低的位置。 DNS 记录配置为默认 TTL 5 秒。

如果区域向流量管理器报告不正常状态,未来的请求会解析为另一个区域(如果可用)。 缓存 DNS 查找的客户端可能会遇到延长的故障转移时间。 但是,任何客户端缓存过期后,未来的请求应路由到可用区域。

计费

多区域复制到扩展区域会产生额外的计费 (x2),因为新的 HSM 池会在扩展区域中使用。 有关详细信息,请参阅Azure 托管 HSM 定价

软删除行为

托管 HSM 软删除功能允许恢复删除的 HSM 和密钥,但在已启用多区域复制的场景中,存在细微差别,即在主要 HSM 上执行软删除之前,必须先删除辅助 HSM。 此外,从主要 HSM 中移除扩展区域时,将清除已移除区域中的 HSM,而不是进入软删除状态,并且已清除的 HSM 的计费将立即结束。 如果需要,你始终可以从主要区域扩展到新的扩展区域。

Azure 专用链接功能允许通过虚拟网络中的专用终结点访问托管 HSM 服务。 可以在主要区域的托管 HSM 上配置专用终结点,就像不使用多区域复制功能时一样。 对于扩展区域中的托管 HSM,建议在主要区域中的托管 HSM 复制到扩展区域中的托管 HSM 后,创建另一个专用终结点和专用 DNS 区域。 这会将客户端请求重定向到最靠近客户端位置的托管 HSM。

下面是一些场景及示例:托管 HSM 位于主要区域(英国南部)中,另一个托管 HSM 位于扩展区域(中国中东部)中。

  • 当主要和扩展区域中的托管 HSM 在已启用专用终结点的情况下启动并运行时,客户端请求会重定向到最靠近客户端位置的托管 HSM。 客户端请求会转到最近区域的专用终结点,然后由流量管理器定向到同一区域的托管 HSM。

    阐明第一个托管 HSM 多区域场景的关系图。

  • 当多区域复制场景中的一个托管 HSM(例如英国南部)在启用了专用终结点的情况下不可用时,客户端请求将被重定向到可用的托管 HSM(中国中东部)。 来自英国南部的客户端请求将先转到英国南部的专用终结点,然后由流量管理器定向到美国中西部托管 HSM。

    阐明第二个托管 HSM 多区域场景的关系图。

  • 主要区域和扩展区域中的托管 HSM,但在主要区域或扩展区域中只配置了一个专用终结点。 对于来自不同 VNET (VNET1) 的客户端通过不同 VNET (VNET2) 中的专用终结点连接到托管 HSM,需要在两个 VNET 之间建立 VNET 对等互连。 可以为在创建专用终结点期间创建的专用 DNS 区域添加 VNET 链接。

    阐明第三个托管 HSM 多区域场景的关系图。

在下图中,专用终结点仅在英国南部区域创建,同时有两个托管 HSM 正在运行,一个在英国南部,另一个在中国中东部。 来自这两个客户端的请求会转到英国南部托管 HSM,因为请求通过专用终结点路由,在这种情况下,专用终结点位置位于英国南部。

阐明第四个托管 HSM 多区域场景的关系图。

在下图中,专用终结点仅在英国南部区域创建,只有中国中东部的托管 HSM 可用,英国南部的托管 HSM 不可用。 在这种情况下,请求将通过英国南部的专用终结点重定向到中国中东部的托管 HSM,因为流量管理器检测到英国南部的托管 HSM 不可用。

阐明第五个托管 HSM 多区域场景的关系图。

Azure CLI 命令

如果正在新建托管 HSM 池,然后扩展到扩展区域,请在扩展之前参考这些说明。 如果从现有的托管 HSM 池进行扩展,请使用以下说明将 HSM 池扩展到扩展区域。

注意

这些命令需要 Azure CLI 2.48.1 或更高版本。 要安装最新版本,请参阅如何安装 Azure CLI

将主要 HSM 扩展到扩展区域

要将托管 HSM 池扩展到另一个区域,请运行以下命令,从而自动在扩展区域中创建一个新的 HSM。

az keyvault region add --hsm-name "ContosoMHSM" --region "chinaeast2"

注意

此示例中的“ContosoMHSM”是主要 HSM 池名称;“chinaeast2”是你要将它扩展到的扩展区域。

从主要 HSM 中移除扩展区域

移除扩展 HSM 后,将清除其他区域中的 HSM 分区。 必须先删除所有辅助 HSM,然后才能软删除或清除主要托管 HSM。 使用此命令只能删除辅助 HSM。 只能使用软删除清除命令删除主要 HSM

az keyvault region remove --hsm-name ContosoMHSM --region chinaeast2

列出所有区域

az keyvault region list --hsm-name ContosoMHSM

后续步骤