IBM Cloud Docs
了解 Secrets Manager 的高可用性和灾难恢复

了解 Secrets Manager 的高可用性和灾难恢复

高可用性服务或工作负载根据预先定义的服务级别承受故障并继续提供处理能力的能力。 对于服务,可用性在服务水平协议中进行了定义。 可用性包括计划内和计划外事件,例如维护、故障和灾难。 (HA)是指服务在出现意外故障时仍能保持运行和访问的能力。 灾难恢复服务或工作负载从罕见重大事故和大规模故障(如服务中断)中恢复的能力。 这包括影响整个地区的自然灾害、数据库损坏或导致工作负荷增加的服务中断。 这种影响超出了高可用性设计所能承受的范围。是将服务实例恢复到工作状态的过程。

Secrets Manager是一项区域服务,可通过标准计划实现已定义的 服务级别目标(SLO)。 有关可用 "IBM Cloud区域和 "Secrets Manager数据中心的更多信息,请参阅 "按地点分列的服务和基础设施可用性

高可用性架构

一个Secrets Manager服务实例在一个多区区域的三个区中配置,没有单点故障。 API 请求通过全局负载平衡器路由到三个 HA 实例节点,每个节点位于不同的可用性区域。

如果 HA 实例节点或可用性区域发生故障,服务将继续运行,API 请求将通过全局负载平衡器路由到存活的 HA 实例节点。 从中断到全局负载平衡器识别故障之间可能会有很短的一段时间(秒),在这段时间内,请求可能会被发送到故障实例。 以编程方式访问服务实例的工作负载应遵循 客户端可用性重试逻辑,以保持可用性。 在分区故障期间,服务不会明显降低。

IBM Cloud® Secrets Manager实例高度可用,无需配置。

灾后恢复架构

要从服务实例中断中恢复,应在恢复区域内创建恢复服务实例。 一般来说,恢复服务实例应配置与源服务实例相同的数据,但也有例外情况。

某些机密需要针对恢复区域进行调整,例如,连接字符串或 API 密钥可能会引用特定区域的服务实例。 这些值在恢复服务实例中会有所不同。

Secret Manager 服务实例可能依赖于客户创建的这些可选服务,请确保这些服务存在于已恢复的区域中。

这样的实例应在事实发生之前创建(在任何可能的干扰发生之前),并与源实例保持同步。

灾难恢复功能

Secrets Manager支持以下灾难恢复功能:

为恢复到恢复区域制定计划。 恢复实例应与工作负载 "IBM Cloud内的灾后恢复方法。 保持一致 恢复实例应跟踪主服务实例的数据变更,包括组、机密、机密版本、证书和事件通知。

如果灾难不影响生产服务实例,例如数据损坏,客户可以修复服务实例中的数据。

该服务支持以下灾难恢复选项:

Secrets Manager的 DR 功能
功能 描述 对价
转体 恢复以前的秘密版本 生产服务实例必须可用。 版本历史中的版本数量有限。 查看 已知问题和限制

所有其他灾难恢复选项均由客户创建和支持。

Secrets Manager的客户 DR 功能
功能 描述 对价
外部真相来源 所有秘密都是通过脚本创建的,详情如下。 客户必须创建脚本并保存配置,以便在灾难发生时使用
备份和复原 使用客户编写的脚本备份服务实例。 客户必须创建脚本,并将备份副本保存在可在恢复过程中使用的地方
实时同步 生产过程中的秘密变化会被自动观察并传播到恢复服务实例中,请参阅以下说明 客户必须创建和维护工具。 数据损坏将同步到恢复实例。

旋转功能

秘密管理器的秘密一般通过“轮换”方式更新,写入一个值就会创建一个新版本的秘密。 通过在生产实例中还原旧版本的机密,有可能恢复数据损坏。 只保留固定数量的版本。 请参见 管理秘密版本

客户提供的外部真实来源功能

