Tool Permission Check
Tool Permission Check 是在执行工具前检查当前用户/Agent 是否有权调用该工具的过程。它是安全治理的关键环节。
#type / concept
#status / evergreen
#tech / ai
#tech / 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. 数据级权限: 是否有权访问目标数据
Python 实现
class ToolPermissionChecker:
def __init__(self, permission_boundary: PermissionBoundary):
self.boundary = permission_boundary
def check(self, tool_name: str, arguments: dict, context: ExecutionContext) -> tuple[bool, str]:
# 1. 工具白名单检查
if not self.boundary.can_use_tool(tool_name):
return False, f"Tool {tool_name} not allowed"
# 2. 只读检查
if self.boundary.read_only:
tool = registry.get(tool_name)
if not tool.read_only:
return False, "Read-only mode"
# 3. 数据范围检查
if self.boundary.data_scope:
if not self.check_data_scope(arguments, self.boundary.data_scope):
return False, "Data scope violation"
return True, ""
常见坑
- 不做权限检查: 所有工具都能被调用
- 权限太宽: Agent 有不需要的权限
- 权限检查绕过: 直接调用 handler 跳过检查