mcp 面上
评估的 tool_name_glob 规则来构建它。
每一次穿过 MCP 网关 的 tools/call 都在
到达真实服务器之前通过你的 防火墙策略
运行。所以这个允许列表不是建议性的——一次对你没有允许的工具的
调用永不派发。
策略编辑是一个控制台操作。
/api/workspace/firewall/* 路由用你的
会话/访问令牌鉴权,不是一个中继 sk-orca-… 密钥。编写规则需要
Developer+ 角色;任何工作区成员(下至 Viewer)都可以读取
策略和已发现工具的信息流。1. 为什么要为安全的 mcp 工具做默认拒绝的允许列表
一个拒绝列表——“拦截危险的工具”——在一个服务器添加一个新工具、 重命名一个,或你连接第二个服务器的那一刻就失效。危险工具的集合是 开放式的;你打算使用的集合是小而已知的。一个允许列表把默认翻转 过来,因此未知被拒绝,而不是被准入:- 新工具默认被拒绝。 一个在你连接之后长出一个
delete_repo工具的服务器,在你把它添加到允许列表之前无法被调用。 - 范围按服务器划分。
<server>.<tool>命名空间让你能允许github.create_issue,同时拒绝github.*下的其他一切。 - 一个咽喉点。 同一条策略治理网关后面捆绑的服务器和每一个 BYO 服务器,因此有一个地方可以读取允许列表。
2. 两个部件
一个允许列表是一个default_verdict 加一组有序的规则。
default_verdict: deny
策略对任何没有规则匹配的
tools/call 的回退。把它设为 deny,
任何你没有明确允许的东西都被拦截。(它也接受 allow 和
audit——audit 是默认。)allow 规则
每个工具(或每个 glob)一条规则。每条携带一个
tool_name_glob
和一个 allow 判定。一次匹配 glob 的 tools/call 解析为 allow
并派发;其余一切落到 deny 默认。github.create_issue、
shell.exec。* 匹配任何工具(少用它;一条带 * 的 allow 规则会
撤销整个允许列表)。一个前导的 <server>. 把 glob 限定到一个服务器。
3. 一个具体例子
你连接了一个github 服务器,而你只想让智能体读取和开启 issue
——绝不删除或管理任何东西。在控制台,打开 Firewall → Policies,
把策略的默认判定设为 deny,并添加两条 allow 规则:
| 顺序 | tool_name_glob | 判定 |
|---|---|---|
| 1 | github.create_issue | allow |
| 2 | github.list_issues | allow |
deny:
github.create_issue→ 匹配规则 1 → allow,派发。github.delete_repo→ 什么也不匹配 → 默认 deny。
firewall deny: …)回到
模型——与任何失败工具返回的形态相同——因此智能体能适应而不是崩溃。
(在 inbound 面上,一次 deny 反而是一个带错误码 firewall_blocked 的
HTTP 400。)
4. 用参数收紧
一个在允许列表上的工具名仍然可能被用坏参数调用。通过给规则添加 一个args_match 子句(JSONPath + 一个像 eq、contains、regex、
in 或 cidr_match 的运算符),或者通过在 allow 之上叠加一条针对
特定参数形状的 deny 规则,来进一步收窄——例如,允许
github.create_issue 但在目标 repo 不在一个批准列表上时 deny 它。
完整的运算符集参见
防火墙规则参考。
sanitize 在转发前脱敏一次工具调用的参数——它绝不触及一个工具
返回的东西。要修剪返回的内容,那是一个不同的控制;参见
净化工具输出。5. 安全地推出它
在生产中翻转一个整服务器的默认拒绝,你就有风险破坏一个悄悄依赖 某个你忘了的工具的智能体。两个设置给它降险:shadow_mode — 看到拒绝而不执行
shadow_mode — 看到拒绝而不执行
一个按策略的标志,把执行判定降级为
audit。你的 deny 默认和
deny 规则记录 [shadow] would deny … 而不是拦截,因此你可以在
它咬人之前对照真实流量验证允许列表。在
执行模式 中阅读更多。observe mode — 浮现你漏掉的工具
observe mode — 浮现你漏掉的工具
一个工作区设置,把每一次未覆盖的调用记录为
已发现工具 信息流中的一个缺口。
在你编写允许列表之前运行它,以确切了解你的智能体调用了哪些工具,
然后把每一个提升为一条明确的 allow 规则。
shadow_mode,允许列表就执行。
6. 验证它有效
执行之后,确认被拒绝的工具确实被拒绝:- **Dry-run(试运行)**一次
tools/call对照策略(Developer+),以 看到判定以及哪条规则——或默认——产生了它,而不发送真实流量。 传入一个工具名、面和样本参数;引擎评估它们并返回判定轨迹而不 记录一个事件。 - 观察事件。 每一次被拦截的调用记录一个 Developer+ 可以在 控制台读取的防火墙事件; 审计事件 页涵盖该信息流及其字段。
相关
连接一个 MCP 服务器
在你能允许列表它的工具之前注册一个服务器。
防火墙:MCP 服务器
网关的运行时行为和每次调用的判定。
防火墙规则参考
完整的规则 DSL——globs、args_match、egress、sanitize。
危险的工具调用
一个允许列表为遏制而生的威胁。
出站限制
治理一个被允许的工具可以触及哪里。
防护栏 vs. 防火墙
何时取用内容策略 vs. 工具策略。