客户必须创建并使用某种地形、脚本或程序组合作为真实来源。 首先更新真实源,然后使用真实源创建/更新主服务实例和恢复服务实例。 源必须可用于还原版本,并且是单点故障。

如果主实例发生客户宣布的灾难,将使用恢复区域的服务(最小运行)或创建服务(零足迹)。 将工作负载组件重定向到恢复的实例,或在应用程序中插入重试代码,将请求重定向到第二个实例(最小化操作)。

包含真实源的版本库应具有时间点恢复功能,如Object Storage版本桶或 Github 版本库。

备份和还原客户提供的功能

要跨区域手动备份机密,必须首先在另一个区域拥有 Secrets Manager 实例。 然后,使用以下步骤来确保跨区域可用性。

使用 Secrets Manager API 或 CLI 从实例列出和下载私钥。

如果在实例中的私钥引擎上具有现有配置,那么还可以通过编程方式检索信息,以便可以在新实例中重新创建该信息。 更多信息,请参阅 获取秘密类型 API 的配置

将下载的机密添加到新创建的实例中。

通过自动化手动流程可以创建机密的自动备份,这可以通过多种方式实现。 请查看下列其中一些示例,以了解是否某个示例适用于您。

客户提供的实时同步功能

客户可以使用 Secrets Manager API创建脚本或程序,从您的主服务实例下载机密,并将数据填充到恢复服务实例中。 脚本可以利用 IBM Cloud 记录 主实例的审计事件,使恢复实例与 Code Engine 保持同步。 应保留客户管理的备份,以便从灾难中恢复。

创建一个脚本,定期下载所有机密,然后将它们导入备份实例。

在Event Notifications中创建指向IBM Cloud Code Engine操作的目标和订阅。 配置操作以监听生命周期事件,如 secret_created 和 secret_rotated。 然后,当操作接收到事件时,该操作会从一个实例下载私钥并将其添加到备份实例。

Secrets Manager支持为其提供的不同秘密类型发送通知。 要了解各种可用的生命周期事件类型,请参阅 启用事件通知

规划灾难恢复

必须定期练习灾难恢复步骤。 在制定计划时,请考虑以下失败情况和解决办法。

Secrets Manager的灾难恢复方案
失败 解决方法
硬件故障(单点) IBM提供的实例可抵御区域内的单点硬件故障,无需任何配置。
区域故障 IBM提供的实例可抵御区域故障,无需任何配置。
数据损坏 使用旋转功能在可用服务实例中恢复以前的秘密版本。
数据损坏 从外部真实源或备份和还原中还原一个未损坏的时间点版本。
地区性失败 将关键工作负载切换到使用恢复区域中的恢复版本。 使用外部真实源、备份和还原或实时同步还原实例。

您对 HA 和 DR 的责任

以下信息可帮助您创建并持续实践 HA 和 DR 计划。

以下与每个功能相关的核对表可以帮助您制定和实践您的计划。

  • 转体
    • 创建一个测试资源实例,练习轮换秘密版本和恢复秘密版本。
  • 外部真相来源
    • 验证真实源是否在还原位置可用的存储库中。
    • 验证真实源是否依赖于灾难区域,以避免依赖于故障区域。
  • 备份和复原
    • 确认备份在还原位置可用的存储库中。
    • 验证客户编写的用于还原数据的脚本在还原区域是否可用。
    • 确认脚本和备份不依赖于灾难区域,以避免依赖于故障区域。 考虑Object Storage跨地区水桶。
  • 实时同步
    • 验证恢复服务实例当前在还原区域是否可用
  • 既是外部真理之源,也是现场同步化:
    • 验证恢复区域中的恢复工作负载是否与恢复服务实例集成
    • 验证恢复服务实例中是否有特定区域的机密。

要进一步了解客户和IBM Cloud之间使用Secrets Manager 的责任归属,请参阅链接到您的产品 共享责任主题

