状态:Hosted 与 Self-hosted NSD/NSGW 的连续性实现依据。备份不是把数据库文件复制走;恢复必须同时维护身份、签名、revision、删除、审计和数据面安全语义。
| 数据/服务 | Hosted 默认 RPO | Hosted 默认 RTO | 说明 |
|---|---|---|---|
| Tenant/Identity/Policy/Address state | ≤5 分钟 | ≤2 小时 | 首要控制数据 |
| Entitlement/Quota head | ≤5 分钟 | ≤2 小时 | 恢复后仍做防回滚校验 |
| Audit/Security event | ≤15 分钟 | ≤24 小时查询恢复 | 先保证不可丢失写入,再恢复查询 |
| Billing ledger/invoice | 由商业系统定义,目标 ≤5 分钟 | ≤4 小时 | 资金系统有独立对账 |
| Status/incident | ≤15 分钟 | ≤1 小时 | 独立故障域 |
| Relay session | 不备份 | 新容量可用后重连 | 短期 token/session 可重建 |
| Client local runtime | journal 级零猜测恢复 | 下次启动 | 私钥不进云备份 |
这些是工程目标,不自动构成合同 SLA。Enterprise 更高目标必须有独立部署、成本和演练证据。
NSD 可恢复集至少包含:数据库一致性快照/WAL、对象存储 manifest、审计流、签名公钥链和受保护签名服务配置引用、Identity Authority 配置引用、Entitlement head/最高接受 revision、deletion tombstone、Legal Hold、schema/migration revision 和 deployment metadata。
不进入备份:Device/Node/WireGuard 私钥、明文用户密码、支付卡完整信息、临时 session/token 明文、可从权威构建重算的未签名缓存。密码哈希属于 Identity Authority 权威数据,按其备份策略保护,不导出为普通 NSD JSON。
NSGW 不备份活跃 flow/session;备份 Gateway identity、能力配置引用、计量 outbox 和必要审计。Secret provider 中的私密材料按 KMS/HSM/secret manager 自己的恢复机制处理,配置备份只保存 reference。
备份 key 有轮换、双人恢复审批和 break-glass 审计。丢失 backup encryption key 等于备份不可用,必须作为恢复演练的一部分验证而不是只备份密文。
提供受支持命令,而不是让客户猜数据库文件:
backup create 建立数据库/对象/审计一致性水位,输出 manifest 和缺失项;在线备份若某组件无法达到同一 checkpoint 必须失败或明确标为 partial,不生成可恢复徽标。
客户负责把备份移出主机、加密、测试和保留。安装向导要求配置备份目标或明确确认暂不配置,并持续在管理端显示风险。自建文档提供 PostgreSQL/对象存储/外部 Identity Authority 的参考步骤;SQLite 仅用于明确支持的单机规模,备份使用数据库在线备份 API,不复制打开中的文件。
restore plan 只读检查:来源 deployment、备份完整性/签名、schema 兼容、目标版本、KMS/secret 可用、数据地域、预计停机、对象数量、Entitlement revision、删除 tombstone、Legal Hold、外部 IdP/邮件/支付/NSGW 依赖和 Node 重新连接影响。
恢复到原 deployment 和克隆到测试环境是不同模式。测试克隆必须使用新 deployment ID、隔离域名、禁用外发邮件/webhook/SCIM/支付、禁用生产签名和 Node 接入;不能让恢复演练向真实设备下发配置。
数据库时间倒退不能让旧授权重新生效。生产恢复完成时创建单调 restore_epoch,并执行:
节点继续使用未过期最后投影时,恢复后的 NSD 不能发送更低 revision;新 epoch 明确告诉节点这是权威恢复,节点验签并原子替换。无法证明签名链连续时进入管理员批准的 key recovery,不生成临时无签名配置。
| 密钥 | 恢复方式 | 丢失后影响 |
|---|---|---|
| Device/Node/WG private key | 不由服务端恢复;设备本地安全存储 | 单设备重新注册/轮换 |
| NSD projection signing online key | 从 HSM/secret manager 恢复或由 offline root 轮换 | 暂停新 projection,不放宽授权 |
| Offline root/recovery key | 多人分片/离线保管与年度演练 | 不能安全恢复信任链,灾难级 |
| Backup encryption key | 独立 KMS/恢复材料 | 对应备份不可读 |
| Identity credential | Identity Authority 恢复流程 | 新登录受阻;数据面默认按 lease 收敛 |
任何 key recovery 都记录 approver、reason、incident、old/new key IDs 和影响范围。恢复 key 不能顺带成为日常生产管理员凭据。
| 场景 | 处置 |
|---|---|
| 单实例/单 AZ 故障 | 自动 failover,验证写 leader 与签名服务 |
| Region 故障 | 启动灾备控制面,切换 DNS/traffic,创建 restore epoch |
| 数据误删 | PITR 到隔离环境,提取受影响对象或整体受控恢复 |
| schema 发布损坏 | 停写、使用 forward migration/fix;仅在安全且支持时回滚 |
| 签名 key 泄漏 | 安全事件、撤 key、切新 chain、收敛 lease、通知客户 |
| 勒索/管理员恶意删除 | 使用不可变异账号备份,轮换所有生产凭据 |
| Self-hosted 主机全损 | 新安装同/兼容版本,verify/plan/apply,恢复外部依赖并重连节点 |
不能把“数据库恢复成功”当服务恢复完成。必须通过登录、读写资源、编译/签名 projection、节点重连、Service DNS、Relay/Edge 配置、审计查询和删除 tombstone 验证。
Hosted control 的 HA 至少跨独立故障域,数据库单写权威、防脑裂,event delivery 可重放且幂等。NSGW region 容量失效通过候选撤除/drain,不能依赖数据库恢复活跃 session。
控制面故障时节点只使用未过期最后有效配置;Identity/计费故障不撤现有 Membership。恢复期间读取不到权威时显示 read_failed/stale,不返回空目录、无授权或免费 entitlement。
| 演练 | 最低频率 |
|---|---|
| 单表/单对象恢复 | 每月自动化 |
| 完整 Hosted restore 到隔离环境 | 每季度 |
| Region failover | 每半年 |
| Offline root / signing key recovery tabletop | 每半年,真实恢复每年 |
| Self-hosted 文档从零恢复 | 每个受支持版本、至少每季度 |
| deletion tombstone / Legal Hold after restore | 每季度 |
演练报告记录目标、备份 ID、RPO/RTO 实际值、数据差异、失败、owner 和截止日。未通过的恢复演练消耗可靠性 error budget 并阻止提高 SLA 宣称。
Hosted 管理端显示最近备份验证、服务地域、目标 RPO/RTO、最近演练摘要和当前事故链接,不暴露基础设施秘密。Self-hosted 显示最近成功备份/verify 时间、目标位置类别、版本兼容和风险状态。
恢复操作是破坏性高权限动作:step-up、双人批准、影响预览和操作流。过程中 UI 显示阶段和 request ID;失败保留原环境或明确隔离状态,不能自动反复覆盖。
| 错误 | 含义 |
|---|---|
backup_incomplete | 一致性 checkpoint 未覆盖全部必需对象 |
backup_integrity_failed | manifest/hash/signature 不成立 |
backup_key_unavailable | 无法读取加密备份 |
restore_schema_incompatible | 目标版本不能安全读取备份 |
restore_entitlement_rollback | 备份 entitlement 低于防回滚水位 |
restore_external_dependency_missing | IdP/KMS/object/secret 等未就绪 |
restore_verification_failed | 数据导入完成但闭环验收失败 |
restore_epoch_conflict | 节点/控制面未接受权威恢复 epoch |