AACWorkflow Docs

安全输出层

理解 AACWorkflow 如何在所有智能体发起的变更上强制政策和安全检查。

安全输出层是安全强制点,所有智能体进行的更改 — 评论、补丁、issue 创建、状态更新 — 都被验证、检查威胁并审计。这是确保批准政策和威胁检测永远不被绕过的单一卡点。

为什么需要集中式强制层

没有中心闸门,每个变更路径都需自己的政策检查:

  • 智能体创建 issue → 检查政策
  • 智能体评论 → 检查政策
  • 智能体打补丁 → 检查政策
  • 等等

这很脆弱 — 容易在一个路径忘记检查。安全输出层确保所有变更经过一个可信的应用器

安全输出层工作原理

当智能体执行操作时,它流经:

  1. 规范化 — 将操作规范化为标准形式
  2. 政策检查 — 评估工作区批准政策
  3. 威胁扫描 — 扫描安全问题(密钥泄漏、提示注入等)
  4. 应用或队列 — 立即执行(若允许)或队列以待批准
  5. 审计 — 在不可变审计日志中记录发生的事

如任一步骤标记问题,操作要么被拒绝,要么根据严重程度队列以待批准。

支持的操作类型

安全输出层处理这些智能体操作:

操作示例
评论智能体在 issue 上写评论
补丁智能体创建代码补丁
Pull request智能体打开 PR
状态变更智能体标记 issue 完成
标签变更智能体添加/移除标签
Issue 创建智能体打开新 issue
分配智能体分配 issue 给某人

政策评估

当智能体尝试操作时,政策引擎:

  1. 收集所有启用的工作区政策
  2. 根据操作类型和文件路径匹配政策
  3. 决定结果
    • 允许 — 操作立即执行
    • 需要批准 — 操作队列,等待手动批准
    • 拒绝 — 操作直接被拒绝

例如,若你有政策:

Action type: patch
File glob: .github/workflows/**
Effect: require_approval

任何接触 .github/workflows/ 的补丁都会队列以待批准。

威胁检测

在应用操作前,威胁检测器扫描:

  • 密钥泄漏 — 智能体是否添加 API 密钥或凭证到代码?
  • 提示注入 — 评论中有注入的指令尝试吗?
  • 危险补丁 — 智能体是否修改敏感文件?
  • Shell 命令风险 — 脚本中有危险命令吗?
  • 网络风险 — 有到未知主机的出站连接吗?

如发现威胁:

  • 信息级 — 记录但允许
  • 警告级 — 允许但在审计中标记
  • 阻止级 — 根据工作区政策被拒绝或队列

批准队列

当操作需要批准时:

  1. 操作被存储及其内容的密码哈希
  2. 批准请求出现在收件箱 → 批准
  3. 授权批准者(通常管理员)审查和决定
  4. 批准时,存储的操作被应用(哈希验证防止篡改)
  5. 拒绝时,智能体被通知,操作被丢弃

哈希确保队列的正确操作是被应用的 — 中间没有篡改。

审计日志

每个操作都记录在安全输出审计日志中:

  • 发生什么 — 操作类型、结果(已应用/已队列/已拒绝)
  • 为什么 — 来自政策或威胁检测的原因
  • 何时 — 时间戳
  • — 哪个智能体、哪项任务
  • 证据 — 操作的哈希供追踪

设置 → 审计日志中查看审计日志,按以下过滤:

  • 日期范围
  • 智能体
  • 操作类型
  • 结果(已应用、已队列、已拒绝)

用它来:

  • 调查安全事件
  • 审计合规性
  • 理解智能体行为
  • 检测模式(如反复拒绝)

区分人类和智能体

安全输出层对待智能体发起的操作与人类发起的操作不同:

  • 智能体操作 → 针对政策、威胁检测、批准闸门进行评估
  • 人类 UI 操作 → 不由政策控制(人类被信任),但仍被审计

这意味着:

  • 你(人类)始终可以评论、更新 issue 等
  • 智能体必须遵守你设置的批准政策
  • 一切都为审计记录

编辑和隐私

所有审计条目自动编辑

  • 密钥和 API 密钥被掩蔽
  • 主目录被匿名化
  • 敏感文件内容不被记录

这确保审计日志可以安全共享而不会意外暴露凭证。

与政策和威胁检测集成

安全输出层是集成点

  • 批准政策 (approval-policies.md) — 控制何时需要批准
  • 威胁检测 (threat-detection-checks.md) — 扫描安全问题

一起,它们形成全面的安全框架:

  1. 政策定义你要控制什么(如「changes to .env are blocked」)
  2. 威胁检测发现如何(如「this patch adds an API key」)
  3. 安全输出层强制它(确保两者都被检查)

最佳实践

  • 结合政策和检测 — 仅政策不足(依赖手动配置);仅威胁检测可能产生假正例。两者结合。
  • 定期审查审计日志 — 发现模式并调整政策
  • 仔细批准 — 彻底审查队列的操作再批准
  • 文档化你的政策 — 帮助团队成员理解为什么某些操作需批准
  • 先在非生产测试 — 在测试工作区先启用严格政策,再部署

限制

  • 政策仅应用于智能体 — 人类操作被审计但不受控制
  • 威胁检测为启发式 — 基于模式匹配,不是百分百
  • 批准为手动 — 无自动批准;人必须审查
  • 编辑为尽力 — 自定义密钥模式可能不会全部捕获

后续步骤