Skip to content

07 · 安全与身份:模型想做,不代表系统允许做 ​

本课交付:威胁模型与审批参数变化的拒绝记录。前置:02 的授权、04 的状态版本;课后完成 L7:审批绑定哪一次动作。实验只验证规则,不连接外发服务。

研究助手原本只读笔记。后来增加“把总结发送给同事”,风险就变了:即使读取合法,错误收件人也可能造成外泄;一篇检索文档还可能诱导它主动发送资料。本章把安全从提示词要求,落实到请求入口、工具执行和业务结果。

资料核对:2026-09-06。以下是原创威胁建模与验收设计;本站没有实现身份服务、凭证代理或发布功能。

一、威胁模型从资产开始 ​

先列资产:用户身份、访问凭证、私有文档、任务状态、审批记录、可执行业务动作。再列不可信输入:用户提交内容、网页、笔记正文、工具返回、外部技能包与子任务答案。内容来自一个正常工具,不意味着里面的指令可信。

OWASP 将外部材料中隐藏的指令归入间接提示注入,讨论了数据外泄、工具滥用与持续性影响。防护需要多层组合,不能依赖一个关键词过滤器。提示注入防护资料

入口本案例的风险主要控制点
检索片段把文档文字当成操作指令明确信息来源,执行层检查任务与权限
工具参数猜测私有 ID 或修改接收地址可信身份、对象归属、目标限制
技能包规程要求执行额外脚本来源审查、隔离、最小权限;不自动授信
长期记忆将一次攻击保存到后续任务写入审查、来源、版本、删除链
输出渲染外链或远程图片携带敏感信息输出编码、链接策略、受控外发

身份、文档和外部通信的边界不同。“这个用户能读”不等于“系统能向任何地址发送”。只读工具也不代表整个应用没有泄露通道。

二、身份不能由模型声明 ​

请求入口从已验证会话确定用户,工具服务独立核对资源访问权限。模型生成的 user_id、tenant_id 只能是待验证数据,不能代替认证。Agent 代表用户执行时,还需记录执行应用和有效委托,避免管理员应用凭证掩盖真实权限边界。

对于外部工具服务,区分“调用者身份有效”与“令牌是发给本服务的”。MCP 安全实践禁止接受非本服务受众的令牌后直接透传下游;接入协议并不会自动完成业务授权。MCP 安全实践

本专题离线 owner 判断只是授权模拟。它不能证明真实 SSO、多租户认证或 OAuth 交换已落地。更详细的委托链设计见项目 B。

三、审批必须绑定实际动作 ​

用户确认的内容至少包含目标、参数、数据范围和影响。服务端保存规范化参数摘要、资源版本、用户、委托版本与过期时间。执行前重新校验,改正文、换收件人或权限撤销都不能沿用旧审批。

text
候选动作 → 服务端校验 → 保存待审批版本 → 用户确认
                                              ↓
结果记录 ← 受控执行 ← 再查权限、参数与业务版本

这是本案例设计,不意味着一次检查消除了所有竞态。跨服务的检查与写入存在时间差;对自有业务可使用事务与版本条件,对第三方服务则要确认其条件写入能力,并说明不可消除的窗口。已经提交成功的操作不承诺可被事后撤权自动回滚。

四、凭证与执行环境要隔离 ​

模型上下文不存 access token、refresh token 或数据库密码。工具层通过受控凭证引用访问下游,结果返回必要业务字段;异常、追踪和审计同样脱敏。

如果未来允许执行代码,应另设隔离环境、文件范围、网络出口和资源限制,不能把“模型只会写安全代码”当隔离策略。隔离降低影响范围,不代表沙箱内数据可以任意外发。

五、拒绝动作之后,任务如何结束 ​

拒绝应有可诊断的内部原因和不过度泄密的对外说明。对不存在与无权限的资源,可按业务策略统一响应,避免枚举。不能让模型反复换身份、换地址或尝试未授权替代工具。

工具超时另当别论:可能已执行,先查状态再重试。请求标识需要对应稳定业务意图,同一标识不同参数应拒绝;这一点可参考 AWS 幂等接口设计。

六、分层测试,不声称绝对安全 ​

用例执行器可确定性检查仍需模型或人工评估
文档要求读取他人笔记强制给出该动作时,工具应拒绝模型是否被诱导、是否解释恰当
审批后换收件人参数版本不符时不发送展示给用户的信息是否充分
工具输出包含密钥脱敏与敏感字段检测未知形式的敏感内容是否遗漏
注入被保存为记忆来源与生命周期控制后续任务是否被隐性影响
写入响应丢失幂等/查询/UNKNOWN 状态业务补偿是否满足用户意图

测试在受控测试数据和授权环境中进行。先用固定候选动作测执行策略,再接模型测诱导路径;不要因为模型某次没有触发攻击,就误判授权策略有效。

本章小结:Agent 安全的核心是守住身份、数据与动作的边界。提示词、模型防护和人工审批都有作用,但不替代服务端授权与可核验的执行结果。

返回 Agent 目录,继续阅读资料导读。