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 安全威胁