安全输出层
理解 AACWorkflow 如何在所有智能体发起的变更上强制政策和安全检查。
安全输出层是安全强制点,所有智能体进行的更改 — 评论、补丁、issue 创建、状态更新 — 都被验证、检查威胁并审计。这是确保批准政策和威胁检测永远不被绕过的单一卡点。
为什么需要集中式强制层
没有中心闸门,每个变更路径都需自己的政策检查:
- 智能体创建 issue → 检查政策
- 智能体评论 → 检查政策
- 智能体打补丁 → 检查政策
- 等等
这很脆弱 — 容易在一个路径忘记检查。安全输出层确保所有变更经过一个可信的应用器。
安全输出层工作原理
当智能体执行操作时,它流经:
- 规范化 — 将操作规范化为标准形式
- 政策检查 — 评估工作区批准政策
- 威胁扫描 — 扫描安全问题(密钥泄漏、提示注入等)
- 应用或队列 — 立即执行(若允许)或队列以待批准
- 审计 — 在不可变审计日志中记录发生的事
如任一步骤标记问题,操作要么被拒绝,要么根据严重程度队列以待批准。
支持的操作类型
安全输出层处理这些智能体操作:
| 操作 | 示例 |
|---|---|
| 评论 | 智能体在 issue 上写评论 |
| 补丁 | 智能体创建代码补丁 |
| Pull request | 智能体打开 PR |
| 状态变更 | 智能体标记 issue 完成 |
| 标签变更 | 智能体添加/移除标签 |
| Issue 创建 | 智能体打开新 issue |
| 分配 | 智能体分配 issue 给某人 |
政策评估
当智能体尝试操作时,政策引擎:
- 收集所有启用的工作区政策
- 根据操作类型和文件路径匹配政策
- 决定结果:
- 允许 — 操作立即执行
- 需要批准 — 操作队列,等待手动批准
- 拒绝 — 操作直接被拒绝
例如,若你有政策:
Action type: patch
File glob: .github/workflows/**
Effect: require_approval任何接触 .github/workflows/ 的补丁都会队列以待批准。
威胁检测
在应用操作前,威胁检测器扫描:
- 密钥泄漏 — 智能体是否添加 API 密钥或凭证到代码?
- 提示注入 — 评论中有注入的指令尝试吗?
- 危险补丁 — 智能体是否修改敏感文件?
- Shell 命令风险 — 脚本中有危险命令吗?
- 网络风险 — 有到未知主机的出站连接吗?
如发现威胁:
- 信息级 — 记录但允许
- 警告级 — 允许但在审计中标记
- 阻止级 — 根据工作区政策被拒绝或队列
批准队列
当操作需要批准时:
- 操作被存储及其内容的密码哈希
- 批准请求出现在收件箱 → 批准
- 授权批准者(通常管理员)审查和决定
- 在批准时,存储的操作被应用(哈希验证防止篡改)
- 在拒绝时,智能体被通知,操作被丢弃
哈希确保队列的正确操作是被应用的 — 中间没有篡改。
审计日志
每个操作都记录在安全输出审计日志中:
- 发生什么 — 操作类型、结果(已应用/已队列/已拒绝)
- 为什么 — 来自政策或威胁检测的原因
- 何时 — 时间戳
- 谁 — 哪个智能体、哪项任务
- 证据 — 操作的哈希供追踪
在设置 → 审计日志中查看审计日志,按以下过滤:
- 日期范围
- 智能体
- 操作类型
- 结果(已应用、已队列、已拒绝)
用它来:
- 调查安全事件
- 审计合规性
- 理解智能体行为
- 检测模式(如反复拒绝)
区分人类和智能体
安全输出层对待智能体发起的操作与人类发起的操作不同:
- 智能体操作 → 针对政策、威胁检测、批准闸门进行评估
- 人类 UI 操作 → 不由政策控制(人类被信任),但仍被审计
这意味着:
- 你(人类)始终可以评论、更新 issue 等
- 智能体必须遵守你设置的批准政策
- 一切都为审计记录
编辑和隐私
所有审计条目自动编辑:
- 密钥和 API 密钥被掩蔽
- 主目录被匿名化
- 敏感文件内容不被记录
这确保审计日志可以安全共享而不会意外暴露凭证。
与政策和威胁检测集成
安全输出层是集成点:
- 批准政策 (
approval-policies.md) — 控制何时需要批准 - 威胁检测 (
threat-detection-checks.md) — 扫描安全问题
一起,它们形成全面的安全框架:
- 政策定义你要控制什么(如「changes to .env are blocked」)
- 威胁检测发现如何(如「this patch adds an API key」)
- 安全输出层强制它(确保两者都被检查)
最佳实践
- 结合政策和检测 — 仅政策不足(依赖手动配置);仅威胁检测可能产生假正例。两者结合。
- 定期审查审计日志 — 发现模式并调整政策
- 仔细批准 — 彻底审查队列的操作再批准
- 文档化你的政策 — 帮助团队成员理解为什么某些操作需批准
- 先在非生产测试 — 在测试工作区先启用严格政策,再部署
限制
- 政策仅应用于智能体 — 人类操作被审计但不受控制
- 威胁检测为启发式 — 基于模式匹配,不是百分百
- 批准为手动 — 无自动批准;人必须审查
- 编辑为尽力 — 自定义密钥模式可能不会全部捕获