标准回答
同一个工具在不同场景的风险完全不同——比如「执行 SQL」在只读分析场景安全,在生产库写场景就极危险。所以权限不能挂在工具上一刀切,要分层授权 + 最小权限 + 运行时拦截 + 审计。
分层维度
- 按用户/角色:普通用户、运营、管理员能用的工具集不同(RBAC)。
- 按渠道/会话:同一用户在公开群和内部后台的权限不同,公开渠道收紧。
- 按 Agent:不同 Agent 被授予不同工具集,客服 Agent 不该有数据库写权限。
- 按工具与具体动作:同一工具拆分读 / 写 / 危险操作三级,只读放开、写入受限、删除/转账等高危单独管控。
这四层逐级求交集,最终权限是各层的最小交集,天然贴合最小权限原则——默认拒绝,只显式开放必要项。
白/黑名单与配置化策略
用配置化的策略表描述「哪个主体(用户/角色/Agent)+ 在哪个渠道/会话 + 能调用哪个工具的哪些动作」,以白名单为主、黑名单兜底敏感项。策略与代码解耦,支持热更新、灰度和回滚,便于审计和合规。
危险操作二次确认与审计
对写入、删除、对外发送、支付等高危动作,即便有权限也要走二次确认(human-in-the-loop 或显式确认令牌),并把每次工具调用的主体、参数、结果、时间全程审计留痕,做到可追溯、可回放、可问责。
运行时鉴权拦截
所有工具调用前统一经过一个策略引擎/拦截器校验,模型只是「请求」调用工具,是否放行由系统决定,绝不把鉴权交给提示词去自觉遵守。校验失败直接拦截并返回安全提示,防止提示注入绕过权限。
常见误区
⚠️ 常见踩坑
把权限写进 system prompt 让模型「自觉别乱用工具」——提示注入一来就被绕过,鉴权必须在运行时由系统强制拦截而非靠模型自律;另一个误区是权限只做到工具粒度,不区分读/写/危险动作,导致只读场景也能误删数据;还有人给 Agent 直接授予和管理员同等的全量工具权限,违反最小权限,一旦被诱导就造成越权操作,且没有审计无法追溯。
追问
追问 1:权限校验应该放在哪一层,能交给模型自己判断吗?
不能。模型只负责「请求」调用某工具及参数,是否放行必须由系统在工具执行前的策略引擎/拦截器强制校验。把鉴权写进提示词会被提示注入绕过。正确分层是:模型产出调用意图 → 拦截器按配置策略鉴权 → 通过才真正执行,失败则拦截并返回安全提示。
追问 2:同一个工具如何做到读安全、写受限、危险动作严管?
把工具的能力按动作拆分并分别授权:只读动作(查询、列举)默认放开;写动作(新增、修改)需要对应角色/场景授权;删除、转账、对外发送等危险动作即使有权限也要二次确认并审计。可以在工具定义里声明每个动作的风险级别,策略引擎据此施加不同强度的管控。
追问 3:怎么设计审计日志才能既可追溯又不泄露敏感信息?
记录主体(用户/Agent/角色)、渠道会话、工具名与动作、入参摘要、结果状态、时间戳和决策依据(命中哪条策略)。对参数中的密钥、个人隐私做脱敏或哈希,仅保留可追溯所需的最小信息;日志独立存储、只追加不可改、设访问权限,并支持按消息/会话 ID 串联回放整条调用链。
🔗 相似问题
同一考点的不同问法,面试官可能换着问,一起刷更稳
没找到想看的面试题?把你想看的告诉我们 →
延伸学习
按主题分类的相关资源,便于系统复习