首页 > agent > 当前页面

Agent安全架构设计:将模型视为不可信执行体的工程实践

2026-06-23 NEW个对象

📌 Agent安全架构设计:将模型视为不可信执行体的工程实践

核心观点:在具备工具调用能力的Agent系统中,必须默认模型为“不可信执行体(Untrusted Executor)”,所有系统操作必须经过权限网关、策略引擎与沙箱执行层,而不是由模型直接触达宿主机资源。

1️⃣ 工具白名单:收敛能力边界

Agent系统的第一道防线不是“限制模型思考”,而是限制其可操作空间。必须通过工具白名单机制,将能力显式收敛。

允许暴露的能力示例:

✔ query_database(sql_select)
✔ read_file_safe(path)
✔ call_internal_api(endpoint)
✔ search_document(index, query)

核心原则是:不提供 shell,不提供原生命令执行能力,彻底切断模型与系统命令层的直接关系。

❌ 禁止能力:bash / shell / powershell / root command

2️⃣ 参数级安全校验:阻断危险输入

即使工具是安全的,也必须对参数进行结构化安全过滤,避免模型通过参数“绕过逻辑约束”。

🎯 高危规则拦截

  • 禁止 SQL:DROP / DELETE / UPDATE without condition
  • 禁止系统路径:/etc /root /var/log
  • 禁止密钥文件:*.pem / id_rsa / secrets
  • 禁止内网访问:192.168.x.x / 10.x.x.x

🎯 过滤策略

Input → AST解析 → 规则匹配 → 风险评分 → 拒绝/放行

关键点:不是关键词过滤,而是结构解析 + 语义判断

3️⃣ 沙箱执行环境:隔离宿主机风险

所有工具执行必须进入受限运行环境,避免直接污染宿主机。

🚀 沙箱核心能力

  • 容器化隔离(Docker / gVisor / Firecracker)
  • 只读文件系统挂载
  • 限制 CPU / 内存 / IO
  • 禁止宿主网络访问或仅允许白名单域名
  • 执行超时强制终止
本质:让Agent“以为自己在操作系统”,但实际只能操作虚拟受限环境。

4️⃣ HITL人工审批机制:控制高危操作

对于高风险行为,必须引入Human-in-the-Loop(HITL)机制。

🎯 触发条件

  • 数据库写操作(INSERT/UPDATE/DELETE)
  • 文件删除或修改关键路径
  • 系统配置变更
  • 跨服务调用(高权限API)

🎯 审批流程

Agent申请操作
  ↓
策略引擎评估风险
  ↓
触发人工审批
  ↓
管理员确认/拒绝
  ↓
执行或终止

该机制的核心价值是:将不可逆操作从自动系统中剥离

5️⃣ 权限网关 + 策略引擎:统一决策中心

所有Agent工具调用必须经过统一的权限网关(Policy Gateway)

📌 决策链路

  • 身份认证(Who)
  • 权限判断(Can do what)
  • 上下文判断(Under what condition)
  • 风险评估(How dangerous)
Request → Auth → Policy Check → Risk Engine → Execution Decision

核心原则:执行权限永远不在模型侧,而在系统侧

6️⃣ 审计日志:构建不可抵赖链路

安全体系的最后一环是完整审计能力,用于追溯所有Agent行为。

🎯 必须记录内容

  • traceId / requestId
  • 工具调用内容
  • 输入参数与输出结果
  • 权限判断结果
  • 执行时间与耗时
⚠️ 关键要求:日志必须不可篡改(append-only)

7️⃣ 总体安全架构总结

推荐安全架构分层:

1️⃣ LLM层:仅负责生成“意图 + tool call”
2️⃣ Policy层:权限与规则校验
3️⃣ Risk层:风险评分与分级
4️⃣ Sandbox层:隔离执行环境
5️⃣ Audit层:全链路日志记录

这种分层的核心思想是:任何一层都不能单独决定系统安全性,必须形成“多重防线叠加”。

📌 总结

Agent系统一旦具备执行能力,就必须彻底改变设计假设:模型不可信,执行必须受控

❌ 错误认知:依赖Prompt让模型“自觉安全”
✅ 正确架构:通过系统级权限控制约束模型行为

最终目标不是“让模型更聪明”,而是让系统即使面对错误或恶意输出,也不会产生不可控后果

相关文章

NEW个对象 NEW个对象
JAVA是世界上最好的语言

推荐文章