安全与护栏

一句话定义:Agent 能"动手",安全风险远大于单轮 LLM——需在工具、循环、数据三层设护栏。

1. Agent 特有风险

  • 工具误用:Agent 可能调用危险工具(删数据、发邮件、转账)。
  • Prompt Injection:恶意指令经工具返回/用户输入劫持 Agent。
  • 数据泄露:Agent 读取敏感文件并外传。
  • 失控循环:烧钱死循环或执行不可逆操作。
  • "看似完成":绕过验收、改测试求通过。

2. 三层护栏

工具层

  • 权限白名单:只暴露必要工具。
  • 危险操作审批:删除/转账/发送类操作人工确认。
  • 参数校验:执行前校验参数合法性与边界。
  • 沙箱:代码执行在隔离环境,防破坏宿主。
  • 限流:防 Agent 高频调用耗资源。

循环层

  • 终止条件:最大步数/预算/超时硬上限。
  • 目标保持:定期校验是否偏离原始目标。
  • 反思防误导:反思本身可能错,加多样性约束。
  • 人在环上:关键节点人工审批。

数据层

  • 敏感信息过滤:防密钥/PII 进入上下文或外传。
  • 工具返回隔离:工具输出可能含注入指令,做过滤。
  • 记忆隐私:长期记忆需脱敏/过期/删除策略。
  • 审计日志:记录所有工具调用与数据访问。

3. Prompt Injection 防御

  • 系统提示与用户输入/工具返回分区,明确边界。
  • 对外部内容做"不可信"标记,指令只信系统提示。
  • 输入/输出过滤敏感模式。
  • 最小权限:Agent 不持有超出任务所需的权限。

4. 设计原则

  • 最小权限:只给完成任务所需的最小工具与数据访问。
  • 默认拒绝:危险操作默认禁止,需显式授权。
  • 可中断:人随时能叫停 Agent。
  • 可审计:所有行动可追溯。
  • 失败安全:异常时降级而非继续冒险。

5. 学习要点

  • Agent 安全风险随"动手能力"放大,必须工程化护栏。
  • 三层护栏(工具/循环/数据)缺一不可。
  • Prompt Injection 是 Agent 时代核心攻击面。

6. 参考资料

  • OWASP LLM Top 10
  • NeMo Guardrails 文档
  • "Not with a Bug, but with a Sticker"(AI 安全)