fetch、
一个 web_search、一个 webhook 投递器。工具名也许在你的允许列表上,
参数也许看起来干净,而调用仍然最终把你的数据 POST 到一个攻击者
控制的主机,或从 169.254.169.254 元数据端点拉取凭据。目的地是
调用中你的工具名规则从未看到的那部分。
mcp 出站控制关闭那个缺口。一条出站规则把一个防火墙判定限定到
一个工具触及的地方——一个主机、一个 IP 或一个 CIDR 范围——因此
被允许到 api.openai.com 的同一个 http_fetch 被拒绝到其他一切。
它运行在防火墙的 egress 面上,叠加在每一次 tools/call 已经经过的
每次调用的评估 之上。
这是一个控制台任务。防火墙规则住在
/api/workspace/firewall/*
路由上,它们用你的会话/访问令牌鉴权——不是一个中继 sk-orca-…
密钥。编写一条规则需要 Developer+ 角色。1. 一条出站规则控制什么
一条普通规则在工具名及其参数上匹配。一条出站规则添加第三个 维度:调用解析到的目的地。你把规则的stage 设为 egress 并
附加一个 egress_json 的 allow / deny 条目列表。引擎从调用中提取
目的地主机,并只在那个主机在范围内时触发该规则。
条目以三种方式匹配:
主机名
大小写不敏感的精确匹配,例如
api.openai.com。两侧的尾随点会被
修剪。IP 字面量
对照解析出的拨号 IP 精确匹配,例如
169.254.169.254。CIDR 范围
目的地 IP——字面量或 DNS 解析的——必须落在该块内,例如
10.0.0.0/8。2. 一个具体例子
拒绝每一个 fetch 形状的工具触及云元数据端点和 RFC-1918 范围。这是 经典的 SSRF 外泄腿切断:在egress 阶段上的一个 deny 判定,由一个
egress_json 拒绝列表限定。
tools/call 作为一个工具
错误回到模型;一次到该拒绝列表不覆盖的公开主机的调用通过。
3. 只允许列表一个目的地
上面例子的反面:把一个 fetch 工具钉到一个被批准的主机,并让策略的default_verdict(或一条更后面的兜底)处理其余。因为这是一个
allow 判定,allow 列表是范围内集合。
4. 它如何与防火墙的其余部分组合
一条出站规则是一个 工作区防火墙策略 中众多规则之一。引擎按 优先级顺序(最低优先)遍历规则,第一个匹配获胜,因此把一条紧的 出站 deny 放在任何宽泛 allow 的上面。| 一条出站规则上的判定 | 效果 |
|---|---|
deny | 拦截到范围内目的地的调用——在 egress 面上记录并作为一个错误返回给工具。 |
audit | 把匹配的调用记录为一个 防火墙事件;仍然派发。 |
allow | 允许范围内目的地;与一个默认拒绝底线配对。 |
pending_approval 和 cap_cost 在 egress 面上不被执行——
egress 是一个目的地检查,不是一个挂起或一个消费上限。改为在 mcp
或 inbound 面上使用那些判定。参见
判定参考。内置 SSRF 防护(无需规则)
内置 SSRF 防护(无需规则)
独立于你编写的任何规则,
MCP 网关 对照一个 SSRF 策略校验每个
服务器端点及其解析出的拨号 IP——内网范围和云元数据地址被拒绝,
并且 IP 在每一跳上被重新核查以挫败 DNS 重绑定。你的出站规则在
那个基线之上叠加一个工作区特定的目的地策略。
针对外泄链的序列规则
针对外泄链的序列规则
一条单独的出站 deny 阻止一个工具触及一个主机。一条
序列规则 阻止那条链——例如
“读取一个文件,然后在窗口内出站”——通过只在出站腿跟在一次敏感
读取之后时标记它。那是 lethal-trifecta(致命三联)断路器;出站
限定是每次调用的控制。
5. 先 shadow,然后执行
在一个繁忙的工作区上把一条出站 deny 直接推向执行,有风险破坏一个 你忘了的合法集成。两张安全网:- Shadow 模式。 一个处于 shadow 模式的策略把每一个执行判定降级
为 audit——你的出站 deny 记录
[shadow] would deny …而不是拦截, 因此你在它咬人之前看到爆炸半径。 - Observe 模式。 工作区
firewall_observe_mode设置把未覆盖的 调用记录为 已发现工具,浮现你的智能体 已经触及的真实目的地,因此你可以从数据而不是猜测来编写一个准确的 允许列表。
6. 角色与路由
所有控制台路由都是工作区限定的,并用你的会话/访问令牌鉴权。读取对 任何 Member 开放;编写或编辑一条规则需要 Developer+。| 方法与路径 | 角色 | 用途 |
|---|---|---|
GET /api/workspace/firewall/policies/:id | Member | 读取一个策略及其规则。 |
POST /api/workspace/firewall/rules | Developer+ | 添加一条规则(设置 stage: egress)。 |
PUT /api/workspace/firewall/rules | Developer+ | 更新一条规则(id 在 body 中)。 |
DELETE /api/workspace/firewall/rules/:id | Developer+ | 移除一条规则。 |
POST /api/workspace/firewall/test | Developer+ | 对照一个草稿策略重放一次样本调用。 |
相关
防火墙规则参考
完整的规则 DSL——工具 globs、args 匹配、出站列表、序列。
连接一个 MCP 服务器
注册一个服务器,让它的工具调用在防火墙后运行。
允许列表 MCP 工具
默认拒绝你没有明确批准的工具。
数据外泄
出站控制为阻止而生的威胁。
