Files
ai-contract-platform/project-docs/V2-privileged-identity-security-review-2026-08-09.md
T
yuqei 13a3d46e93
Build and Test Quality Gate / Contract Web typecheck and build (pull_request) Successful in 3m37s
Build and Test Quality Gate / Python tests and Contract API migration (pull_request) Failing after 8m39s
Security Quality Gate / npm audit, Bandit, pip-audit, detect-secrets (pull_request) Failing after 5m44s
feat: harden privileged identity execution governance
2026-08-09 20:51:28 +08:00

5.0 KiB
Raw Blame History

AI 合同平台 V2 特权身份与支持访问安全评审

日期:2026-08-09 范围:固定锁复核、确定性身份计划、隔离 PostgreSQL 事务演练、support access validation-only 策略 发布结论:No-Go,真实身份执行器与 support access 不得启用

1. 已验证的安全属性

  • 运行态不存在 execute、rollback、merge、split、recover、grant、revoke、support-access、retry、requeue 或 ack 路由;execution-attempts 仍为 GET-only。
  • 固定锁和锁内二次 preflight 已在真实 PostgreSQL 隔离 schema 验证,revision 漂移、审批过期、审批人失权和锁超时均 fail closed。
  • 确定性计划只保存 target ref 指纹,正向/补偿步骤和双 hash 可检测篡改;support access 不生成身份 mutation plan。
  • 隔离事务演练覆盖身份更新后故障和 event/outbox 后故障,身份、event、outbox 同时回滚;随机 schema 清理后残留为 0。
  • support access 策略只允许固定 read/comment scope,逐次检查主体、工作空间、scope、状态、revision、时间、policy hash 和 revocation hash;所有结果固定 access_granted=false。

2. P0 发布阻断项

  1. 无运行时可信授权源:当前策略材料是纯内存输入,没有持久化 grant、撤销记录、单一真相版本或跨实例一致性协议。任何接入都可能读取陈旧授权。
  2. TOCTOU 未闭合:validation-only 检查与未来资源访问不在同一受控事务/策略执行点;检查后账号、工作空间、scope、revision 或撤销状态仍可能变化。
  3. 可信时间未定义:checked_at 由内部调用方传入,尚未绑定数据库时间或受保护的服务端时钟;不能作为真实自动到期依据。
  4. 强认证与会话绑定缺失:没有 step-up/MFA、设备与会话绑定、短时凭证、不可转移 audience、网络/设备约束或重认证窗口。
  5. 撤销传播缺失:紧急撤销只有纯函数语义,没有 durable revoke、缓存失效、跨节点传播 SLA、拒绝列表或 kill switch 演练。
  6. 逐请求审计缺失:没有对每次支持访问记录资源、scope、决策、策略版本、操作者、时间、结果和关联工单的不可变审计/outbox;也没有异常访问告警。
  7. 授权执行面缺失:没有专用 policy enforcement point,无法证明所有合同、审查、模板和审计读取路径均经过同一 deny-by-default 检查。
  8. 隐私与法律门禁未完成:支持人员可见字段、最小数据集、数据驻留、客户通知、保留期、导出/下载限制和具名法务批准尚未验收。

3. 后续实现准入标准

  • 加法迁移建立不可变 grant/revocation 状态、版本与审计模型;任何 UPDATE/DELETE、过期或撤销竞争均有数据库约束和并发测试。
  • enforcement point 使用服务端/数据库可信时间,在每个受保护请求上在线读取或验证当前 grant、scope、revision、撤销和会话绑定;默认拒绝,依赖不可用时不得降级放行。
  • 支持人员使用独立平台身份和强认证,不共享用户密码、cookie、refresh token 或现有会话;不得伪装成用户主体。
  • 短时凭证具备固定 audience、workspace、scope、grant ID、策略版本和不可转移绑定;自动到期和紧急撤销在所有节点达到明确 SLA。
  • 每次授权检查和资源访问生成最小披露、不可变、可关联的审计事件;告警、人工复核、导出管控、保留和删除策略通过运营演练。
  • 独立渗透/越权测试覆盖跨 workspace、scope 提升、时钟偏移、缓存陈旧、撤销竞态、重放、并发和依赖故障;全部 P0 阻断关闭后再进行发布评审。

4. 回归清单

  • 有效材料仍不得在 validation-only 模式返回 access_granted=true。
  • 到期边界使用 checked_at >= expires_at,时区缺失或时钟异常 fail closed。
  • 账号/工作空间停用、revision 漂移、主体或 scope 不匹配立即拒绝。
  • policy hash、grant ID、revocation code/hash、scope 顺序、TTL 或时间篡改均拒绝。
  • 相同撤销重放幂等,不同材料不能改写历史撤销。
  • API/OpenAPI 不出现 support access、grant、revoke、execute 或 rollback 写入口。
  • 真实 PostgreSQL 演练只使用随机 schema,异常和成功路径后均精确清理,凭据不得落盘。
  • Web 不出现执行、代入、重试、撤销或共享会话控件。

5. 证据摘要

  • Contract API 全量基线:250 passed, 1 skipped;真实 PostgreSQL stage 19 专项随后单独 1/1 通过。
  • 确定性计划:9/9;计划/投递/反滥用组合:54/54。
  • 隔离 PostgreSQL 原子性演练:1/1,残留 schema:0。
  • support access validation-only:15/15;与计划层组合:24/24。
  • Python compileall、git diff --check、三服务健康检查通过;运行态危险身份路由 0、plan 路由 0。

本报告批准继续开发安全基础设施,不批准启用真实身份执行、支持访问、transport、共享会话或人工绕过入口。