把代码和密钥分开:沙箱与凭据隔离
定义
凭据隔离与受限执行先把 Agent 的攻击面收窄:长期密钥留在执行环境之外,由受控代理按需使用;沙箱只获得完成任务所需的文件、网络和进程权限。即使模型受恶意输入影响,可造成的后果也会被结构性边界限制。
先搭一个心智模型
Sandbox 是受限工位,凭据代理是带锁的钥匙柜。Agent 可以申请完成任务所需的动作,但不应直接拿到能复制和外传的长期密钥。
说明
若代码执行环境同时能读取 API key、OAuth Token 或云凭据,Prompt Injection 可能诱导 Agent 通过命令、日志或网络请求泄露它们。更稳妥的设计是让执行环境只能请求被授权的操作。
资源绑定与 Vault 代理都是可选实现:代理在边界外保存凭据,验证目标与权限后代为调用;Agent 只看到业务结果,不接触密钥值。
文件、网络、进程和工具权限应按任务最小化,高影响动作再叠加人工审批、审计和可恢复机制。具体隔离强度取决于威胁模型。
跟着一个例子走
Agent 需要调用支付测试接口
任务要运行生成的代码并访问受保护服务,同时仓库内容不能被完全信任。
- 代码在隔离环境执行
限制文件挂载、网络目的地、进程和资源,失败时可销毁重建。
- 凭据由外部代理使用
Agent 提交受约束请求,代理完成签名或短期令牌交换,不暴露长期密钥。
- 副作用经过策略门
即使 Sandbox 被绕过,服务端仍核验身份、范围和审批状态。
边界与误区
Agent 越聪明为什么安全问题越严重: 能力更强的 Agent 工具调用能力更强,攻击者说服它执行恶意操作的途径更多。旧架构下模型能看到的凭证恶意代码也能看到。
为什么结构性安全比提示词安全更可靠: 提示词安全依赖模型自觉,而模型可能被注入攻击完全控制。结构性安全通过设计让攻击在物理上不可能,即使模型被控制也拿不到凭证。
来源与核验
- [anthropic-containment] Anthropic:How we contain Claude across products
- [anthropic-sandboxing] Anthropic:Claude Code sandboxing
核验日期:2026-08-31