必须定期练习灾难恢复步骤。 在制定计划时,请考虑以下失败情况和解决方案。

客户从 BYOK 损失中恢复

如果您的服务实例是使用IBM® Key Protect for IBM Cloud®或Hyper Protect Crypto Services的根密钥配置的,而您不小心删除了根密钥,请针对相应服务打开支持案例,并包含以下信息:

  • 您的服务实例的 CRN
  • 您的备份Key Protect或 HPCS 实例的 CRN
  • 新的Key Protect或 HPCS 根密钥 ID
  • 原始Key Protect或 HPCS 实例的 CRN 和密钥 ID(如果有的话

请参阅Key Protect和 HPCS 文档中的从意外丢失密钥中恢复授权。

恢复时间目标(RTO)和恢复点目标(RPO)

Secrets Manager的 RTO/RPO 功能
功能 RTO 和 RPO
恢复以前的秘密版本 RTO = 分钟,通过练习和可能的脚本编写可以提高 RTO 时间,RPO = 0。
外部真相来源 - 零足迹 RTO = 几分钟。 提供和填充数据所需的时间。 还要考虑将已恢复的工作负载调整到新服务实例端点所需的时间。 RPO = 0 时,在进行生产更改之前,会更改真实源。
外部真相源 - 全面运行的备份 RTO = 几秒,RPO = 0。 增强零足迹描述,在恢复区域保留实时服务实例。
备份和复原 RTO = 几分钟。 提供和填充数据所需的时间。 还要考虑将已恢复的工作负载调整到新服务实例端点所需的时间。 RPO = 最后一次备份的时间。
实时同步 RTO = 分钟,如果使用事件驱动,则 RPO = 分钟,如果使用定期备份,则 RPO = 周期(例如每天)。

创建新服务实例时,使用Secrets Manager的工作负载 RTO 将包括将已恢复的工作负载调整到新服务实例端点所需的时间。

变更管理

变更管理包括升级、配置变更和删除等任务。

建议向用户和进程授予其工作所需的最少权限的 IAM 角色和操作。 例如,限制删除生产资源的能力。

IBM®如何帮助确保灾难恢复

IBM®会在发生灾难时采取特定的恢复行动。

IBM®如何从区域故障中恢复

如果区域发生故障,IBM Cloud将解决区域中断问题,当区域重新上线时,全局负载平衡器将恢复向恢复的实例节点发送 API 请求,无需客户操作。

IBM®如何从地区故障中恢复过来

故障后恢复区域时,IBM会尝试从区域状态恢复服务实例,这样不会丢失数据,而且服务实例在恢复时会使用相同的连接字符串。

  • RTO = 几分钟
  • RPO = 0 分钟

如果区域状态已损坏,服务将恢复到上次内部备份时的状态。 与服务相关的所有数据每天都会在服务管理的跨区域Cloud Object Storage桶中备份一次。 有可能丢失价值 24 小时的数据。 这些备份不能用于客户管理的灾难恢复。 当服务从备份中恢复时,实例 ID 也会随之恢复,因此使用该端点的客户端无需更新新的连接字符串。

  • RTO = 2 小时
  • RPO = 最多 24 小时

如果 IBM 无法恢复服务实例,客户必须按照灾难恢复部分的描述进行恢复。

IBM®如何维护服务

所有升级均遵循IBM®服务最佳实践,并制定了恢复计划和回滚流程。 新功能的定期升级和维护是正常运行的一部分。 这种维护偶尔会造成短暂的中断,客户端可用性重试逻辑 会处理这些中断。 更改按顺序逐个地区推出,地区内逐个地区推出。 一旦出现缺陷,更新就会被退回。

通过功能标志启用和禁用复杂的更改,以控制曝光率。

影响客户工作负载的变更将在通知中详细说明。 有关详细信息,请参阅计划维护的 监控通知和状态、公告以及影响此服务的发布说明。