审计与证据链
wesgine 审计导出与证据链:JSONL/CSV 导出、Hash Chain 完整性与合规支持。
审计导出 API
| 方法 | 路径 | 说明 |
|---|---|---|
| GET | /audit/export | 审计导出(?format=jsonl|csv&from=&to=) |
| GET | /audit/summary | 审计摘要 |
导出格式
| 格式 | 用途 |
|---|---|
jsonl | 程序化处理、日志归档 |
csv | 电子表格分析、人工审阅 |
时间范围
GET /audit/export?format=jsonl&from=2026-01-01&to=2026-12-31
证据链(Evidence Chain)
入口
GET /observe/evidence → JSONL 流
Hash Chain 机制
每个 Run 产生证据记录,包含:
- Run ID
- Actor
- 工具调用及参数
- 模型输出
- 时间戳
- 前一条记录的 Hash
完整性保证
逐 Run hash chain——每条记录引用前一条的 hash:
Record N: { ..., prev_hash: hash(Record N-1) }
Record N+1: { ..., prev_hash: hash(Record N) }
不可切片
切片后缺环无法校验——证据链的完整性依赖连续性。
Actor 边界(INV-OBS-09)
抬到 cell:admin
/observe/evidence 和 /audit/* 不做 actor 过滤。
理由:
- 证据链是逐 Run hash chain,切片后无法校验
- "只给我看我自己的审计记录" 不是审计
scope 路由优先级
声明必须排在 defaultCellRequiredScope 的 /observe 泛前缀之前:
// ✅ 正确
case "/observe/evidence": return "cell:admin"
case "/observe/": return "cell:read"
// ❌ 错误:Go switch 按序匹配,排后面等于不存在
case "/observe/": return "cell:read"
case "/observe/evidence": // 永远到不了
合规预设与审计
ComplianceClass 映射
| 预设 | 审计强度 |
|---|---|
standard | 基础审计 |
financial | 严格审计 + 证据链 |
pii-strict | PII 脱敏 + 审计 |
healthcare | 医疗合规 + 审计 |
Redactor
CellSpec.RedactorRules 在审计导出前脱敏敏感信息。
Compliance 类决定 RedactorRules,但不影响 DenyPaths(INV-GOV-COMPLIANCE-02)。
Hypervisor 级审计
Admin 审计
GET /admin/observe/crash-log → 崩溃日志
GET /admin/observe/snapshot → Hypervisor 快照
跨 Cell 聚合
GET /admin/observe/per-cell-stats?cell=dept-legal
GET /admin/observe/runs?cell=dept-legal
Admin 端点提供跨 Cell 只读聚合——不违反 AX-1(隔离公理)。
审计摘要
GET /audit/summary
返回审计统计概要,用于运维仪表盘。
安全考量
- 审计数据是 Cell 级资产
- 导出需要
cell:adminscope - 证据链不可伪造(hash chain)
- 脱敏在导出时执行,不影响存储
相关文档
- 可观测性 →
observability.md - 治理模型 →
governance-model.md - Token 管理 →
token-management.md