
工具调用由网关统一裁决配置调整后记录生效范围和观察到的变化。没有这些信息下一次回滚或排障时很难分辨是流量变化还是配置副作用。智能工具可以提出操作请求但不能携带一张绕过网关的“内部通行证”。网关根据当前主体、工具名称和参数再做一次授权高风险写操作保留确认或工单入口。这样接入新的 Agent 时不需要把权限规则复制到每个提示词里。第三方工具也按同一标准检查来源、版本和可访问的网络范围。工具越方便越需要把默认权限收小。高可用系统中的智能工具权限边界模型可以决定调用哪个工具却不能替代后端的身份鉴别和授权。工具层要把用户身份、资源范围和操作类型一起带到最终执行点。工具调用为何不能绕过权限校验设想一个查询订单的工具只接收订单编号却由服务端使用高权限连接执行查询。此时即使模型没有被提示词误导工具本身也缺少“谁可以查询哪一条订单”的判断。参数校验只能过滤畸形输入资源授权必须由后端根据经过验证的用户身份处理。工具权限划分的基本原则为了在大流量高可用架构中安全地运行 Agent 工作流必须建立以下三道防线。让工具携带用户身份上下文Agent 自身不应该拥有任何高权限的数据库账号或 Master API Key。当 Agent 代表某个用户执行 Tool Call 时必须将当前 HTTP 请求中的 OAuth2/JWT 用户 Token 透传给工具网关。后端服务只根据这个 User Token 进行 RBAC 权限校验。按角色暴露可用工具不要在 Agent 配置里一股脑挂上数十个 API 工具。应该根据用户当前的鉴权角色动态渲染 Agent 能够感知的 Tool 列表普通用户角色仅展示query_my_order、apply_after_sales。运营人员角色允许展示batch_audit_order但需要强二次验证MFA。高风险写操作等待人工确认对于修改数据库状态、扣减库存、转账退款等高危 ToolAgent 只能生成“预执行草案”Draft。必须在前端弹窗由真实用户点击“确认”后再由前端直接向微服务发起真实调用严禁 Agent 自行闭环高危写操作。用网关承接工具调用我们在 Agent 与后端微服务之间加了一层轻量级的工具代理网关。下面是针对 Tool 参数实施严格 JSON Schema 校验与权限解耦的示例逻辑package security import ( context fmt regexp ) type ToolCallRequest struct { ToolName string json:tool_name Arguments map[string]interface{} json:arguments UserToken string json:user_token } type ToolSecurityGateway struct { allowedTools map[string]string // tool_name - 映射的后端 API 路径 sqlInjectReg *regexp.Regexp } func NewToolSecurityGateway() *ToolSecurityGateway { return ToolSecurityGateway{ allowedTools: map[string]string{ query_order_detail: /api/v1/orders/detail, }, sqlInjectReg: regexp.MustCompile((?i)(UNION|SELECT|INSERT|DELETE|DROP|OR\s11)), } } func (gw *ToolSecurityGateway) ValidateAndRoute(ctx context.Context, req *ToolCallRequest) error { // 1. 检查 Tool 是否在白名单中 _, exists : gw.allowedTools[req.ToolName] if !exists { return fmt.Errorf(非法工具调用拦截: %s, req.ToolName) } // 2. 参数安全抽检 (防 SQL 注入与命令注入) for k, v : range req.Arguments { strVal : fmt.Sprintf(%v, v) if gw.sqlInjectReg.MatchString(strVal) { return fmt.Errorf(检测到恶意注入参数, Key: %s, Val: %s, k, strVal) } } // 3. 确保用户上下文 Token 存在 if req.UserToken { return fmt.Errorf(缺失用户身份凭证 Token拒绝执行 Agent 提权操作) } return nil }第三方依赖的供应链检查很多开源 Agent 框架如某些 Python/Node 依赖库在解析工具返回值时会自动调用eval()或者动态加载远程 Code Interpreter。这类供应链漏洞在亿级流量系统中是严重的。生产环境落地的防范清单隔离在线代码解释器如业务需要生成代码绘制图表应在受限沙箱中执行并明确网络访问、文件访问和凭证注入的最小权限范围。三方 SDK 镜像私有化打理所有 Agent 依赖的第三方 NPM/PyPI/Go 模块必须经过内部安全团队扫描并锁定版本 Hash严禁直接依赖latest标签。敏感 Key 定期轮换与泄露监控使用 KMS密钥管理服务统一托管访问第三方大模型供应商的 API Key设置分钟级调用限速与消费金额熔断阀值。高可用系统引入智能工具后仍需保持清晰的防御边界并让每次调用都可审计、可撤销。