1d85329a6a
Build and Test Quality Gate / Contract Web typecheck and build (pull_request) Successful in 9m12s
Build and Test Quality Gate / Isolated Alibaba and Tencent KMS gateway (pull_request) Failing after 4m53s
Build and Test Quality Gate / Python tests and Contract API migration (pull_request) Failing after 24m55s
Security Quality Gate / npm audit, Bandit, pip-audit, detect-secrets (pull_request) Failing after 8m42s
6.3 KiB
6.3 KiB
P1-07.6 外部信任与人工接管运行手册
1. 上线前配置
- 至少准备两个相互独立的 KMS 网关地域;每个地域显式配置自己的不可变密钥 ID、版本和算法,不假定跨云密钥 ID 或公钥相同;
- 每个地域单独挂载服务凭据和 CA,不在 JSON、环境变量或日志中写入明文令牌;
- 至少准备一个外部不可变存储/见证服务,推荐两个不同故障域;
- 把见证者公钥只读挂载到 Contract API,核对算法和 SHA-256 指纹;
- 设置
RELIABLE_EVIDENCE_PROBE_TARGETS_JSON和RELIABLE_EVIDENCE_ANCHOR_TARGETS_JSON; - 在运营策略中设置最少见证数,生产建议为 2;
- 只有企业可信增强模式设置为
required时,staging/production 的/runtime-config才必须将reliable_evidence_external_trust标为ok;核心产品默认disabled,缺少双云材料只提示、不阻断发布。
2. 检查点发布
- 确认平台内透明链为“链完整”;
- 执行“立即外部锚定”;
- 核对每个目标的地域、外部引用、回执摘要、见证公钥指纹和状态;
- 只有
witness_quorum_met=true才可对外声明该链头已获独立见证; - 将公开检查点、信任包和外部对象版本/保留策略证据放入发布证据目录;
- 任一见证签名无效时暂停证据交付,不得把“投递成功”当作“见证有效”。
3. 多地域探针处置
| 现象 | 处置 |
|---|---|
| 单地域超时 | 保持失败样本,检查该地域网关、DNS、CA和厂商请求 ID;不得删除样本 |
| 所有地域失败 | 暂停新证据导出,建立严重人工接管工单并验证活动证书 |
| 公钥验签失败 | 核对不可变版本、摘要模式、算法和网关返回的 key version |
| 地域配置缺失 | staging/production 禁止发布;local/test 只能标记为隔离 UAT |
| 恢复 | 先手动运行多地域探针,再等待一个快速 SLO 窗口确认恢复 |
4. 审计凭证生命周期
签发
- 提议管理员填写审计组织、最小作用域、配额、有效期和授权编号;
- 另一名平台管理员核对审批依据后批准;
- 批准人通过已批准的密钥交付通道发送一次性 Bearer 值;
- 刷新页面确认完整凭证不再可见;
- 用凭证完成一次最小范围验签,并核对独立配额。
轮换
- 在维护窗口前提交轮换申请;
- 提醒审计方批准时旧凭证将立即失效;
- 独立管理员批准并交付新凭证;
- 验证旧凭证返回 401,新凭证正常;
- 核对客户端
credential_version增加。
撤销
- 项目结束、人员离职或疑似泄露时提交撤销申请;
- 紧急事件仍要求不同账号审批,不允许共享账号绕过;
- 批准后验证旧凭证返回 401;
- 撤销不可恢复,需要重新授权时新建签发申请。
5. SLO 人工接管
- 告警出现后确认已显示“已生成人工接管工单”;
- 工单应进入人工复核队列并按值班表自动路由;
- 自动路由不算首响,负责人必须执行确认/开始处理动作;
- 处置记录只写错误码、地域、指纹、外部请求 ID 和恢复证据,不粘贴合同正文或凭证;
- 超过平台工作日历 SLA 后验证外部升级已入队;
- SLO 恢复后确认告警和工单自动关闭,并核对
slo_recovered事件。
6. 故障演练
- 关闭一个地域 KMS 网关,确认仅该地域探针失败且 SLO 计入失败;
- 让见证服务返回错误签名,确认
witness_status=invalid且法定数不增加; - 模拟见证超时,确认保存脱敏错误并可在下一周期重试;
- 尝试提议人自审审计凭证,确认返回 409;
- 批准轮换后验证旧凭证立即失效;
- 制造 SLO 错误预算耗尽,确认自动接管、值班路由、外部升级和恢复关闭全链路。
7. 禁止事项
- 不得把外部投递 HTTP 200 等同于见证签名有效;
- 不得在工单、邮件、聊天、截图或日志中粘贴完整 Bearer 凭证;
- 不得通过降低 SLO、关闭探针或调低最少见证数掩盖故障;
- 不得删除失败探针、无效见证或已驳回审批;
- 不得在生产使用
primary本地探针代替真实多地域网关。
8. 隔离 UAT 一键执行
本轮隔离 UAT 使用以下文件:
- 编排覆盖:
yuqei-infra/compose/docker-compose.uat.evidence-trust.yml; - 配置模板:
yuqei-infra/compose/.env.p1-07.6-uat.example; - 执行器:
yuqei-infra/scripts/run-p1-07-6-isolated-uat.py; - 独立见证服务:
yuqei-contract-platform/services/evidence-witness-gateway。
先复制配置模板到不入库的 UAT 配置文件,替换全部 CHANGE_ME,并准备两个已经存在于隔离数据库、且都拥有 platform_admin 权限的不同用户 ID。所有令牌、云凭据、TLS 私钥、CA 和见证公钥只通过只读文件挂载。镜像必须使用 @sha256:<64 位摘要>,不接受 tag。
只做预检:
python .\scripts\run-p1-07-6-isolated-uat.py `
--env-file .\compose\.env.p1-07.6-uat `
--admin-a uat-platform-admin-a `
--admin-b uat-platform-admin-b `
--report ..\project-docs\evidence\p1-07-6-uat-preflight.json
执行真实云演练:
python .\scripts\run-p1-07-6-isolated-uat.py `
--env-file .\compose\.env.p1-07.6-uat `
--admin-a uat-platform-admin-a `
--admin-b uat-platform-admin-b `
--evidence-package C:\secure-uat\reliable-decision-evidence.json `
--execute `
--report ..\project-docs\evidence\p1-07-6-uat-execution.json
执行器依次验证:隔离项目/端口/卷、不可变镜像、密钥职责分离、两个存储锁目标、两个平台管理员、双地域 KMS 探针、双见证法定数、自审阻断、审计凭证 v1 签发、v2 轮换、旧凭证失效、撤销后失效、腾讯地域 KMS 中断、阿里地域继续成功、见证法定数失败、SLO 告警和人工工单、地域恢复、不可变对象幂等重试,以及由两名管理员共同完成工单接管和关闭。
故障注入只停止当前 UAT Compose 项目的 kms-gateway-tencent 服务;执行器在 finally 中恢复该服务。报告不保存一次性 Bearer 值、凭据内容、合同正文或证据包正文。若预检失败,禁止使用本地模拟结果替代真实云验收。