Skip to content

6.1 多层防御模型

本节你会学到

  • 7 层防御栈,以及缺哪一层会出什么事
  • Agent 特有的 5 类风险,以及由哪一层缓解
  • 最小可用安全配置 vs 生产级配置

Agent 嵌入产品的安全设计不是单一防线,而是多层叠加。每层各自独立,不要把安全希望押注在某一层上。

七层防御栈

        用户请求 / 上游系统


  ┌─────────────────────────────┐
  │ 1. 业务层访问控制             │  "这个用户能调 Agent 吗?"
  │    (SSO / RBAC / 租户隔离)   │
  └─────────────────────────────┘


  ┌─────────────────────────────┐
  │ 2. 凭据边界                   │  "Agent 用什么身份?"
  │    (API Key / STS / 服务账号) │
  └─────────────────────────────┘


  ┌─────────────────────────────┐
  │ 3. 系统提示注入防御           │  "LLM 的指令不能被用户输入覆写"
  │    (AGENTAO.md 硬约束 / 工具结果标记) │
  └─────────────────────────────┘


  ┌─────────────────────────────┐
  │ 4. 权限引擎                   │  "这个工具能不能调?" ——规则级
  │    (PermissionEngine 规则)    │
  └─────────────────────────────┘


  ┌─────────────────────────────┐
  │ 5. 工具确认                   │  "用户批准吗?" ——人机级
  │    (confirm_tool UI)          │
  └─────────────────────────────┘


  ┌─────────────────────────────┐
  │ 6. Shell 沙箱                 │  "命令实际能做什么?" ——系统级
  │    (macOS sandbox-exec)       │
  └─────────────────────────────┘


  ┌─────────────────────────────┐
  │ 7. 网络隔离                   │  "能访问什么 IP?" ——内核级
  │    (容器 / VPC / egress 规则)  │
  └─────────────────────────────┘


         实际执行


  ┌─────────────────────────────┐
  │ 8. 审计日志(横切)            │  "做了什么?出事了谁签字?"
  └─────────────────────────────┘

核心原则:任何一层出问题,其他层还能兜住。

威胁模型:Agent 特有的 5 类风险

风险触发路径主要防线
提示注入 (prompt injection)用户输入 / 网页内容 / 文件内容里埋指令让 LLM 做坏事层 3 + 层 4
凭据泄漏LLM 回复或日志里带上 API key / 数据库密码层 2 + 层 8(脱敏)
越权访问Agent 调工具跨租户/越级层 1 + 层 4 + 多租户隔离(6.4)
SSRF (内网请求)LLM 被诱导 web_fetch http://169.254.169.254/层 4(domain blocklist)+ 层 7
资源耗尽死循环工具、大文件、无限上下文6.7 资源治理

职责分工

谁负责配置频率
1. 业务访问控制你的应用改用户/角色时
2. 凭据DevOps生成/轮转时
3. 提示注入防御开发者(AGENTAO.md)设计期
4. 权限规则开发者 + 安全团队每次加新工具
5. 工具确认 UI前端开发者设计期
6. Shell 沙箱平台团队配置期
7. 网络隔离运维/网络部署期
8. 审计日志平台团队运行期(常监控)

最小 vs 理想

最小(原型 / 内部工具)

  1. 正确配 OPENAI_API_KEY(不要 commit 进 git)
  2. PermissionEngineWORKSPACE_WRITE 预设
  3. working_directory= 每会话独立
  4. 基础 confirm_tool 实现
  5. agentao.log 自带的日志

够不够?够演示、够内部使用,但还不能交付给客户。

理想(生产 SaaS)

  1. 每租户独立 STS/服务账号,作用域最小化
  2. 自定义 PermissionEngine 按租户订阅等级
  3. 每会话 working_directory + 容器隔离
  4. 工具确认 UI 接入公司 SSO,审批记录进合规系统
  5. macOS 上用 sandbox-exec;Linux 用 seccomp/namespace(见 6.2)
  6. 网络 egress 规则(VPC + allowlist)
  7. 日志接入 SIEM / 指标接入 APM
  8. Prompt 注入专项红队测试

本部分后续章节展开每一层的落地。

自测清单

部署前

  • [ ] 没有凭据 hard-code 到代码或 AGENTAO.md
  • [ ] PermissionEngine 规则覆盖了所有自定义工具和 MCP 服务器
  • [ ] confirm_tool 有超时(不是无限等)
  • [ ] working_directory 按会话隔离
  • [ ] agentao.log 的输出路径可写且持久化
  • [ ] 单元测试覆盖"规则命中"的关键场景
  • [ ] 关键告警指标:工具调用失败率、LLM 调用 5xx 率、confirm 超时率

TL;DR

  • 不要把安全押注在单一防线上。 7 层叠加 + 跨切面审计。
  • Agent 特有 5 类风险:Prompt 注入、密钥泄漏、越权访问、SSRF、资源耗尽。
  • 最小可用:API key 不进 Git + WORKSPACE_WRITE 预设 + 每会话 working_directory + 基础 confirm_tool + 默认日志。
  • 生产级:按租户 STS + 自定义 PermissionEngine + 容器隔离 + sandbox-exec / seccomp + VPC egress 规则 + SIEM 日志 + 红蓝演练。

6.2 Shell 沙箱与命令控制