通过


你当前正在访问 Microsoft Azure Global Edition 技术文档网站。 如果需要访问由世纪互联运营的 Microsoft Azure 中国技术文档网站,请访问 https://docs.azure.cn

Azure 密钥保管库的可靠性

Azure 密钥保管库是一种云服务,它为机密(如密钥、密码、证书和其他敏感信息)提供安全存储。 密钥保管库提供了一系列内置可靠性功能,以帮助确保机密保持可用。

使用 Azure 时,可靠性是共同的责任。 Microsoft提供了一系列功能来支持复原和恢复。 你负责了解这些功能如何在你使用的所有服务中工作,并选择满足业务目标和运行时间目标所需的功能。

本文介绍密钥保管库可以灵活应对各种潜在的中断和问题,包括暂时性故障、可用性区域中断和区域中断。 它还介绍了如何使用备份从其他类型的问题恢复、恢复功能以防止意外删除,并突出显示有关密钥保管库服务级别协议(SLA)的一些关键信息。

提高可靠性的生产部署建议

对于生产工作负载,我们建议您:

  • 使用标准层或高级层密钥保管库。
  • 启用软删除和清除保护 ,以防止意外或恶意删除。
  • 对于关键工作负荷,请考虑实施本指南中所述的多区域策略。

可靠性体系结构概述

为了确保发生硬件故障或网络中断时密钥、机密和证书的高持久性和可用性,密钥保管库提供多层冗余,以在以下事件期间维护可用性:

  • 硬件故障
  • 网络中断
  • 本地化灾难
  • 维护活动

默认情况下,密钥保管库通过在同一区域内复制您的密钥保管库及其内容来实现冗余。

如果区域具有 配对区域 ,并且配对区域与主要区域位于同一地理位置,则内容也会复制到配对区域。 此方法可确保密钥和机密的高持久性,从而防范硬件故障、网络中断或本地化灾难。

暂时性故障的复原能力

暂时性故障是指组件发生短暂的间歇性故障。 这些故障经常出现在云之类的分布式环境中,在运营过程中比较常见。 暂时性故障在短时间内自行纠正。 应用程序通常可以通过重试受影响的请求来处理暂时性故障,这一点很重要。

与任何云托管的 API、数据库和其他组件通信时,所有云托管的应用程序都应遵循Azure暂时性故障处理指南。 有关详细信息,请参阅有关处理暂时性故障的建议。

若要处理可能发生的任何暂时性故障,客户端应用程序在与密钥保管库交互时应实现重试逻辑。 请考虑采用以下最佳做法:

  • 使用通常包括内置重试机制的 Azure SDK

  • 如果客户端直接连接到密钥保管库,则实施指数退避重试策略。

  • 尽可能减少对密钥保管库的直接请求,在内存中缓存机密。

  • 监视限流错误,因为超出 密钥保管库 服务限制会导致限流。

在高吞吐量场景中使用 密钥保管库 时,请考虑将操作分散到多个密钥保管库以避免触发访问限制。 请考虑以下方案的密钥保管库特定指南:

  • 高吞吐量场景是接近或超过 密钥保管库 操作的服务限制,例如软件保护密钥每秒 200 次操作。

  • 对于高吞吐量的工作负载,请将 密钥保管库 流量划分到多个保管库和不同的区域。

  • 所有事务类型的订阅范围限制是单个密钥保管库限制的五倍。

  • 为每个安全或可用性域使用单独的保管库。 例如,如果两个区域中有五个应用,请考虑使用 10 个保管库。

  • 对于公钥作(如加密、包装和验证),请通过缓存公钥材料在本地执行这些作。

有关更多信息,请参阅 密钥保管库 速率限制指南

应对可用区故障的弹性

可用区是物理上相互独立的Azure区域中的数据中心组。 当某个区域发生故障时,服务可以切换到其他可用的区域。

密钥保管库 会自动在支持可用性区域的 地区提供区域冗余。 此冗余可在区域中提供高可用性,而无需任何特定配置。

当可用性区域不可用时,密钥保管库会自动将请求重定向到其他正常运行的可用性区域,以确保高可用性。

