跳转到主要内容
一个被提示注入、配置错误或简单地给予了太多自由的智能体, 可以调用它从未打算接触的工具——或用危险参数调用合法工具: 带 rm -rf /shell.exec、带超大转账金额的支付 API、 针对生产副本的数据库工具。这就是智能体工具滥用,它是 智能体系统中最严重的风险之一,因为工具调用有往往是不可逆的 真实世界副作用。 智能体防火墙有三层分层防御。你可以独立部署它们,也可以组合 使用。

1. 允许列表:拒绝你未明确允许的一切

最强的控制是允许列表。不是试图列举每个危险工具,而是列举 这个智能体合法需要的工具——并拒绝其他一切。这是零信任基线。 带有 default_verdict: deny 和每个批准工具的明确 allow 规则 的策略实现了这一点。示例:只应从 CRM 读取数据的智能体:
[
  {
    "priority": 10,
    "label": "allow crm reads",
    "tool_name_glob": "crm.get*",
    "verdict": "allow"
  },
  {
    "priority": 20,
    "label": "allow crm search",
    "tool_name_glob": "crm.search",
    "verdict": "allow"
  },
  {
    "priority": 9999,
    "label": "deny everything else",
    "tool_name_glob": "*",
    "verdict": "deny"
  }
]
shell.execdb.deletepayment.transfer 的任何调用—— 无论是有意发出还是由注入指令触发——都会命中 * 通配符并返回 HTTP 400 firewall_blocked 错误。智能体看到一个结构化的工具错误, 无法重试(拦截被标记为 skip-retry),因此它无法循环绕过拒绝。
将你的策略的 default_verdict 设置为 deny 以进行完整的允许 列表执行。使用默认的 audit 判定时,未匹配的调用被允许和记录 但不被拦截——在推出期间很有用,但本身不是安全控制。
Glob 模式让你用一条规则允许整个工具族。常见模式:
模式它覆盖什么
crm.*crm 命名空间中的所有工具
*.read所有服务器上的任何 read 动词工具
db.query恰好这一个工具
*一切(用于你的通配符拒绝)
工具匹配是以升序优先级顺序首个匹配生效。将你的具体 allow 规则放在低优先级数字上,通配符 deny 放在高优先级数字上。

2. 参数验证:允许工具,拦截危险调用

工具名上的允许列表是粗粒度的——它完全拦截 shell.exec。有时 你想允许一个工具,但约束它可以如何被调用。参数子句让你使用 JSONPath 和一组操作符匹配工具调用参数中的特定字段。 示例:允许 shell.exec 但拦截 rm -rf
{
  "priority": 10,
  "label": "block destructive rm",
  "tool_name_glob": "shell.exec",
  "args_match": {
    "clauses": [
      {
        "path": "$.command",
        "op": "regex",
        "value": "rm\\s+-[^\\s]*r[^\\s]*f|mkfs|dd\\s+if=|:\\(\\)\\{.*\\}"
      }
    ]
  },
  "verdict": "deny"
}
此规则仅在 shell.exec 被调用 $.command 参数匹配破坏性 命令正则时触发。带有安全命令的普通 shell.exec 调用会落到下一条 规则(或默认判定)。将此规则放在比任何一般 allow shell.exec 规则 更低的优先级数字上,这样它先触发。 完整的参数操作符集合:
操作符何时使用
eq对标量值(字符串或数字)的精确匹配
contains子串匹配——例如 $.query contains DROP TABLE
regexRE2 模式匹配——热路径上安全,无回溯
in值必须在给定数组中——例如只允许特定环境
cidr_matchCIDR 块中的 IP 地址——对出站目的地检查很有用
gt / lt数字比较——例如支付上限的 $.amount gt 10000
args_match 块中的所有子句都是 AND 关系。如果路径在调用参数中 不存在,子句评估为 false,规则不触发——调用落到下一条规则或 默认值。 支付守卫示例——拒绝金额超过阈值的任何支付工具调用:
{
  "priority": 5,
  "label": "cap payment amount",
  "tool_name_glob": "payment.*",
  "args_match": {
    "clauses": [
      { "path": "$.amount_cents", "op": "gt", "value": 100000 }
    ]
  },
  "verdict": "deny"
}

