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