Agent 安全与审计:自主行为的边界#
Agent 与传统系统的本质区别:它会自己决定做什么。一个会自主调工具的 Agent,安全边界不能再靠"人肉审批"。这篇文章是 Agent 安全体系:从权限到审计的完整设计。
一、威胁模型#
核心原则:Agent 的信任等级 = 匿名程序(不可信、要隔离、要审计)。
二、权限最小化#
1. 工具白名单(不是黑名单)#
2. 分级授权#
1
2
3
4
5
6
7
8
|
# 危险操作:必须二次确认
DANGEROUS_TOOLS = {"delete_record", "bulk_update", "send_message"}
def tool_guard(tool_name, args, session):
if tool_name in DANGEROUS_TOOLS:
if not session.approved_once(tool_name, args):
return {"error": "REQUIRES_APPROVAL", "proposal": args}
return call_tool(tool_name, args)
|
3. 数据级限制#
三、行为审计(全量)#
审计的价值:
四、Prompt 注入防御#
关键认知:注入防不住"读懂",但要防住"执行"——即使 Agent 被带偏,权限层和确认机制也能拦住危险动作。
五、失控防护#
六、可回滚(Agent 的"撤销")#
理想:Agent 的任何操作都能"倒带"——这是 Agent 可信任的最后一环。
七、安全 Checklist#
八、踩坑记录#
- 工具返回"友好解释":工具返回带了"你应该…“的自然语言 → 注入风险 → 只返回纯数据
- 确认流被绕过:Agent 把危险操作拆成多个安全操作 → 按"操作意图"而非"单个工具"确认
- 审计只记工具不记推理:不知道 Agent 为什么调 → 审计必须记 llm_reasoning
- 预算被长时间任务击穿:合法长任务超预算 → 预算要区分"正常消耗"和"异常消耗”(按模式检测)
Agent 安全的核心认知:
- 信任等级 = 匿名程序:权限最小化是起点
- 三层防线:白名单(能不能调)+ 分级授权(怎么调)+ 数据限制(看什么)
- 审计是信任基石:动作 + 理由 + 结果,全量可回放
- 可回滚是最后兜底:任何操作都能倒带,Agent 才敢放手
Agent 的自主性是一把双刃剑:越自主越要边界。 安全设计的目标不是"限制 Agent",是"让 Agent 的自主不产生不可逆伤害"。
微信公众号「福清而不淡」
后端架构 · AI 工程 · 云原生的一线实践,扫码关注,不错过更新。
本文已同步发布到公众号,欢迎留言交流。