WP12_SECURITY_AUDIT_EVIDENCE.md 6.0 KB

WP12 安全、审计与运行证据验证记录

1. 本次工程范围

WP12 在现有凭据、身份、治理和问答记录之上完成安全收口,不新建通用日志平台:

  1. 管理员专用“审计与运行证据”工作台;
  2. 登录认证、数据采集、实体合并与回滚、语义与质量发布、质量整改、知识问答六类安全投影;
  3. 数据源凭据密文状态、采集源明文秘密字段、独立封存密钥、错误边界和安全响应头检查;
  4. 规范化事件 SHA-256 根摘要、HMAC-SHA256 签名封存与重新计算复核;
  5. 全局异常响应不回显内部错误,日志使用有界脱敏分类和关联 ID;
  6. app/deployment/app/ 的 WP12 变更文件保持一致。

离线安装、数据库升级预检、备份、恢复和回滚演练仍属于 WP13。

2. 安全字段边界

审计 API 只返回时间、固定类别、操作代码、状态、操作者身份、对象类型/身份及少量枚举或 计数字段。明确不返回:

  • 数据源凭据、加密载荷、Nonce、连接串或源配置;
  • 登录 IP、User-Agent 或认证详细错误;
  • 实体审核原因、合并/回滚快照;
  • 本体图文档、代码审批原因或质量规则正文;
  • 质量整改备注、材料、问题消息或证据正文;
  • 知识问题原文、回答正文或检索内容。

六类投影查询均使用显式字段白名单;前端表格不提供上述字段列。

3. 封存与复核规则

  • 先将安全事件按 UTC 时间和事件身份稳定排序;
  • 每条事件使用 canonical JSON 计算 SHA-256;
  • 有序事件摘要集合再次计算根摘要;
  • 时间窗、类别、事件数、根摘要、密钥版本和封存人使用 HMAC-SHA256 签名;
  • 单次最多 50,000 条,超过时失败关闭;
  • 复核状态为 intacttamperedinvalid_signature
  • 封存结束时间不得晚于服务器当前时间,前端按本地日历并将当天窗口收敛到当前时刻;
  • 封存表只有新增和读取接口,不提供更新或删除接口。
  • 迁移降级不会静默保留表后回写旧版本号,而是失败关闭;如需降级,必须先走批准的归档迁移。

签名封存用于检测篡改,不等于阻止数据库管理员修改。企业正式启用前必须配置独立 AUDIT_EVIDENCE_SECRET(至少 32 字节)和 AUDIT_EVIDENCE_KEY_VERSION。本地回退密钥 只用于工程验证,安全检查会显示警告;生产环境缺少独立密钥时封存与复核接口失败关闭。 采集源明文秘密字段检查递归扫描嵌套 JSON 配置键。

4. 定向验证

本工作包只执行 WP12 及直接受影响范围的测试,不做全量回测。验证至少覆盖:

  • 规范化、分页、过滤、秘密字段递归脱敏和 50,000 条上限;
  • 根摘要稳定性、签名元数据被修改、事件变更/缺失检测;
  • 六类权威表安全查询和追加式封存表;
  • 管理员读取/封存权限,viewer/editor 拒绝;
  • ISO 时间窗、服务端封存人、安全 400/404/503;
  • 异常中数据库 URL、密码、API Key、Authorization/Bearer 不进入响应或日志;
  • 前端六类标签、“暂无记录”和三种复核状态;
  • 真实 PostgreSQL 六类事件、封存完整、事务内篡改失败、回滚后恢复完整;
  • OpenAPI、数据模型、台账、迁移和发布副本一致性;
  • 管理页实际请求、封存、复核和浏览器控制台。

5. 企业验收门禁

工程验证通过不能替代企业安全验收。WP12 只有在以下条件满足后才能标记企业验收:

  1. 企业安全负责人确认六类审计字段、抽样记录和访问人员;
  2. 生产环境配置独立封存密钥,明确密钥保管、轮换、遗失和旧版本复核流程;
  3. 明确五年保留目标、归档位置、清理审批和合规例外;
  4. 使用真实登录、采集、合并/回滚、发布、整改和问答各抽样至少一条;
  5. WP13 完成备份、恢复和升级回滚演练后,证明封存记录可随系统恢复;
  6. 如需要监管级证明,另行建设外部可信时间戳、WORM/对象锁、SIEM 和法务保全。

6. 本地工程验证结果(2026-07-30)

本轮按 WP12 变更范围完成定向验证,没有执行全量回归:

  • WP12 后端、权限、迁移、架构、凭据、脱敏、认证和前端契约受影响测试共 52 项通过;
  • 前端模型测试 5 项通过;
  • WP12 新增 Python 文件及本次触达运行代码 Ruff 检查通过;迁移测试文件中一处未改动的 既有 B905 告警仍保留;新增前端文件 ESLint 检查通过;
  • 前端生产构建成功;构建仍报告项目既有的 Browserslist 数据过期、旧页面 console、样式顺序和包体积告警,本次新增页面没有检查错误;
  • Docker Compose 配置校验通过,本地 backend/frontend 重建后均为 healthy;
  • Alembic 已在本地测试库升级到 360,真实 PostgreSQL 集成测试验证六类事件、 封存完整、事务内修改可检测、回滚后恢复完整;
  • OpenAPI 已重新生成,共 219 个操作,并包含 WP12 六个接口;
  • app/deployment/app/ 的 WP12 后端文件及迁移文件逐字节一致。

浏览器以管理员身份访问本地“审计与运行证据”页面,确认:

  1. 六类覆盖卡片均可见;当前 30 日窗口内登录认证 34 条、数据采集 1 条、 实体合并与回滚 2 条、语义与质量发布 2 条、质量整改 5 条、知识问答 0 条;
  2. 0 条类别明确显示“暂无记录”,没有误报为能力缺失;
  3. 安全检查显示 1 个数据源凭据已密文保存、0 个采集源明文秘密字段;
  4. 修正本地日期与未来时间窗边界后,创建了包含 44 条规范化事件的闭合时间窗本地封存, 密钥版本为 local-v1
  5. 点击“重新校验”后返回“校验完整”;
  6. 页面只显示安全白名单字段,浏览器控制台没有错误。

上述封存使用本地工程密钥,不代表生产密钥已交付。企业验收仍以第 5 节门禁为准。