inbound 执行面上没有目的地可检查;一个参数子句放在 inbound 上还没有
调用时参数。
本页是关于四个智能体防火墙执行面的聚焦指南:每个执行面观察什么、一条
规则何时应该针对它,以及同一意图在不同执行面上表达的那一种具体方式。
完整的规则词汇表参见 防火墙规则;围绕它的
策略模型参见 防火墙。
1. 四个执行面一览
每一次评估都被打上恰好一个执行面的标记。一条没有执行面("")的规则
适用于所有执行面;一条钉在某一个执行面上的规则只在那里触发。
| 执行面 | 该执行面看到什么 |
|---|---|
inbound | 智能体在请求上声明的工具 |
response | 模型在其回复中发出的 tool_calls |
mcp | 通过 MCP 网关派发的一次 tools/call |
egress | 某个工具触及的一个出站 host / IP / CIDR |
stage 属性设置。
执行面治理的是哪些数据在范围内,而非判定有多严格。
deny 在任何
执行面上都是 deny;改变的是该规则是否拥有它需要匹配的参数、工具名或
目的地。2. inbound —— 智能体声明的工具
最早的执行面。在模型运行之前,你的智能体会发送一个它愿意让模型调用的
工具定义列表。inbound 执行面看到那个被声明的工具集,并能在模型
甚至还没能选中它之前拦截一个危险工具。
此执行面上没有调用时参数——模型还没决定如何调用任何东西——所以
inbound 规则匹配工具名(以及可选地它所属的技能),而非
args_match_json。
此处一次被拒绝的调用返回 HTTP 400,带有 firewall_blocked 码,以工具
和原因命名,并被标记为 skip-retry。
3. response —— 模型发出的工具调用
一旦模型回复,它可能发出一个或多个 tool_calls——带有真实参数的具体
调用。response 执行面看到那些,所以这里是参数级别规则所属之处:
不是”拦截 shell.exec”,而是”只在命令是 rm -rf 时拦截 shell.exec”。
sanitize 在这里能工作——它从调用的参数
中脱敏匹配的子串并转发清理后的调用。(Sanitize 只脱敏工具调用参数;
它绝不触碰工具返回的内容。)
4. mcp —— 通过网关派发的调用
当一个智能体通过 OrcaRouter 的 MCP 网关 触及
一个工具时,每一次 tools/call 都会在它被派发到已注册服务器之前在
mcp 执行面上被评估。这是治理 Model Context Protocol 流量的执行面——与
response 相同的 glob / 参数 / 判定词汇表,应用于 MCP 派发。
此处的一次拦截会作为一个工具错误(firewall deny: <reason>)浮现,
而非一次传输失败,因此模型能看到这次拒绝并作出反应——换一个工具、
询问用户,或者停止。
5. egress —— 工具触及的出站目的地
最后一个执行面。当一个工具报告一个出站网络目的地时,egress 执行面对
它进行匹配——即 SSRF 与数据外泄的执行面。Egress 规则不仅靠一个工具名
模式匹配;它们匹配一个 host / IP / CIDR 列表:
169.254.169.254)和 RFC-1918 范围是
要拒绝的标准对象。关于 allow/deny 极性参见
防火墙规则 §6。
没有任何预设附带 CIDR 规则。
tight
自治级别
的 SSRF 姿态拒绝的是 fetch 形态的工具名(例如 http_fetch、
web_search、fetch_url);一个基于目的地的 egress 拒绝是你为你的智能体
绝不能触及的主机和范围编写的东西。6. 选择正确的执行面
同一个安全目标往往有一个最佳执行面。把意图匹配到实际承载你所需数据 的那个执行面:阻止一个工具被提供 → inbound
阻止一个工具被提供 → inbound
如果模型甚至永远不应该看到一个工具,就在
inbound 上拒绝它。该
拦截落在模型调用之前,所以它不消耗任何模型 token。允许一个工具但约束它的参数 → response(或 mcp)
允许一个工具但约束它的参数 → response(或 mcp)
参数子句需要模型选中的参数,而那些只在
response 和 mcp 上存在。
在一个危险参数上拒绝,或者用 sanitize 剥除智能体放进某个参数里的
一个密钥或 PII 值。治理 Model Context Protocol 流量 → mcp
治理 Model Context Protocol 流量 → mcp
通过 MCP 网关路由的调用会在派发前于
mcp 上被评估——每个已注册
服务器工具的咽喉点。拦截智能体能连到哪里 → egress
拦截智能体能连到哪里 → egress
基于目的地的规则——拦截云元数据 IP、拒绝一个 CIDR、把你批准的主机
加入白名单——只在
egress 上才有意义。适用于每一个执行面 → 把执行面留空
适用于每一个执行面 → 把执行面留空
一条没有执行面的规则在全部四个上运行。把它用于一条覆盖式的
default_verdict 风格规则,或一个你在它出现的所有地方都拒绝的工具。7. 执行面与影子模式
一条策略的shadow_mode 标志与执行面无关。把它打开,那么任何执行面上
的每个执行性判定——都被降级为 audit,原因前缀为 [shadow] would …,
这样你就能在一条规则改变实时流量之前先确认它在正确的执行面上触发。参见
影子模式 与
执行模式。
8. 执行面在全局图景中的位置
四个执行面是执行的在哪里;模型的其余部分则是做什么和谁来做。判定
每个执行面在匹配后能做什么——allow、audit、deny、sanitize、挂起等待
审批、封顶成本。
工具白名单
用
inbound 来约束智能体声明的工具集。验证参数
编写按工具如何被调用来对其设门的
response / mcp 参数子句。Egress 控制
在
egress 执行面上拦截出站目的地——即外泄边界。