技术指南
AI 代理安全:实用控制清单

AI 代理安全是指围绕能够读取上下文、选择工具并执行步骤的模型构建的控制系统。安全的设计假定模型输出、检索到的内容和工具结果都可能存在错误或恶意行为。它限制访问权限,验证每个操作,使不确定性可见,并指定专人负责处理由此产生的后果性变更。
Ottermind 将这种边界优先的方法应用于互联工作:源上下文和交付物保持可审核状态,而后续操作仍需获得权限和人工批准。它是一种工作区选项,不能替代组织的安全审核。
研究与披露: 该清单参考了 NIST 人工智能风险管理框架、OWASP 法学硕士申请十大热门职位 和 Anthropic 代理安全指南,并于 2026 年 9 月 3 日进行了修订。
五大安全边界
| 边界 | 主要风险 | 所需控制 |
|---|---|---|
| 身份 | 用户或租户上下文错误 | 严格的身份验证和租户检查 |
| 检索 | 上下文泄露、过期或被篡改 | 权限感知检索和溯源 |
| 工具 | 过度或格式错误操作 | 窄模式、验证和超时 |
| 运行时 | 命令、文件或网络越权 | 沙箱、隔离和出口策略 |
| 操作 | 静默故障或未经审核的更改 | 跟踪、警报、审批和回滚 |
安全性分布于整个工作流中。最后提示代理“小心”并非安全控制措施。
功能设计前的威胁模型
写下代理可以观察的内容、可以更改的内容以及谁可能从错误中获益。例如,考虑好奇的用户、被入侵的连接器、检索文档中的恶意文本、返回意外数据的工具以及写入期间的服务中断。针对每种威胁,列出相应的预防控制措施、检测信号和恢复操作。这种轻量级的威胁模型通常会揭示,风险最大的功能并非模型本身,而是过于宽泛的连接器。
身份和租户隔离
在运行开始前验证用户身份,并针对该身份授权每次检索和工具调用。不要假设模型可见的项目 ID 是可信的。检查拥有数据的服务中的租户、项目、角色和记录级权限。对于多用户工作区,显式测试跨租户请求,并验证日志中是否泄露了禁止的文件名、代码片段或工具参数。
检索完整性
检索系统可能会泄露数据、返回过期记录或暴露嵌入在文档中的指令。为每个数据块存储来源信息:来源标识符、所有者、生效日期和权限决策。优先使用当前权威来源的记录,并公开冲突。将 HTML、PDF、电子邮件和问题评论视为数据,而不是指令。模型绝不应该因为检索到的段落指示而授予自身访问权限。
工具和运行时隔离
使用能够明确表达业务意图的专用工具,而不是通用 shell 或不受限制的 HTTP 客户端。验证参数、强制执行配额、设置超时时间并确保写入操作幂等。在具有一次性文件系统和受限出口的沙箱环境中运行代码或浏览器操作。将开发凭据与生产凭据分开,并在运行结束后轮换短期令牌。
人工审批设计
审批流程应显示拟议操作、目标、来源证据、副作用和替代方案。“批准”不应隐藏一批不相关的写入操作。对于外部沟通、删除、付款、访问权限变更和策略更新,应要求进行更严格的审核。应存储审批人、时间戳、决定和任何编辑记录,以防止重试操作在静默中绕过检查点。
红队测试用例
构建一个小型回归测试集,其中包括在文档中注入提示、无访问权限的用户、返回格式错误的 JSON 的工具、过期的凭据、已更改的模式、重复重试以及发送或删除请求。预期结果并非总是任务完成;安全拒绝、升级处理和有用的错误信息都是有效的结果。每当提示、工具、连接器或模型版本发生更改时,都应运行此测试集。
安全操作检查清单
- 维护模型、工具、连接器和数据存储的清单。
- 定期审核连接器范围和特权角色。
- 对异常工具使用量、跨项目检索和被阻止的操作发出警报。
- 保留足够长的跟踪记录以调查事件,同时避免存储不必要的密钥。
- 记录如何撤销访问权限、停止运行以及恢复源记录。
- 为用户提供清晰的途径来报告不安全建议或泄露的上下文。
将控制措施映射到Agent 阶段
遵循Agent 流程进行安全审核会更加便捷。在接收阶段,验证身份、用途和允许的数据。在检索阶段,强制执行权限并附加来源信息。在推理阶段,约束输出模式并标记不确定性。在调用工具之前,验证参数和副作用。调用之后,验证结果并记录转换过程。在完成之前,要求相应的审核人参与并保存最终状态。这种分阶段映射可以防止团队将安全视为围绕不受限制的代理的单一入口。
供应链和连接器风险
Agent 的实际能力包括其 SDK、插件、MCP 服务器、浏览器扩展、提示模板和连接器范围。清点这些依赖项,并在更新发布到生产环境之前进行审核。尽可能锁定版本,对软件包进行签名或验证,并将测试凭据与客户数据分开。即使模型本身配置正确,能够读取整个驱动器的连接器也可能比模型提供商带来更大的风险。
一份有用的安全审核报告包含哪些内容?
记录预期的工作流程、数据分类、身份、工具、模型和 SDK 版本、威胁场景、控制措施、测试用例、未解决的风险以及责任人。提供一个被阻止操作的示例和一个安全升级的示例。当引入新的连接器、工具、模型或自主级别时,应重新进行审核;旧的批准不应在不知情的情况下涵盖实质上不同的操作范围。
实践中的最小权限原则
仅向 Agent 提供当前任务所需的资源和工具。分离读写凭据。按项目和身份限定文件范围,限制网络目标,并为临时访问权限设置有效期。使用不应能够查看资源的用户测试权限边界。
工具调用契约
{
"tool": "create_draft_task",
"arguments": {"title": "...", "owner": "...", "due_date": "..."},
"requires_approval": true,
"idempotency_key": "project-123:brief-v2"
}验证应用程序代码中的类型、允许值、身份和副作用。要求对发送、删除、购买、更改访问权限或发布操作进行确认。使用幂等键确保重试安全。
检索和提示注入
将文档、网页、电子邮件和工具结果视为不受信任的数据。将其与系统指令区分开来,保留源标识符,并防止检索到的文本更改权限或工具策略。当源冲突或检索结果为空时,返回升级状态而不是进行猜测。
评估和事件响应
测试正常、不完整、对抗、跨租户、敏感和工具故障等各种情况。跟踪被阻止的操作、不安全建议、数据泄露尝试、工具错误和审核员的更正。维护回滚路径并指定事件接收负责人。
常见问题解答
人工智能代理可以完全自主吗?
自主性是一种有界产品设置,而非安全属性。操作的后果越严重,审批、监控和回滚控制就应该越严格。
私有模型能解决代理安全问题吗?
不。私有模型可能会改变数据流风险,但身份、检索、工具权限、运行时隔离、日志记录和人工审核仍然至关重要。
团队应该首先保护哪些方面?
首先要保护身份、检索权限和工具写入边界。与广泛的自主访问权限相比,具有清晰跟踪记录的只读工作流是更安全的初始部署方案。
有关系统结构,请参阅 AI代理架构;有关实现细节,请参阅 Claude Agent SDK 指南。
