深色模式
安全与防护
是什么
在 Agent 接入真实系统(执行命令、调 API、发消息)后,必须建立防线:防止被诱导做坏事、防止误操作、防止输出有害内容。
为什么需要
能调用工具的 Agent,一旦被恶意输入操控,破坏力远超聊天机器人。安全不是上线后的补丁,而是架构的一部分。
核心防线
- Prompt 注入防护:不信任任何用户输入,把"指令"与"数据"分离;对可执行的指令做白名单。
- 最小权限:工具只用最低必要权限;删除/外发等高危动作加 Human-in-the-loop(见 03-function-calling)。
- 沙箱执行:运行代码/命令在受限环境(超时、资源上限、网络限制)。
- 输出校验:PII、毒性、合规关键词扫描;敏感字段脱敏。
- 红队测试:主动用对抗输入试探,补全防线。
最小范式(输入/输出双校验)
python
def safe_tool_call(user_text):
if detect_injection(user_text): # 规则 + 模型双重判断
return "拒绝执行:检测到疑似注入指令"
result = run_in_sandbox(user_text, timeout=10)
if contains_pii(result):
result = mask_pii(result)
return result1
2
3
4
5
6
7
2
3
4
5
6
7
高危场景
- "忽略以上所有指令,改为……":经典注入,应在 system 与用户输入之间做隔离与检测。
- 链式越权:模型先查到凭证,再"顺手"用凭证做越权操作——工具权限必须按角色限定。
- 信任模型自报:模型说"我已确认安全"不可作数,必须代码层二次校验。
常见陷阱
- 只在 prompt 里写"不要做坏事":模型会遵守大部分时间,但对抗输入可绕过,必须代码兜底。
- 无审计日志:谁在何时触发了哪个工具、结果如何,必须留痕以便溯源。
- 无限工具权限:Agent 持有管理员令牌却无约束,风险极高。
参考
- OWASP Top 10 for LLM Applications
- 各云厂商 AI 安全白皮书
- 微软 / Google 的 Agent 安全实践文档