给 Agent 上锁:工具权限、沙箱与最小信任设计

Agent 比聊天机器人危险一档

聊天机器人的输出是文字,错了顶多误导人。Agent(能自主规划步骤并调用工具完成任务的 AI 系统)的输出是动作:读写文件、执行命令、调用 API、花钱下单。能力升级带来的不是等比例的风险增长,而是质的跨越——一次提示注入或误操作的爆炸半径,从「一段错误回答」变成「被删的数据库、被转走的余额、被外发的客户资料」。给 Agent 上锁因此不是可选项,而是上线前的必修课。

最小信任三问

每接入一个工具,先过三问:

  1. 这个工具必须存在吗? 每个工具都是一条攻击面。能靠检索解决就不给执行能力,能靠模板生成就不给写权限。
  2. 必须这么强吗? 收窄参数与作用域:给只读变体而非读写通用版;限定可操作的目录、数据表、资源 ID;给金额与频次设上限。
  3. 必须自动执行吗? 高危操作(删除、支付、外发、生产变更)一律挂人工确认,Agent 只负责「拟稿」,人负责「签发」。

三问的顺序有意义:先砍存在性,再收强度,最后才谈流程,不要一上来就设计审批流。实践中还有一个好用的信号:某个工具的用途如果你一句话说不清,它大概率不该出现在工具列表里。

权限分级

把能力按风险分四级,逐级收紧:

级别 示例 确认方式
只读 查知识库、读工作区文件、搜索 自动执行
工作区写入 写代码文件、改草稿、提交到分支 自动执行,事后可回滚
系统变更 执行 shell 命令、改配置、调内部管理接口 逐次人工确认
网络与支付 外发请求、调用付费 API、下单转账 白名单加限额,外加人工确认

原则:新工具默认落在最低档,升级要有明确理由并记录在案;确认方式跟着风险走,而不是跟着开发进度走。

沙箱:假定它会犯错

权限设计管「允许做什么」,沙箱管「越界之后会发生什么」。三件事最关键:

  • 文件系统隔离:容器或独立工作目录挂载,Agent 可见的世界就是它能破坏的世界。
  • 进程隔离:工具调用在受限进程里执行,限制 CPU、内存与运行时长,避免一条失控命令拖垮宿主。
  • 网络出口白名单:默认断网、按需放行域名。这一条直接封死「目标劫持」类注入的外传通道。

实现取舍一句话:容器是工程性价比的起点;对强隔离需求可以上 microVM(以 Firecracker 为代表的轻量虚拟机,毫秒级启动、内核级隔离),代价是链路更复杂。数据越敏感,隔离边界越要往硬件层推。还有一种常被漏掉的边界是时间:给任务设截止时间与步数上限,失控的循环和失控的命令一样危险。

审计与回滚

锁也要给事后看。所有工具调用全量留痕:谁(会话与用户)、何时、什么参数、返回结果,构成可追责的操作日志。同时把「可回滚」做进操作设计:代码改动走 git(先建分支再动手)、文件变更前打快照、危险命令先跑 dry-run(只打印将执行的动作而不真正执行)。有了回滚能力,事故从「灾难」降级为「工单」。

困惑代理人

安全领域有个经典概念叫困惑代理人(Confused Deputy):一个持有合法权限的执行者,被欺骗后用自己的权限做了坏事。被注入的 Agent 就是典型——它不是叛徒,而是被骗的诚实员工。这个视角决定防御姿态:你审不了它的「动机」,只能限制被骗员工的行动能力——没给钥匙,骗了也偷不走。前面所有设计,最终都落到这一句上。

部署自查清单

  1. 每个工具都回答过最小信任三问,砍掉了非必需工具。
  2. 高危操作全部挂人工确认,不存在静默执行路径。
  3. 有权限分级记录,新增工具默认最低档。
  4. 网络出口默认拒绝,白名单定期复审。
  5. 文件与进程隔离实测过,越界访问被验证拒绝。
  6. 工具调用全量留痕,日志包含参数与结果。
  7. 关键操作可回滚,回滚流程演练过。
  8. 注入与滥用用例进了红队清单,换模型或改提示后回归。

小结

Agent 的安全性不取决于模型多聪明,而取决于你给它多大的舞台。最小信任三问收窄能力,四级权限划清边界,沙箱兜住越界,审计与回滚降低事故成本。记住困惑代理人:防御的目标不是骗不到,而是骗到之后也损失有限。

← 返回资讯列表

读者留言

COMMENTS 暂无
仅本站原创文章开放留言 · 请勿留下手机号、邮箱等个人信息

还没有留言,来说第一句?