Agent 的行为由上下文动态生成,存在 prompt injection 风险(如 README 中嵌入恶意指令)。安全部署遵循三个原则:安全边界、最小权限、纵深防御。

核心机制

内置安全特性:

  • 权限系统(工具/命令级别的允许/拒绝/提示)
  • Bash 命令 AST 解析(eval 等高危构造始终需要审批)
  • Web 搜索结果摘要化(降低注入风险)
  • 沙箱模式(限制文件系统和网络访问)

隔离技术对比:

技术隔离强度性能开销复杂度
沙箱运行时良好极低低
Docker 容器依配置低中
gVisor优秀(内核级)中/高中
虚拟机(Firecracker)优秀高中/高

凭证管理代理模式:Agent 只能调用代理 API,代理在 Agent 环境外注入真实凭证。Agent 永远看不到实际凭证。

关键细节

安全加固的 Docker 配置:

docker run \
  --cap-drop ALL \
  --security-opt no-new-privileges \
  --read-only \
  --tmpfs /tmp:rw,noexec,nosuid,size=100m \
  --network none \
  --memory 2g \
  --pids-limit 100 \
  --user 1000:1000 \
  -v /path/to/code:/workspace:ro \
  -v /var/run/proxy.sock:/var/run/proxy.sock:ro \
  agent-image

代理配置:

# 仅路由 Anthropic API 请求
export ANTHROPIC_BASE_URL="http://localhost:8080"
 
# 路由所有 HTTP 流量
export HTTP_PROXY="http://localhost:8080"
export HTTPS_PROXY="http://localhost:8080"

文件系统安全:只读挂载代码目录,排除 .env、~/.aws/credentials、~/.ssh、*.pem 等敏感文件。

gVisor 使用:

docker run --runtime=runsc agent-image

文件 I/O 密集型任务性能开销可达 10-200x,适合多租户或处理不可信内容的场景。

与其他概念的关联

  • hosting - 基础部署架构
  • permissions - 工具级别的权限控制
  • hooks - 在工具执行前拦截危险操作

实践要点

  • 开发者本机运行与多租户生产环境安全需求差异很大,按需选择隔离级别
  • --network none + Unix socket 代理是最强的网络隔离方案,即使 prompt injection 成功也无法外泄数据
  • 只读挂载代码目录时,注意排除可能包含凭证的文件(.env、.npmrc 等)
  • Node.js fetch() 默认不遵守 HTTP_PROXY,Node 24+ 需设置 NODE_USE_ENV_PROXY=1
  • 参考 OWASP Top 10 for LLM Applications 了解更多 LLM 安全威胁