Skip to content

权限治理与安全 ​

Agent 拥有强大的工具调用能力,但能力越大责任越大。权限治理与安全机制是 Agent 系统投入生产的前提。


1. 沙箱隔离(Sandboxing) ​

沙箱是 Agent 安全运行的第一道防线,将 Agent 的操作限制在可控范围内。

1.1 文件系统限制 ​

  • 工作目录约束:Agent 只能读写指定的工作目录(Workspace)
  • 路径白名单:明确列出 Agent 可以访问的目录路径
  • 敏感文件保护:系统配置文件、密钥文件等设为只读或不可访问
  • 临时文件隔离:Agent 创建的临时文件在独立的临时目录中
文件系统权限示例:
├── /workspace/project/    ← 可读可写(Agent 工作区)
├── /workspace/.env        ← 只读(环境变量)
├── /home/user/.ssh/       ← 禁止访问(密钥文件)
├── /etc/                  ← 禁止访问(系统配置)
└── /tmp/agent-sandbox/    ← 可读可写(隔离临时目录)

1.2 网络访问控制 ​

  • 域名白名单:只允许访问预定义的域名列表
  • 端口限制:限制 Agent 可以使用的网络端口范围
  • 出站流量监控:记录所有网络请求用于审计
  • 内网隔离:禁止 Agent 访问内部服务和数据库(除非显式授权)

1.3 进程隔离 ​

  • 容器化执行:Agent 的命令在 Docker 容器或轻量虚拟机中运行
  • 资源配额:限制 CPU、内存、磁盘使用量
  • 执行时间限制:单个命令的最大执行时间
  • 子进程管控:限制 Agent 可以创建的子进程数量和类型

2. 信任边界(Trust Boundaries) ​

2.1 信任级别定义 ​

Agent 系统中不同操作对应不同的信任级别:

信任级别描述典型操作
Level 0 - 完全信任纯读取、无副作用读取文件、搜索代码、查看目录
Level 1 - 基本信任有限写入、可回滚编辑代码文件、创建新文件
Level 2 - 受限信任可能影响外部状态执行 shell 命令、安装依赖
Level 3 - 需审批危险操作、不可逆删除文件、网络请求、Git push
Level 4 - 禁止绝不允许修改系统文件、访问密钥、sudo 操作

2.2 跨边界操作审批 ​

当 Agent 需要执行高信任级别的操作时:

  1. 自动检测:Agent 系统自动识别操作的信任级别
  2. 暂停执行:高于阈值的操作自动暂停
  3. 用户通知:向用户展示待审批的操作详情
  4. 用户决策:用户选择批准、拒绝或修改后批准
  5. 继续执行:获得批准后 Agent 继续执行

3. 审批流程(Approval Workflows) ​

3.1 危险操作审批 ​

以下操作通常需要用户审批:

  • 破坏性命令:rm、drop、truncate 等删除/清除操作
  • 外部通信:wget、curl、API 调用等网络操作
  • 权限变更:chmod、chown 等权限修改
  • 版本控制:git push、git reset --hard 等不可逆 Git 操作
  • 包管理:安装新依赖、升级系统包

3.2 用户确认机制 ​

不同场景下的确认策略:

  • 逐次确认:每次危险操作都暂停等待确认(最安全、最慢)
  • 批量确认:对同类操作一次性授权(如"允许本次会话中的所有文件写入")
  • 预授权:在会话开始时配置允许的操作范围
  • 自适应信任:随着成功操作的积累,逐步提升信任级别

3.3 权限升级 ​

Agent 在运行中可能需要更高权限:

Agent 请求权限升级流程:

Agent: "我需要执行 npm install 来安装依赖,这需要网络访问权限。"
  ↓
系统: [展示风险评估] 该操作需要 Level 2 权限(当前 Level 1)
  ↓
用户: [审批/拒绝]
  ↓
系统: [临时授权] 本次操作获准,权限在操作完成后自动回收

4. 安全最佳实践 ​

4.1 最小权限原则(Principle of Least Privilege) ​

  • Agent 默认只拥有完成当前任务所需的最低权限
  • 权限按需申请,用后即收
  • 子 Agent 的权限不超过父 Agent 的权限范围
  • 定期审查和收紧权限配置

4.2 操作审计日志(Audit Logging) ​

记录 Agent 的每一个操作,用于事后审计和问题追溯:

审计日志示例:
[2024-01-15 10:23:01] TOOL_CALL: read_file("/src/main.py") → SUCCESS
[2024-01-15 10:23:03] TOOL_CALL: search_replace("/src/main.py", ...) → SUCCESS
[2024-01-15 10:23:05] TOOL_CALL: run_in_terminal("python test.py") → SUCCESS
[2024-01-15 10:23:08] TOOL_CALL: run_in_terminal("rm -rf /tmp/*") → BLOCKED (需要审批)
[2024-01-15 10:23:10] APPROVAL_REQUEST: 用户审批删除操作 → DENIED

4.3 回滚机制 ​

当操作出现问题时,能够快速恢复到安全状态:

  • Git 版本控制:每次重要修改前自动创建检查点(commit/stash)
  • 文件备份:修改文件前保存副本
  • 事务性操作:多步操作要么全部成功,要么全部回滚
  • 快照恢复:对于容器化环境,可以快速恢复到快照状态

5. 权限安全模型 ​

参见:权限安全模型

该图展示了:

  • 四层权限区域及其典型操作
  • 审批流程的决策路径
  • 信任边界的划分

我的理解与思考 ​