跳到主要内容

权限最小化

权限最小化是指 Agent、用户、工具、连接器、数据源和运行环境只获得完成当前任务所需的最小权限,并且权限应短期、可审计、可撤销、按租户和用途隔离。OWASP LLM Top 10 2025 中的 Excessive Agency 风险强调:当 LLM 应用拥有过宽能力、权限或自主性时,攻击和误操作的影响会被放大。

核对日期:2026-05-09。

1. 定义与边界

Agent 系统至少有五类权限:

权限层示例风险
用户权限用户能读哪些数据、执行哪些业务动作越权读取、跨租户访问
Agent 权限Agent 可调用哪些工具、可运行多长任务自主链过长、无限重试
工具权限工具可访问哪些 API、文件、网络、数据库大规模误操作、泄密
凭证权限OAuth scope、API key、service account凭证滥用、横向移动
环境权限文件系统、Shell、网络、浏览器、进程沙箱逃逸、主机入侵

权限最小化不是“把 Agent 做弱”,而是把风险动作拆成可授权、可审批、可回滚的最小单元。

2. 风险机制

过宽权限通常与提示注入、工具投毒、模型误判结合:

典型失败:

  • 一个 admin_tool 同时能读、写、删、导出。
  • Agent 使用长期管理员 token 调所有系统。
  • 用户只被应用层鉴权,数据层没有对象级授权。
  • 工具参数允许任意 SQL、任意 URL、任意文件路径。
  • 高风险动作没有审批、幂等、限额和速率控制。

3. 工程防护

3.1 权限分解

把万能工具拆成细粒度工具:

不推荐推荐
crm_admin(action, object, payload)read_customer_summary(customer_id)update_customer_note(customer_id, note)request_customer_export(customer_id)
run_sql(query)query_sales_metrics(date_range, region)
file_system(path, operation)read_project_file(relative_path)write_artifact(file_name, content)

3.2 权限策略

roles:
support_agent:
tools:
read_customer_summary:
scopes: ["crm:customer:read"]
update_customer_note:
scopes: ["crm:note:write"]
requires_approval: false
export_customer_data:
scopes: ["crm:customer:export"]
requires_approval: true
max_records: 100

3.3 短期凭证

  • 使用短期 token,不把长期密钥放入模型上下文。
  • 按工具和租户签发凭证,工具完成后失效。
  • 对外部 SaaS 使用最小 OAuth scope。
  • 高风险凭证需要 just-in-time 授权和审批。

3.4 参数级控制

参数控制
金额上限、币种、收款方 allowlist、审批。
邮件收件人内外部域名区分、外部收件审批、群发上限。
SQL 条件禁止无条件查询和 DDL/DML,优先模板化查询。
文件路径工作目录 allowlist,禁止绝对路径和上级目录逃逸。
URLegress allowlist,禁止内网探测和敏感元数据地址。

4. 生产流程

  1. 工具盘点:列出所有工具的读写能力、数据分类和副作用。
  2. 角色建模:定义用户角色、Agent 角色、服务账号和租户边界。
  3. 风险分级:把工具分成只读、低风险写、高风险写、管理操作。
  4. 策略落地:在工具网关和数据层实现授权,不依赖模型判断。
  5. 凭证治理:短期化、轮换、撤销、按 scope 签发。
  6. 定期复核:检查未使用权限、过宽 scope、长期凭证和异常调用。

5. 常见反模式

反模式问题
“先给全权限,后面再收敛”原型阶段的权限常被带入生产。
模型直接决定是否有权限权限判断应由确定性策略和业务系统执行。
一个工具处理所有业务动作无法独立授权、审计、审批和限流。
只做前端按钮权限Agent 可绕过 UI 直接调用工具或 API。
日志里只记成功动作被拒绝的越权尝试同样是安全信号。

6. 评测与演练

用例期望
普通用户请求读取其他租户数据数据层拒绝,审计记录越权目标。
Agent 尝试调用未授权工具工具网关拒绝。
工具参数金额超过阈值进入审批或拒绝。
API key 泄露后被复用token 已过期或 scope 受限。
权限变更后旧会话继续执行运行时重新校验权限,旧权限失效。

指标:

  • 高风险工具审批覆盖率。
  • 长期凭证数量。
  • 未使用权限比例。
  • 越权调用阻断率。
  • 权限变更生效延迟。

7. 安全资料

8. 二次精修:权限设计决策表

8.1 身份模型选择

模型适用场景风险建议
Agent 服务身份后台批处理、固定任务、无用户委托容易权限过大只给任务 scope,按环境隔离
用户委托身份需要代表用户访问 CRM、邮箱、文档需要处理用户权限变化每次工具调用重新校验用户 ACL
混合身份Agent 读取系统配置,同时代表用户操作业务数据身份边界复杂系统读和用户写分开 token
临时审批身份高风险动作审批后短时间授权审批和执行参数可能漂移绑定 approval_id、参数摘要和过期时间

8.2 最小权限策略示例

agent_identity:
name: renewal_assistant
default_mode: read_only
token_ttl_minutes: 15
scopes:
- crm:customer:read
- contract:summary:read
denied_scopes:
- crm:customer:export_all
- payment:transfer
tools:
send_email:
allowed_domains: ["company.com"]
external_domains_require_approval: true
update_contract:
max_fields: ["next_followup_at", "owner_id"]
requires_approval_when: "amount_changed == true"

8.3 权限变更传播

8.4 检测信号与告警

信号说明
Agent 调用未在任务声明中的工具可能是 prompt injection 或工具选择漂移
单次任务读取大量对象可能是批量外泄前兆
低风险任务触发写权限权限配置过宽
审批后执行参数变化可能是 TOCTOU 问题
旧会话在权限撤销后继续成功授权缓存未失效

8.5 验收清单

  • 每个工具都有独立 scope,不能共用超级 token。
  • token 有 TTL、audience、tenant、subject 和用途约束。
  • 高风险动作绑定审批记录,审批后不能替换目标对象、金额、收件人或命令。
  • 权限撤销后,长任务和队列任务会在下一步执行前重新校验。
  • 评测集覆盖越权读取、越权写入、跨租户、审批绕过和 token 复用。

核对日期:2026-05-09。