要求

  • 区域支持: 密钥保管库 在所有支持可用性区域的 Azure 区域中默认启用区域冗余。
  • 所有密钥保管库 SKU(标准版和高级版)都支持相同的可用性和复原能力。 达到区域复原能力不需要任何特定的层级要求。

成本

密钥保管库中没有与区域冗余相关的额外费用。 定价依据 SKU(标准版或高级版)以及执行的操作数量。

所有区域正常时的行为

本部分介绍当密钥保管库位于具有可用性区域且所有可用性区域都正常运行的区域时会发生什么情况:

  • 区域之间的流量路由: 密钥保管库自动管理可用性区域之间的流量路由。 在正常作期间,请求以透明方式分布在各个区域。

  • 区域之间的数据复制: 密钥保管库 数据在支持可用区的区域中跨可用区同步复制。 此复制可确保即使某个区域不可用,密钥、机密和证书也保持一致且可用。

区域故障期间的行为

以下部分介绍当密钥保管库位于具有可用性区域且一个或多个可用性区域不可用的区域时会发生什么情况:

  • 检测和响应:密钥保管库 服务负责检测区域故障并自动响应这些故障。 在区域故障期间无需执行任何操作。
  • 活动请求: 在一个区域发生故障时,受影响的区域可能会无法处理正在传输中的请求,这需要客户端应用程序重试这些请求。 客户端应用程序应遵循 暂时性故障处理做法 ,确保在发生区域故障时可以重试请求。

  • 预期数据丢失: 由于区域之间的同步复制,区域故障期间不会发生数据丢失。

  • 预期的停机时间: 对于读取操作,在发生区域故障期间,应尽量保持无停机。 当服务适应区域故障时,写入操作可能会出现暂时不可用的情况。 预计在区域故障期间,读取操作会保持可用性。

  • Traffic rerouting: 密钥保管库自动将流量从受影响区域重新路由到正常区域,而无需任何客户干预。

区域恢复

当受影响的可用性区域恢复时,密钥保管库会自动将操作恢复到该区域。 Azure平台完全管理此过程,不需要任何客户干预。

对区域范围的故障的复原能力

密钥保管库资源部署到单个Azure区域。 如果区域不可用,密钥保管库也不可用。 但是,有一些方法可用于帮助确保区域中断的复原能力。 这些方法取决于密钥保管库是处于配对区域还是未配对区域,以及您的具体要求和配置。

Microsoft 管理的故障转移(切换到到配对区域)

密钥保管库 支持 Microsoft 托管的复制和故障转移,并适用于大多数配对区域中的密钥保管库实例。 密钥保管库中的内容会自动在区域内复制,并异步复制到配对区域。 这种方法可确保密钥和机密的高持久性。 如果出现长时间的地区故障(极其罕见),Microsoft 可能会启动密钥保管库的地区故障转移。

以下地区不支持由Microsoft管理的跨区域复制或故障转移:

  • Brazil South
  • 巴西东南部
  • 美国西部 3
  • 没有配对的地区

重要

Microsoft 触发 Microsoft 托管的故障转移。 很可能在出现重大延迟后发生,并尽最大努力完成。 此过程也存在一些例外情况。 密钥保管库的故障转移时间可能与其他 Azure 服务的故障转移时间不同。

如果需要应对区域故障,请考虑使用自定义多区域弹性解决方案之一。

还可以使用 备份和还原 功能将保管库的内容复制到所选的另一个区域。

注意事项

  • 停机时间: 故障转移正在进行时,密钥保管库可能在几分钟内不可用。

  • 故障转移后只读: 故障转移后,密钥保管库变为只读,仅支持有限的操作。 无法在次要区域中运行时更改密钥保管库属性,也无法修改访问策略和防火墙配置。

    当密钥库处于只读模式时,只支持以下操作:

    • 列出证书
    • 获取证书
    • 列出密钥
    • 获取机密
    • 列出密钥
    • 获取键的属性
    • 加密
    • 解密
    • 包装
    • 解开
    • Verify
    • 签名
    • 备份

