Tool Permission Check
Tool Permission Check 是在执行工具前检查当前用户/Agent 是否有权调用该工具的过程。它是安全治理的关键环节。
#concept
#evergreen
#ai
#security
[!info] related notes
- 所属 MOC: Tool Calling Engineering MOC
- 相关: Permission Boundary, Auth & RBAC
Tool Permission Check
一句话定义
Tool Permission Check 是在执行工具前检查当前用户/Agent 是否有权调用该工具的过程。不是所有 Agent 都能调用所有工具——权限控制是安全的基础。
核心原理
权限检查层次
1. 用户级权限: 用户是否有权使用这个 Agent
2. Agent 级权限: Agent 是否有权调用这个工具
3. 参数级权限: 参数是否在允许范围内
4. 数据级权限: 是否有权访问目标数据
检查协议(示意,不是独立实现)
认证当前调用方 → 解析可信 tenant / actor
从工具注册表解析工具,不存在则拒绝
按服务端策略检查工具、读写能力及当前授权
验证并规范化参数,不让参数改变身份或执行策略
解析目标资源,验证所属租户与对象级权限
若需要新增批准,绑定规范化操作与目标版本进入审批流程
在实际执行边界再次检查并消费授权;同一入口覆盖自动重试、恢复与直接调用
常见坑
- 不做权限检查: 所有工具都能被调用
- 权限太宽: Agent 有不需要的权限
- 权限检查绕过: 直接调用 handler、恢复或重试绕过入口
- 检查通过后资源变化:用事务、版本条件或下游权限检查防止检查与执行之间的竞争
- 只读标签被信任:工具元数据由服务端维护,并约束真实能力;允许 execute_code 等通用执行器可能间接绕过工具白名单