🔑 Agent 权限控制模型

🎯 为什么 Agent 需要权限控制

与传统应用不同,Agent 的行为边界由 LLM 动态决定,这使得传统的基于角色的访问控制(RBAC)面临新挑战。Agent 可能在一次对话中访问多个工具、读写不同数据源,甚至生成并执行代码。没有严格的权限控制,一个被注入的 Agent 可能造成灾难性后果。

📐 最小权限原则在 Agent 中的应用

最小权限原则(Principle of Least Privilege, PoLP)是 Agent 安全设计的基石:Agent 只应被授予完成当前任务所必需的最小权限集合,且权限应随时间、上下文动态调整。

Agent 最小权限四要素

  1. 按需授予:不在系统初始化时赋予全部权限,而是在执行特定操作时动态请求
  2. 最短有效期:权限应有时间窗口限制,过期自动回收
  3. 最小范围:限定可操作的资源范围(如特定目录、特定表、特定 API)
  4. 纵深防御:权限检查应在多个层级实施,不依赖单一控制点

🔢 三级权限模型

🔴 L3 · 系统级权限

操作系统命令执行、网络访问、文件系统读写、进程管理

🟡 L2 · 数据级权限

数据库读写、API 调用、用户数据访问、外部服务集成

🟢 L1 · 工具级权限

Function Calling 可用工具集、工具参数范围、调用频率限制

工具级权限(L1)

控制 Agent 可以调用哪些工具、以什么参数调用、调用频率如何。

权限维度说明示例
工具白名单 明确列出 Agent 可用的工具列表 {search_docs, query_db, send_email}
参数约束 限制工具调用的参数范围 query_db 只能 SELECT,不能 DELETE/DROP
速率限制 防止 Agent 滥用工具(拒绝服务) 每小时最多 100 次 API 调用
上下文限制 根据对话上下文动态调整可用工具 客服 Agent 不能访问财务工具

数据级权限(L2)

控制 Agent 能够访问的数据范围操作类型(读/写/删除)。

控制维度实现方式说明
行级安全 (RLS) 数据库视图 + 行过滤 用户 Agent 只能看到自己的订单
列级掩码 敏感字段脱敏/加密 手机号、身份证号部分掩码
操作类型限制 只读连接 / 读写分离 分析 Agent 使用只读副本
数据量限制 Limit/Top 强制注入 单次查询最多返回 100 条

系统级权限(L3)

控制 Agent 对宿主系统的访问能力,这是最高风险层级。

  • 命令执行:限制可执行的命令白名单(如只允许 ls、cat,禁止 rm、sudo)
  • 网络访问:限制可访问的 IP 段、域名、端口
  • 文件系统:限制可读写的目录范围(chroot / bind mount)
  • 进程管理:禁止 fork/exec 或限制子进程数量

✅ 用户确认机制

对于高风险操作,应引入人工确认环节(Human-in-the-Loop)。用户在操作执行前审核并批准。

需要用户确认的典型操作

  • 💾 数据写操作:INSERT、UPDATE、DELETE 操作
  • 📧 对外通信:发送邮件、短信、推送通知
  • 💰 金融交易:转账、支付、退款
  • 🗑️ 删除操作:删除文件、删除用户、删除配置
  • ⚙️ 系统变更:修改配置、部署代码、重启服务
  • 🔐 权限变更:修改用户权限、创建 API Key

确认粒度设计

确认模式适用场景用户体验安全级别
逐次确认 最高风险操作(转账、删除) 每次操作都需确认 最高
批量确认 多步骤工作流 生成操作计划,一次性审核
阈值确认 有明确风险阈值的操作 超过阈值(金额/数量)才确认
会话授权 低风险持续操作 会话开始时一次性授权 中-低

🔄 审批工作流集成

在企业级 Agent 部署中,权限控制需要与现有的审批工作流系统集成:

🤖 Agent
发起操作
🔍 权限检查
引擎
📋 审批系统
(Jira/飞书/钉钉)
✅ 执行 / ❌ 拒绝
  • 自动化审批:低风险操作(如只读查询)自动通过
  • 规则引擎:基于风险评分和策略自动路由审批
  • 多级审批:高危操作需要多级审批(如主管 + 安全官)
  • 审批超时:超时未审批自动拒绝(Fail-Safe)

📊 权限模型对比

权限模型核心思想Agent适配度灵活性复杂度适用场景
静态白名单 预定义允许操作清单 简单固定任务
RBAC 基于角色的权限分配 多角色 Agent 系统
ABAC 基于属性动态决策 复杂企业场景
Capability-based Token/凭证传递权限 微服务/分布式 Agent
Just-in-Time (JIT) 按需临时授予+自动回收 极高 极高 零信任架构
Policy-as-Code 用代码定义权限策略 (OPA/Rego) 极高 云原生 Agent 部署
💡 推荐策略 对于大多数 Agent 应用,建议组合使用 JIT + ABAC:Agent 初始化时无任何权限(Zero Standing Privileges),执行操作前根据上下文属性(用户身份、任务类型、风险评分)动态申请临时权限,操作完成后立即回收。