用角色权限控制 Agent 工具调用边界
Agent 可以调用数据模型函数、服务函数和页面函数来完成任务。需要注意的是,Agent 编辑器里的工具启用/关闭只决定哪些函数会暴露给大模型,并不构成权限控制。真正的安全边界来自角色权限配置。
因此,Agent 相关配置需要分清两件事:
- 工具暴露:在 Agent 编辑器中按需启用数据模型函数、服务函数或页面函数,让大模型在系统提示词中看到必要工具。
- 角色权限:在角色配置中决定哪些用户可以使用 Agent、访问哪些数据模型函数、调用哪些服务函数。
即使某个函数没有暴露给大模型,如果用户直接发送明确的调用指令,仍可能触发调用尝试。运行时会按当前用户的角色权限检查调用范围,发现非权限范围内的调用时自动阻止,不允许 Agent 代表用户越权执行。
先用角色权限控制谁能使用 Agent
当 Agent 面向特定岗位或包含敏感业务能力时,应该先在角色配置中限定可使用人群。例如经营分析 Agent 只开放给管理层,报销审核 Agent 只开放给财务和审批相关角色,客户跟进 Agent 只开放给销售团队。
配置入口在应用角色的可视化编辑器中,切换到Agent 权限,勾选当前角色允许使用的 Agent。完整配置方式可参考按角色开放 Agent、数据模型和服务函数和控制 Agent 访问权限。
再用数据模型和服务函数权限约束 Agent 能做什么
Agent 运行时会以当前用户的角色权限执行。即使 Agent 工具中已经添加了某个数据模型或服务函数,也仍然需要当前用户所在角色拥有对应权限。
建议按业务风险分层配置:
- 查询类能力:开放必要的数据模型查询函数,并配置数据筛选,避免跨部门、跨客户或跨项目读取数据。
- 修改类能力:只开放确实需要的新增、修改函数,谨慎开放删除和批量修改函数。
- 服务函数能力:只向必要角色开放审批、付款、退款、导出、同步外部系统等高风险函数。
数据模型和服务函数的角色权限配置见按角色开放 Agent、数据模型和服务函数。
按需暴露工具函数,减少误调用
角色权限决定安全边界,Agent 工具配置决定大模型在当前 Agent 中能看到哪些候选工具。开发者应在 Agent 编辑器中只启用完成任务所需的工具函数,避免把无关函数放进系统提示词。
常见配置方式:
- 只暴露必要函数:关闭与当前 Agent 任务无关的查询、修改、删除、调试函数。
- 减少高风险函数暴露:删除、退款、审批通过、批量更新、外部系统同步等函数,只有确实需要由当前 Agent 主动调用时才暴露给大模型。
- 依靠角色权限拦截:高风险函数是否能真正执行,由角色中的数据模型权限和服务函数权限决定;未授权调用会被系统自动阻止。
关于 Agent 工具暴露的具体配置方式,请参考按需向大模型暴露工具函数。
上线前用真实角色验证 Agent 权限
上线前不要只用开发者账号测试。建议至少准备普通用户、业务主管、管理员三类账号,分别验证同一个 Agent 在不同权限下的表现:
- 无 Agent 权限的用户是否看不到或无法使用该 Agent。
- 有 Agent 权限但无数据权限的用户,是否无法查询敏感数据。
- 有查询权限但无修改权限的用户,是否无法执行修改、删除或审批类动作。
- 高风险数据模型函数和服务函数是否只在角色权限中开放给必要角色。
- 未暴露给大模型、但用户直接要求调用的函数,是否仍会按角色权限检查。
- 非授权调用是否被运行时自动阻止,并让 Agent 明确说明“当前无权限”。