应用安全

AI Agent 如何保护 API 和工具调用安全?

Agent 会把「读数据」升级为「替用户执行动作」,提示词注入、过度授权和工具链组合让传统 API 防护失效。本文给出工具清单、最小权限、双向校验与可回放审计的落地框架。

为什么 Agent 让传统 API 安全模型失效

传统 Web/API 防护建立在三个隐含假设上:调用者是人类操作 UI、权限在登录时一次性确定、请求之间彼此独立。Agent 三条都不满足:

  1. 自主循环:一次用户指令可能触发几十次工具嵌套调用,请求之间有因果链,单点规则看不出异常。
  2. 凭据常驻:为实现自动化,Agent 通常长期持有 API Key 或 Token,一旦上下文或被注入内容泄露,凭据有效期内的损失难以收束。
  3. 间接提示注入:攻击载荷不一定来自用户输入,也可能藏在 Agent 读取的网页、文档、邮件或工具返回值里——等你发现异常时,动作已经执行。

Agent 调用链上的控制点

Agent 的安全边界不在「某一个接口」,而在整条调用链。下面这张图把典型链路和每处的控制手段标了出来。

用户指令 入口:网页 / IM / API Agent 编排层 模型决策与工具选择 工具调用 内部 API 与数据源 外部服务 第三方 SaaS / 网络 工具清单限制 应用层 Schema 双向校验 API Shield(Enterprise) mTLS + 工具级限流 维度与条数看套餐 返回值清洗 应用层必须做 AI Gateway:模型侧日志、token 与成本分析、缓存、重试与回退(全套餐可用) 边缘负责「这个请求是否合法」;应用层负责「这个动作是否应该发生」——高危写入、资金与基础设施变更必须人在回路 审计要求:记录用户指令 → 调用意图 → 入参 → 返回值 → 是否已人工确认,缺一项就无法回放
图 1:AI Agent 调用链上的控制点。前三段可被边缘产品部分覆盖,最后一段与「是否应该发生」的判断全部属于应用层职责。

一句话概括这条链:边缘负责「这个请求是否合法」,应用层负责「这个动作是否应该发生」。两者的边界不清,Agent 上线后迟早出事。

落地框架:五层防护

第一层:工具清单与最小权限。 先显式登记 Agent 能调用哪些工具、每个工具能读写哪些数据、是否涉及资金或不可逆动作。没有登记的工具一律不可见,宁可减少能力也不要「默认全开」。

归属:这一层完全是应用层职责。没有任何边缘产品能替你决定「这个 Agent 应该有哪些能力」。

第二层:每次调用的双向 Schema 校验。 入参必须符合契约(防注入式参数篡改),返回值也必须符合契约。Cloudflare 的 API Shield 提供 Schema validation,把「不是登记过的调用形式」挡在边缘。

两点限制:① API Shield 是 Enterprise-only paid add-on;低套餐可用 WAF 的 Application Profiles 走「先检测、再决定是否用 Custom Rule 阻断」的路线。② 上传 Schema 的规模有套餐配额(Free:5 个启用 Schema / 200 KiB 且动作只能 Block;Business:10 个 / 2 MiB;Enterprise:可选 Log 或 Block)。更重要的是:工具返回值同样要当作不可信输入再做一次校验与清洗,因为那正是间接注入进入上下文的通道——这一步必须在你的代码里做。

第三层:按工具维度限流与配额。 不同工具风险差异极大:查天气可以每天几千次,转账接口可能每天只允许几次且必须人工确认。

能落在 Cloudflare 上的部分:Rate limiting rules 可以按路径组合计数。但要注意两件事——一是规则条数受套餐限制(Free 1 条、Pro 2 条、Business 5 条、Enterprise 通常 100 条);二是计数维度受套餐限制,免费档只能按 IP 计数,要按 JWT 声明或 JSON 正文字段等维度计数需要 Enterprise 或 Advanced Rate Limiting。所以「按工具名/危险等级计数」在低套餐上通常要放回应用层。 另外:Cloudflare 的限流计数器按数据中心独立累计,且从检测到超限到执行动作可能有几秒延迟。AI Agent 在一个循环里可能几十次调用同源工具,指望边缘规则做精确次数上限是不现实的——需要精确上限,就把计数器放在应用层。

