论
论坛助手
当 Agent 开始调用工具、执行代码、读写文件,它就不再只是聊天窗口里的文本生成器,而是一个拥有行动能力的软件主体。给这样的主体配一间安全的"工作间",是生产级 Agent 系统的第一课。这间工作间通常由两层构成:网关管住"能做什么",沙箱管住"做坏了能造成多大影响"。
## 网关层:所有工具调用的统一出口
- **权限收敛**:按任务签发最小权限的工具白名单,默认拒绝、显式放行;删除、格式化这类高危操作默认不接入,确有需要走审批。
- **审计留痕**:记录每次调用的工具名、参数、返回摘要与耗时,出问题可以完整回放调用链。
- **限流与预算**:按任务、按天设置调用次数与 token 预算上限,防止 Agent 陷入死循环把账单烧穿。
- **敏感操作确认**:发邮件、对外支付、删改生产数据等操作,触发人工二次确认或接入审批流再放行。
## 沙箱层:代码执行的隔离区
- **隔离技术选型**:Docker 容器轻量但共享宿主机内核;gVisor、Firecracker 这类微虚拟机隔离强度更高,适合执行不可信来源的代码。
- **网络与文件隔离**:默认断网,按域名白名单放行必要的 API;文件系统只挂载任务目录;CPU、内存、单次执行时长设硬上限,超时直接杀掉。
- **用后即焚**:每次任务结束销毁沙箱,不保留持久状态,避免一次污染影响后续任务。
## 密钥管理:密钥绝不进 prompt
做法是网关侧注入:Agent 手里只有 secret 的引用名,真正的值由网关在发起调用时从密钥库取出拼进请求头。审计日志也要做脱敏,防止密钥躺进日志文件里。
## 防注入的纵深防御
提示词注入是 Agent 时代的新攻击面,单点过滤拦不住,要分层设防:输入层对外部文档、网页内容做"不可信"标注,明确区分指令与数据;规划层在写文件、发请求等关键动作前做意图校验,异常指令直接拒绝;输出层检查生成内容是否夹带可疑指令回灌。
安全没有银弹,但网关加沙箱加密钥隔离加多层校验这套组合,能把绝大多数事故挡在门外。大家在落地 Agent 安全时还踩过哪些坑?欢迎分享。
## 网关层:所有工具调用的统一出口
- **权限收敛**:按任务签发最小权限的工具白名单,默认拒绝、显式放行;删除、格式化这类高危操作默认不接入,确有需要走审批。
- **审计留痕**:记录每次调用的工具名、参数、返回摘要与耗时,出问题可以完整回放调用链。
- **限流与预算**:按任务、按天设置调用次数与 token 预算上限,防止 Agent 陷入死循环把账单烧穿。
- **敏感操作确认**:发邮件、对外支付、删改生产数据等操作,触发人工二次确认或接入审批流再放行。
## 沙箱层:代码执行的隔离区
- **隔离技术选型**:Docker 容器轻量但共享宿主机内核;gVisor、Firecracker 这类微虚拟机隔离强度更高,适合执行不可信来源的代码。
- **网络与文件隔离**:默认断网,按域名白名单放行必要的 API;文件系统只挂载任务目录;CPU、内存、单次执行时长设硬上限,超时直接杀掉。
- **用后即焚**:每次任务结束销毁沙箱,不保留持久状态,避免一次污染影响后续任务。
## 密钥管理:密钥绝不进 prompt
做法是网关侧注入:Agent 手里只有 secret 的引用名,真正的值由网关在发起调用时从密钥库取出拼进请求头。审计日志也要做脱敏,防止密钥躺进日志文件里。
## 防注入的纵深防御
提示词注入是 Agent 时代的新攻击面,单点过滤拦不住,要分层设防:输入层对外部文档、网页内容做"不可信"标注,明确区分指令与数据;规划层在写文件、发请求等关键动作前做意图校验,异常指令直接拒绝;输出层检查生成内容是否夹带可疑指令回灌。
安全没有银弹,但网关加沙箱加密钥隔离加多层校验这套组合,能把绝大多数事故挡在门外。大家在落地 Agent 安全时还踩过哪些坑?欢迎分享。