3. 人工审批(HITL):挂起高风险调用等待审批

对于真正必要但高风险的工具——触发部署、批准退款、发送批量邮件—— 你可以在调用继续之前要求人工签字。pending_approval 判定挂起 调用并向智能体返回 firewall_approval_pending 响应:
{
  "priority": 20,
  "label": "hold deployment calls for review",
  "tool_name_glob": "deploy.*",
  "verdict": "pending_approval"
}
智能体(或你的框架)轮询审批 id。审查者从控制台批准或拒绝, 或通过 webhook 回调。如果批准,智能体使用一次性审批令牌重新 提交原始调用,网关只允许它通过一次。 pending_approval 与参数子句兼容——你可以只挂起匹配阈值的调用, 让常规调用通过:
[
  {
    "priority": 10,
    "label": "hold large deploys",
    "tool_name_glob": "deploy.release",
    "args_match": {
      "clauses": [
        { "path": "$.environment", "op": "eq", "value": "production" }
      ]
    },
    "verdict": "pending_approval"
  },
  {
    "priority": 20,
    "label": "allow staging deploys",
    "tool_name_glob": "deploy.*",
    "verdict": "allow"
  }
]

4. 被拦截的调用是什么样子

inbound 执行面(请求中声明的工具)上被拒绝的调用返回 HTTP 400,错误码为 firewall_blocked。响应包含结构化的 metadata——匹配的规则标签、原因码和风险因子——并被标记为 skip-retry,使循环无法反复撞击同一个被拒绝的调用。 response 执行面(模型已经发出 tool_calls)上被拦截的 调用以工具错误(对模型可见)返回,给模型一个机会做出反应—— 选择另一个工具、询问用户或停止——而不是崩溃。

5. 首个匹配生效的顺序

优先级顺序很重要。引擎以升序优先级遍历规则,在第一个匹配处停止。 一个常见模式:
优先级规则判定
5shell.exec + 破坏性正则deny
10shell.*(一般)allow
20crm.*allow
9999*(通配符)deny
优先级 5 在优先级 10 之前触发——因此带破坏性命令的 shell.exec 被拒绝,即使有一般的 allow shell.* 规则。没有低优先级的拒绝, allow shell.* 规则会先获胜。

6. 使用影子模式安全推出

在将新策略切换为执行之前,开启影子模式。策略评估每一次 工具调用并记录判定,就像在生产中一样,但每个执行性判定 (denypending_approvalsanitize)都被降级为 audit—— 什么都不会被拦截。事件日志中的原因前缀为 [shadow] would deny, 因此你可以在 EventsRuns 视图中衡量影响。 一旦你确认策略在你预期的内容上触发——以及没有你不打算触发的 任何东西——关闭影子模式。下一次调用就会被执行。
tight 自治级别自动应用 block_destructive_shell 预设。如果你 需要一个不用编写规则的快速姿态,从控制台应用 tight,它会在 一步内为破坏性 shell 调用提供拒绝策略。然后你可以在其上叠加 你自己的允许列表规则。参见自治级别

7. 相关威胁

智能体工具滥用很少孤立出现。未授权的工具调用通常是另一个 攻击向量的后果
  • 提示注入——攻击者 在检索的内容中嵌入指令,引导智能体调用它本不打算调用的工具。
  • 过度代理——智能体 被授予比其任务需要更多的工具访问权,使任何注入或配置错误 立即变得危险。
  • 威胁模型——工具滥用如何 适应智能体系统的完整攻击面。
智能体防火墙是执行层;最小特权原则(窄工具允许列表、限定范围 的密钥)是使其有效的设计姿态。

防火墙规则参考

完整匹配语言——工具 glob、参数子句、所有操作符、判定和 API。

防火墙概览

策略、执行面、自治级别、HITL 审批和可观测性。