本文介绍 Azure Key Vault 中的可靠性支持,包括通过 可用性区域 和 多区域部署实现区域内部复原。
可靠性是你和Microsoft之间的共同责任。 可以使用本指南确定哪些可靠性选项满足特定业务目标和运行时间目标。
Key Vault 是一种云服务,它为机密(例如密钥、密码、证书和其他敏感信息)提供安全存储。 Key Vault 提供了一系列内置可靠性功能,可帮助确保机密保持可用。 这些功能包括自动区域复制、数据冗余以及备份和还原机密的功能。
生产部署建议
对于 Key Vault 的生产部署,建议执行以下步骤:
使用标准层或高级层密钥保管库。
启用软删除和清除保护,以防止意外或恶意删除。
对于关键工作负荷,请考虑实施本指南中所述的多区域策略。
可靠性体系结构概述
为了确保发生硬件故障或网络中断时密钥、机密和证书的高持久性和可用性,Key Vault 提供多层冗余,以在以下事件期间维护可用性:
- 硬件故障
- 网络中断
- 本地化灾难
- 维护活动
默认情况下,Key Vault 通过复制密钥保管库及其区域中的内容来实现冗余。
如果区域具有配对区域,并且配对区域与主要区域位于同一地理位置,则内容也会复制到配对区域。 此方法可确保密钥和机密的高持久性,从而防范硬件故障、网络中断或本地化灾难。
暂时性故障
暂时性故障是指组件发生短暂的间歇性故障。 这些故障经常出现在云之类的分布式环境中,在运营过程中比较常见。 暂时性故障在短时间内自行纠正。 应用程序通常可以通过重试受影响的请求来处理暂时性故障,这一点很重要。
与任何云托管的 API、数据库和其他组件通信时,所有云托管的应用程序都应遵循 Azure 暂时性故障处理指南。 有关详细信息,请参阅 处理暂时性故障的建议。
若要处理可能发生的任何暂时性故障,客户端应用程序在与 Key Vault 交互时应实现重试逻辑。 请考虑采用以下最佳做法:
使用 Azure SDK,通常包括内置重试机制。
如果客户端直接连接到 Key Vault,则考虑使用指数退避重试策略。
尽可能减少对 Key Vault 的直接请求,在内存中缓存机密。
监视限制错误,因为超过密钥保管库服务上限会导致限制。
如果在高吞吐量场景中使用 Key Vault,请考虑将操作分布在多个密钥保管库上以避免限流。 对于以下场景,请考虑 Key Vault 的特定指南:
高吞吐量情况代表接近或超密钥保管库操作的服务上限 ,例如,软件保护密钥每秒 200 个操作。
对于高吞吐量工作负载,请将密钥保管库的流量划分到多个保管库和不同的地区。
所有事务类型的订阅范围限制是单个密钥保管库限制的五倍。
为每个安全或可用性域使用单独的保管库。 例如,如果两个区域中有五个应用,请考虑使用 10 个保管库。
对于公钥作(如加密、包装和验证),请通过缓存公钥材料在本地执行这些作。
有关详细信息,请参阅 Key Vault 限制流量指南。
可用性区域支持
可用性区域 是每个 Azure 区域内物理上独立的数据中心群组。 当某个区域发生故障时,服务可以切换到其他可用的区域。
Key Vault 自动在 支持可用性区域的区域中提供区域性冗余。 此冗余可在区域中提供高可用性,而无需任何特定配置。
当可用性区域不可用时,Key Vault 会自动将请求重定向到其他正常的可用性区域,以确保高可用性。
区域支持
默认情况下,Key Vault 在所有 支持可用性区域的 Azure 区域中启用区域冗余。
要求
所有 Key Vault SKU(标准版和高级版)都支持相同的可用性和复原能力。 达到区域复原能力不需要任何特定的层级要求。
成本
Key Vault 中没有与区域冗余相关的额外费用。 定价依据 SKU(标准版或高级版)以及执行的操作数量。
常规操作
本部分介绍当密钥保管库位于具有可用性区域且所有可用性区域都正常运行的区域时会发生什么情况:
区域之间的流量路由: Key Vault 自动管理可用性区域之间的流量路由。 在正常作期间,请求以透明方式分布在各个区域。
区域之间的数据复制:密钥保管库数据在支持区域的地区中跨可用性区域同步复制。 此复制可确保即使某个区域不可用,密钥、机密和证书也保持一致且可用。
区域关闭体验
以下部分介绍当密钥保管库位于具有可用性区域且一个或多个可用性区域不可用的区域时会发生什么情况:
检测和响应: Key Vault 服务负责检测区域故障并自动响应它们。 在区域故障期间无需执行任何操作。
通知: 可以通过 Azure 资源运行状况和 Azure 服务运行状况监视密钥保管库的状态。 这些服务提供有关任何服务降级的通知。
活动请求: 在一个区域发生故障时,受影响的区域可能会无法处理正在传输中的请求,这需要客户端应用程序重试这些请求。 客户端应用程序应遵循 暂时性故障处理做法 ,确保在发生区域故障时可以重试请求。
预期数据丢失: 由于区域之间的同步复制,区域故障期间不会发生数据丢失。
预期的停机时间: 对于读取操作,在发生区域故障期间,应尽量保持无停机。 当服务适应区域故障时,写入操作可能会出现暂时不可用的情况。 预计在区域故障期间,读取操作会保持可用性。
流量重新路由: Key Vault 自动将流量从受影响区域重新路由到正常区域,而无需任何客户干预。
有关详细信息,请参阅密钥保管库可用性和冗余文档中的地区故障转移。
Failback
当受影响的可用性区域恢复时,Key Vault 会自动将其操作恢复到该区域。 Azure 平台完全管理此过程,不需要任何客户干预。
多区域支持
Key Vault 资源部署到单个 Azure 区域。 如果区域不可用,密钥保管库也不可用。 但是,有一些方法可用于帮助确保区域中断的复原能力。 这些方法取决于密钥保管库是处于配对区域还是未配对区域,以及您的具体要求和配置。
Microsoft 管理的故障转移(切换到到配对区域)
密钥保管库支持对大多数配对地区中的密钥保管库进行 Microsoft 管理的复制和故障转移。 密钥保管库中的内容会自动在区域内复制,并异步复制到配对区域。 这种方法可确保密钥和机密的高持久性。 如果出现长时间的地区故障(极其罕见),Microsoft 可能会启动密钥保管库的地区故障转移。
重要
Microsoft 触发 Microsoft 托管的故障转移。 很可能在出现重大延迟后发生,并尽最大努力完成。 此过程也存在一些例外情况。 密钥保管库的故障转移不会与其他 Azure 服务的故障转移同时进行。
如果你需要应对区域中断,请考虑使用一种备选多区域方法。
有关 Key Vault 如何跨区域复制数据的详细信息,请参阅 Key Vault 可用性和冗余指南中的数据 复制 。
注意事项
故障转移期间,密钥保管库可能持续数分钟无法使用。 故障转移后,密钥保管库变为只读,仅支持有限的操作。 无法在次要区域中运行时更改密钥保管库属性,也无法修改访问策略和防火墙配置。
成本
Key Vault 的内置多区域复制功能无需额外付费。
常规操作
下文介绍了当密钥保管库位于支持 Microsoft 管理的复制和故障转移的地区并且主要地区正常运行时会发生什么事:
区域之间的流量路由: 在正常作期间,所有请求都会路由到部署密钥保管库的主要区域。
区域之间的数据复制: Key Vault 以异步方式将数据复制到配对区域。 对密钥保管库内容进行更改时,这些更改首先提交到主要区域,然后复制到次要区域。
区域故障体验
下文介绍了当密钥保管库位于支持 Microsoft 管理的复制和故障转移的地区并且主要地区发生中断时会发生什么事:
检测和响应: 如果主要区域丢失,Microsoft 可以决定执行故障转移。 在主要区域丢失后,此过程可能需要几个小时,或者在某些情况下可能需要更长时间。 密钥保管库的故障转移可能不会与其他 Azure 服务同时发生。
通知: 可以通过 Azure 资源运行状况和 Azure 服务运行状况通知监视密钥保管库的状态。
活动请求: 在区域故障转移期间,活动请求可能会失败,客户端应用程序需要在故障转移完成后重试它们。
预期数据丢失: 如果在主要区域失败之前未将更改复制到次要区域,则可能会丢失一些数据。
预期停机:在主要地区发生重大中断期间,密钥保管库可能会有数小时无法使用,或者直到 Microsoft 启动故障转移到次要地区为止。
流量重新路由: 区域故障转移完成后,请求会自动路由到配对区域,而无需任何客户干预。
有关故障转移过程和行为的详细信息,请参阅 Key Vault 可用性和冗余指南中的 跨区域故障转移 。
备选多区域方法
在某些情况下,Key Vault Microsoft托管的跨区域故障转移功能不适合:
您的密钥保管库位于未配对的区域。
密钥保管库位于不支持 Microsoft 托管复制和故障转移到巴西南部、巴西东南部和美国西部 3 的配对地区中。
Microsoft 托管的跨区域故障转移提供的恢复时间或数据丢失无法满足业务运行时间目标。
你需要故障转移到不是你的主要区域的配对的区域。
可以通过执行以下步骤来设计自定义跨区域故障转移解决方案:
在不同的区域中创建单独的密钥保管库。
使用备份和还原功能保持跨区域机密的一致性。
实施应用程序级逻辑以在密钥保管库之间进行故障转移。
Backups
Key Vault 可以备份和还原单个机密、密钥和证书。 备份旨在为您提供一个脱机的秘钥副本,以备万一无法访问密钥库之用。
请考虑以下有关备份功能的关键因素:
备份创建无法在 Azure 外部解密的加密 Blob。
备份只能还原到同一 Azure 订阅和 Azure 地理位置中的密钥保管库。
只能备份不超过 500 个以前版本的密钥、机密或证书对象。
备份是时间点快照,在机密发生更改时不会自动更新。
对于大多数解决方案,不应只依赖于备份。 请改用本指南中所述的其他功能来支持复原要求。 但是,备份可以防范其他方法没有的一些风险。 有关详细信息,请参阅 Key Vault 备份。
恢复功能
Key Vault 提供两项密钥恢复功能,以防止意外或恶意删除:
软删除: 启用后,软删除允许在可配置的保留期内恢复已删除的保管库和对象。 此时间段默认为 90 天。 可以将软删除视为密钥保管库资源的回收站。
清除保护: 启用后,清除保护会阻止永久删除密钥保管库及其对象,直到保持期结束。 此安全措施可防止恶意参与者永久销毁机密。
我们强烈建议这两种功能用于生产环境。 有关详细信息,请参阅 Key Vault 恢复管理文档中 的软删除和清除保护 。
服务级别协议
Key Vault 的服务级别协议(SLA)描述了服务的预期可用性,以及实现该可用性预期必须满足的条件。 有关详细信息,请参阅 联机服务的 SLA。