外观
权限治理与安全
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 需要执行高信任级别的操作时:
- 自动检测:Agent 系统自动识别操作的信任级别
- 暂停执行:高于阈值的操作自动暂停
- 用户通知:向用户展示待审批的操作详情
- 用户决策:用户选择批准、拒绝或修改后批准
- 继续执行:获得批准后 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: 用户审批删除操作 → DENIED4.3 回滚机制
当操作出现问题时,能够快速恢复到安全状态:
- Git 版本控制:每次重要修改前自动创建检查点(commit/stash)
- 文件备份:修改文件前保存副本
- 事务性操作:多步操作要么全部成功,要么全部回滚
- 快照恢复:对于容器化环境,可以快速恢复到快照状态
5. 权限安全模型
参见:权限安全模型
该图展示了:
- 四层权限区域及其典型操作
- 审批流程的决策路径
- 信任边界的划分