将模型工具提议与授权分离:每次调用都需要策略批准,高影响的变更需要绑定操作的批准,幂等性防止重复执行且不授予权限。
包状态: 参考上下文已准备好供人工审核。合同和测试场景已完成,但不保证采用的实现已通过它们。
决策
模型可以提出工具名称和参数;策略引擎决定是否执行调用。不能更改持久状态的读取工具可在 ACL 检查后执行。每个变更都需要会话授权。高影响、不可逆、财务、管理或外部可见的变更还需要一个未过期的批准凭证,该凭证绑定到确切的执行者、工具、目标和规范化参数。幂等键仅用于重放保护:它可以安全地重复已授权的操作,但绝不授予权限或替代批准。执行用户、租户和角色来自经过身份验证的请求上下文,绝不来自模型生成的字段。
范围
- 后端代理工具调度:提议、授权、确认、干运行、幂等性和审计。
- 具有副作用的工具,如工单、退款、部署或记录更新。
- 将工具 ACL 绑定到拥有代理会话的人类主体。
不包含内容
- 用于检索文档的提示注入内容过滤器。
- 前端已显示令牌的流取消。
合同
- 每个工具调用记录存储
proposed_by: model和基于会话身份的策略决策authorized_by。 - 标记为
mutation: true的工具仅在会话授权后执行。当策略将操作分类为高影响时,还需要绑定操作的approval_id。 - 当
require_dry_run为真时,变更工具必须执行干运行;干运行结果是人工确认的内容。 - 参数中指定的用户或租户与会话不同的,拒绝并返回
identity_spoof。 - 工具 ACL 在参数模式验证后基于会话主体对资源标识进行评估。
- 幂等键仅在与已授权的原始调用具有相同执行者、工具、目标和请求指纹时被接受。它重放存储的结果,绝不自行授权首次调用。
实现
- 将变更标志、确认策略和干运行支持保存在工具目录中,而非提示文本。
- 颁发短期有效的批准凭证,该凭证对干运行快照进行哈希,并绑定执行者、工具、目标、策略版本和规范化参数,防止参数替换重用批准。
失败处理
- 策略拒绝返回
tool_forbidden,不调用提供者。 - 过期的批准凭证失败关闭。经过不确定超时后,先协调原始操作,再用相同幂等键和未更改的请求指纹重试。
验证
- 尝试使用模型提供的用户 ID 进行变更,预期返回
identity_spoof。 - 确认干运行后更改参数,预期确认不匹配;重放相同键,断言只有一个副作用。
本包中看似可执行的示例是夹具和验收合同。从集合根目录运行
python tools/validate.py 检查包结构和元数据;然后在目标仓库中实现并执行场景。
采用假设
example.yaml中的名称和数值是采用配置文件,不是通用默认值。- 采用团队必须将执行者、数据类别、错误词汇和所有权映射到其系统。
参考
- OWASP AI Agent Security Cheat Sheet 将授权、人工批准和重放保护分离,用于高影响操作。