Skip to content

审计日志

每一次凭据/能力使用,Sigil 都记一条日志。本篇讲它记什么、查什么、不记什么。

记录维度

每条审计记录包含:

字段示例说明
iduuid唯一标识
timestamp2026-05-29T10:32:11ZUTC ISO 时间戳
callerclaude-code调用方(来自 Bearer Token 名)
capabilityhttp_request能力名
credential_namegithub-personal用到的凭据(仅名称)
target_summaryapi.github.com/repos目标的脱敏摘要
resultsuccess / denied / error结果状态
latency_ms142端到端耗时
via_tempfalse是否经临时授权
error_codenull / unauthorized / ...失败时填

不记录的内容

故意不记录

  • 凭据明文(一次都不进审计)
  • 完整请求体 / 响应体(可能含未脱敏的客户数据)
  • Bearer Token 明文(只留 hash 用于比对)
  • 客户端发的 Prompt(在 Sigil 范围外)

适当摘要

  • HTTP 请求:只记 method + host + path 前段
  • SQL 查询:只记前 200 字符 + 是否含 WHERE
  • SSH 命令:只记命令名 + 参数数量

合规需要的是"可追溯到调用与决策",不是"可还原所有数据流"——两者不同。

查询界面

审计页 → 顶部过滤栏:

  • 时间范围:最近 1 小时 / 24 小时 / 7 天 / 30 天 / 自定义
  • 调用方:下拉勾选(claude-code / cursor / cline / ...)
  • 能力:下拉勾选
  • 凭据:下拉勾选
  • 结果:成功 / 失败 / 拒绝
  • 关键词:在 target_summary 里模糊匹配

下方列表按时间倒序,支持点击行展开看完整字段。

导出

支持导出为:

  • CSV:合规报告 / Excel 分析
  • JSONL:导给日志聚合系统(Loki / Elasticsearch)
  • Markdown 表格:贴在工单 / 周报里

导出可以按当前过滤条件,也可以全量。

保留策略

时间窗默认行为
最近 30 天全字段保留
30 - 90 天自动归档(压缩,仍可查询)
90 天以上提示是否清理;不自动删除

设置 → 审计 → 保留策略 中可改。如果你需要更严格的保留(金融、医疗合规),建议导出后再删本地。

典型用法

凭据轮换后回看

刚把 GitHub Token 重置了,想确认旧 Token 没在用:

  • 过滤"凭据 = github-personal" + "最近 1 小时"
  • 看是否有 error_code = unauthorized(说明客户端还在用旧 Token)

怀疑某次操作

业务方反馈"今天上午有人改了 prod 的某条数据":

  • 过滤"凭据 = prod-db" + "能力 = db_execute" + "时间 = 上午"
  • 看 caller 是哪个客户端 + 目标摘要

临时授权追溯

某次发了临时 Token 给同事 Alice:

  • 过滤"via_temp = true" + "时间 = TTL 期间"
  • 看 Alice 用过什么能力、命中哪些目标

与外部系统对接

Sigil 不内嵌 syslog / Loki 推送——避免引入额外依赖。如果你需要把审计实时送到日志系统:

  • 启用 设置 → 审计 → Webhook 通知
  • 每条新审计会 POST 到你配置的 URL(payload 是审计 JSON)
  • 推荐目标:钉钉机器人、企业微信机器人、自建 logserver

Webhook 失败会自动重试 3 次,仍失败的话进入"待重发"队列。

关于"完整审计"的诚实

Sigil 的审计不构成"零泄漏"承诺

  • 客户端拿到能力结果后做了什么,Sigil 看不到(它可能截图、转发、贴到对话)
  • 客户端在调用前是否做了完整的二次确认,Sigil 不强制(依赖客户端善意)
  • 操作系统层面的进程注入、内存读取,Sigil 防不住

审计的价值是事后可追溯——它让"出问题了能查到哪一步"成为可能,但事前防护仍依赖 凭据加密脱敏拦截Scope Policy 几道闸门共同发挥作用。

下一步

让 AI 帮你干活,但永远拿不到你的密钥