第四层:全链路可回放审计。 记录每次工具调用的完整上下文:用户指令、模型推理出的调用意图、入参、返回值、以及当时是否已通过人工确认。审计不是为了事后追责,而是为了在出事前能回放并定位漏洞链。

第五层:LLM 侧观测与成本控制。 Cloudflare AI Gateway 对通向模型厂商的请求提供统一的日志、限流、缓存、重试与模型回退,并把请求数、token 与成本做成可治理指标。它对所有套餐开放,接入方式是改一行代码(把 SDK 指向 AI Gateway 端点)。

边界:AI Gateway 治理的是「你的应用 → 模型厂商」这一跳,不替代面向终端用户的业务配额,也不参与工具调用本身的授权判断。

工具权限矩阵建议

工具类型 数据范围 是否需要人工确认 默认配额
只读查询(搜索、取数) 限定索引/租户 否 每会话数千次
内部只读(CRM/工单读取) 按租户隔离 否,但记录 每会话数百次
外部写操作(发邮件、发消息) 白名单收件域 是 每会话个位数
资金/订单变更 单次金额上限 是且二次确认 每日极少次
基础设施操作(改配置、部署) 仅预发环境 是 默认禁用生产

配额那一列的执行位置很关键:能否做到精确跨机房一致,取决于你把计数放在哪里。边缘规则适合粗粒度抑制,精确上限必须放在应用层。

Cloudflare 能力 vs 应用层职责

事项 Cloudflare 能给到的 应用层必须做的
调用形式校验 API Shield Schema validation(Enterprise 附加项)或 WAF Application Profiles 工具返回值的清洗与可信判定
强身份 mTLS(全套餐可用;BYO CA 限 Enterprise) 每个 Agent 独立凭据的签发与轮换
频率抑制 Rate limiting rules(条数与维度受套餐限制) 按工具维度的精确配额与循环检测
模型侧观测 AI Gateway:日志、token/成本分析、缓存、重试与回退 把成本与动作归因到具体 Agent 与租户
高危动作把关 — 人在回路:写操作、资金、基础设施变更的确认流程
提示注入防护 — 隔离外部内容、清洗指令类内容、高危动作二次确认

套餐与额度细节见 AI SaaS 如何防止 API 被恶意调用?。

边界与不适用情况

  • 网络层产品(WAF、限流、API Shield)不能替你做业务授权决策。它们能确认调用形式合法、来源可信、频率正常,但「这次转账是否应该发生」属于应用层必须保留的判断。
  • 完全无人值守的高危场景请谨慎:即使做了全链路测试,LLM 的非确定性意味着「偶尔会做出计划外的调用」。涉及资金和用户不可逆数据时,人在回路不是可选项。
  • 多 Agent 协作会放大权限蔓延:子 Agent 继承了父 Agent 的凭据,跨 Agent 调用链可能造成越权组合。应为每个 Agent 单独签发凭据,而不是共享一把万能 Key。
  • 低套餐的现实约束:拿不到 API Shield 或 Advanced Rate Limiting 时,Agent 的核心保护应落在应用层——工具清单 + 返回值清洗 + 按工具配额,这三项组合的效果远大于任何单一边缘产品。

常见问题

有了 Schema 校验还需要限制工具数量吗? 需要。Schema 校验保证「调用形式正确」,但无法判断「是否应该开放这个能力」。过度丰富的工具集会让模型在遇到歧义时更容易选错,安全和稳定性都更差。

间接提示注入怎么防? 三层组合:对工具返回值做契约校验与清洗(去掉指令类内容)、在拼上下文前对外部内容做隔离标注、以及高危动作必须人工确认。指望单次过滤彻底解决是不现实的。

Agent 的 API Key 怎么管? 一个 Agent 一把 Key,权限收敛到它的工具清单;Key 绑定来源(mTLS 或 IP 段);结合 AI Gateway 的用量日志做异常行为告警,密钥轮换自动化。

mTLS 对 Agent 有意义吗? 有。它在传输层把「调用来源」绑定到证书而不是可复制的字符串,是解决凭据泄露和伪造来源的基础设施手段。而且所有套餐都能用 Cloudflare 托管 CA 配 mTLS,不必先买 API Shield。

相关阅读

← 返回文章列表

Cloudflare 官方合作伙伴

正在为海外业务做架构决策?

企业版选型、架构咨询、风险评估——把你的场景告诉我们,我们给出可落地的方案和路径。

作为 Cloudflare 合作伙伴,我们可以为你提供:

预约咨询