成本

密钥保管库的内置多区域复制功能无需额外付费。

当所有区域都正常时的行为

下文介绍了当密钥保管库位于支持 Microsoft 管理的复制和故障转移的地区并且主要地区正常运行时会发生什么事:

  • 区域之间的流量路由: 在正常作期间,所有请求都会路由到部署密钥保管库的主要区域。

  • 区域之间的数据复制: 密钥保管库将数据异步复制到配对区域。 对密钥保管库内容进行更改时,这些更改首先提交到主要区域,然后复制到次要区域。

区域故障期间的行为

下文介绍了当密钥保管库位于支持 Microsoft 管理的复制和故障转移的地区并且主要地区发生中断时会发生什么事:

  • 检测和响应: 如果主要区域丢失,Microsoft 可以决定执行故障转移。 在主要区域丢失后,此过程可能需要几个小时,或者在某些情况下可能需要更长时间。 密钥保管库的故障切换可能不会与其他 Azure 服务同时发生。
  • 活动请求: 在区域故障转移期间,活动请求可能会失败,客户端应用程序需要在故障转移完成后重试它们。

  • 预期数据丢失: 如果在主要区域失败之前未将更改复制到次要区域,则可能会丢失一些数据。

  • 预期停机:在主要地区发生重大中断期间,密钥保管库可能会有数小时无法使用,或者直到 Microsoft 启动故障转移到次要地区为止。

    如果使用专用链接连接到密钥保管库,则连接可能需要长达 20 分钟才能在区域故障转移后重新建立。

  • 流量重新路由: 区域故障转移完成后,请求会自动路由到配对区域,而无需任何客户干预。

用于复原的自定义多区域解决方案

在某些情况下,由Microsoft管理的密钥保管库跨区域故障转移功能并不适合:

  • 您的密钥保管库位于未配对的区域。

  • 密钥保管库位于不支持 Microsoft 托管复制和故障转移到巴西南部、巴西东南部和美国西部 3 的配对地区中。

  • Microsoft 托管的跨区域故障转移提供的恢复时间或数据丢失无法满足业务运行时间目标。

  • 你需要故障转移到不是你的主要区域的配对的区域。

可以通过执行以下步骤来设计自定义跨区域故障转移解决方案:

  1. 在不同的区域中创建单独的密钥保管库。

  2. 使用备份和还原功能保持跨区域机密的一致性。

  3. 实施应用程序级逻辑以在密钥保管库之间进行故障转移。

备份和还原

密钥保管库可以备份和还原单个机密、密钥和证书。 备份旨在为您提供一个脱机的秘钥副本,以备万一无法访问密钥库之用。

请考虑以下有关备份功能的关键因素:

  • 备份会创建外部无法在 Azure 解密的加密数据块。

  • 备份只能还原到同一Azure订阅和Azure地理位置中的密钥保管库。

  • 只能备份不超过 500 个以前版本的密钥、机密或证书对象。

  • 备份是时间点快照,在机密发生更改时不会自动更新。

对于大多数解决方案,不应只依赖于备份。 请改用本指南中所述的其他功能来支持复原要求。 但是,备份可以防范一些其他方法无法防范的风险,例如意外删除特定机密。 有关详细信息,请参阅 密钥保管库 backup

恢复功能

密钥保管库提供两项关键恢复功能,以防止意外或恶意删除:

  • 软删除: 启用后,软删除允许在可配置的保留期内恢复已删除的保管库和对象。 此时间段默认为 90 天。 可以将软删除视为密钥保管库资源的回收站。

  • 清除保护: 启用后,清除保护会阻止永久删除密钥保管库及其对象,直到保持期结束。 此安全措施可防止恶意参与者永久销毁机密。

我们强烈建议这两种功能用于生产环境。 有关详细信息,请参阅 密钥保管库 恢复管理文档中的 Soft-delete 和 purge protection

服务级别协议

Azure服务的服务级别协议(SLA)描述了每个服务的预期可用性以及解决方案必须满足的条件,以实现该可用性预期。 有关详细信息,请参阅 SLa for 联机服务