核心要点

  • 能讲清分层维度:按用户/角色、按渠道/会话、按 Agent、按工具与具体动作(读/写/危险操作)逐层收窄权限

  • 能说出最小权限原则与白/黑名单:默认拒绝,只显式开放必要工具与动作,敏感工具按需授予

  • 能设计危险操作的二次确认与审计:写入、删除、转账、外发等高危动作需人工确认并全程留痕可追溯

  • 能落地运行时鉴权拦截:工具调用前统一经过策略引擎校验,配置化存储「谁在哪能用哪个工具的哪些动作」

标准回答

同一个工具在不同场景的风险完全不同——比如「执行 SQL」在只读分析场景安全,在生产库写场景就极危险。所以权限不能挂在工具上一刀切,要分层授权 + 最小权限 + 运行时拦截 + 审计

分层维度

  1. 按用户/角色:普通用户、运营、管理员能用的工具集不同(RBAC)。
  2. 按渠道/会话:同一用户在公开群和内部后台的权限不同,公开渠道收紧。
  3. 按 Agent:不同 Agent 被授予不同工具集,客服 Agent 不该有数据库写权限。
  4. 按工具与具体动作:同一工具拆分读 / 写 / 危险操作三级,只读放开、写入受限、删除/转账等高危单独管控。

这四层逐级求交集,最终权限是各层的最小交集,天然贴合最小权限原则——默认拒绝,只显式开放必要项。

白/黑名单与配置化策略

配置化的策略表描述「哪个主体(用户/角色/Agent)+ 在哪个渠道/会话 + 能调用哪个工具的哪些动作」,以白名单为主、黑名单兜底敏感项。策略与代码解耦,支持热更新、灰度和回滚,便于审计和合规。

危险操作二次确认与审计

对写入、删除、对外发送、支付等高危动作,即便有权限也要走二次确认(human-in-the-loop 或显式确认令牌),并把每次工具调用的主体、参数、结果、时间全程审计留痕,做到可追溯、可回放、可问责。

运行时鉴权拦截

所有工具调用前统一经过一个策略引擎/拦截器校验,模型只是「请求」调用工具,是否放行由系统决定,绝不把鉴权交给提示词去自觉遵守。校验失败直接拦截并返回安全提示,防止提示注入绕过权限。

常见误区

⚠️ 常见踩坑

把权限写进 system prompt 让模型「自觉别乱用工具」——提示注入一来就被绕过,鉴权必须在运行时由系统强制拦截而非靠模型自律;另一个误区是权限只做到工具粒度,不区分读/写/危险动作,导致只读场景也能误删数据;还有人给 Agent 直接授予和管理员同等的全量工具权限,违反最小权限,一旦被诱导就造成越权操作,且没有审计无法追溯。

追问

追问 1权限校验应该放在哪一层,能交给模型自己判断吗?

不能。模型只负责「请求」调用某工具及参数,是否放行必须由系统在工具执行前的策略引擎/拦截器强制校验。把鉴权写进提示词会被提示注入绕过。正确分层是:模型产出调用意图 → 拦截器按配置策略鉴权 → 通过才真正执行,失败则拦截并返回安全提示。

追问 2同一个工具如何做到读安全、写受限、危险动作严管?

把工具的能力按动作拆分并分别授权:只读动作(查询、列举)默认放开;写动作(新增、修改)需要对应角色/场景授权;删除、转账、对外发送等危险动作即使有权限也要二次确认并审计。可以在工具定义里声明每个动作的风险级别,策略引擎据此施加不同强度的管控。

追问 3怎么设计审计日志才能既可追溯又不泄露敏感信息?

记录主体(用户/Agent/角色)、渠道会话、工具名与动作、入参摘要、结果状态、时间戳和决策依据(命中哪条策略)。对参数中的密钥、个人隐私做脱敏或哈希,仅保留可追溯所需的最小信息;日志独立存储、只追加不可改、设访问权限,并支持按消息/会话 ID 串联回放整条调用链。

🔗 相似问题

同一考点的不同问法,面试官可能换着问,一起刷更稳

没找到想看的面试题?把你想看的告诉我们 →

延伸学习

按主题分类的相关资源,便于系统复习