tools/call を、実際の
サーバーに到達する前にファイアウォールエンジンを通します。
1. MCP 統制が提供するもの
- ひとつのゲートウェイ、すべてのサーバー。 エージェントはひとつのエンドポイントに
接続します。ゲートウェイは到達可能なすべての登録済みサーバーのツールを
<server>.<tool>で名前空間化して集約するため、github.create_issueとshell.execが単一の MCP 接続の下で並んで表示されます。 - すべての呼び出しにポリシー。 各
tools/callはまずあなたの ポリシーによって評価されます。ブロックされた呼び出しは、 トランスポート障害ではなくツールエラー(firewall deny: …)としてモデルに 戻るため、エージェントはクラッシュする代わりに反応できます。sanitizeは転送前に 引数を書き換えます;pending_approvalは呼び出しを保留します。 - SSRF ガード済み。 リモートエンドポイントはゲートウェイの SSRF ポリシーに 対して検証されます — イントラネット範囲とクラウドメタデータアドレスはブロックされ、 解決されたダイヤル IP は、リダイレクトを含むすべてのホップで DNS リバインディングを 打ち破るために再チェックされます。
- 暗号化されたクレデンシャル。 サーバーの認証シークレットは保存時に暗号化され、 読み取り時にマスクされます。ゲートウェイはディスパッチ時にそれらを注入します; モデルやクライアントに到達することは決してありません。
2. 2 種類のサーバー
| 種類 | endpoint | 挙動 |
|---|---|---|
| BYO(持ち込み) | streamable-HTTP URL | ゲートウェイは tools/call をあなたのリモート MCP サーバーにプロキシします。 |
| バンドル | 空 | OrcaRouter のインプロセス MCP サーバー。可視かつ統制可能になるよう登録されます;別途プローブはできません。 |
3. サーバーの登録
サーバーレコードは次を持ちます:| フィールド | 備考 |
|---|---|
name | ビジネスキー。ワークスペースごとに一意、≤ 128 文字。. は不可 — <server>.<tool> の名前空間セパレータです。 |
endpoint | MCP サーバー URL(≤ 512 文字)。バンドルサーバーでは空。 |
auth_mode | none(デフォルト)、bearer、oauth、basic。 |
auth_json | モード固有のクレデンシャル(下記参照)。auth_mode が none でないときは常に必須。 |
enabled | デフォルトは true。無効化されたサーバーはゲートウェイから完全に除外されます。 |
status | 到達可能性 — ok(デフォルト)、degraded、down。プローブによって設定されます。 |
シークレットは決して平文で保存されません。
auth_json はワークスペースの
シークレットキーで保存時に暗号化されます。そのキーが設定されていない場合、
クレデンシャルを暗号化せずに永続化するのではなく、書き込みが拒否されます。読み取り
時には、シークレットとエンドポイントがマスクされます;保存された値を維持するには、
更新時にマスクをそのまま返してください。2 つのクレデンシャル付き認証モード間を
切り替えるには、新しい auth_json が必要です(暗号文はそのモードに形状結合されて
います)。4. プローブ — ツールを発見する
サーバーのツールに対してルールを書けるようになる前に、その名前を知る必要があります。 サーバーをプローブします:initialize + tools/list を実行し
(復号されたクレデンシャルを使用、10 秒で制限)、到達可能性 status と
タイムスタンプを記録し、アドバタイズされたツールをその入力スキーマとともに返します:
github.create_issue が何を受け付けるかを正確に知った上で、
tool_name_glob: github.* のようなルールを作成できます。バンドル(空エンドポイント)
サーバーはプローブ不可で、400 を返します。
5. ライフサイクルと強制
- 有効 vs. 無効。 無効化されたサーバーはランタイムレジストリから除外されます — そのツールはゲートウェイから消え、そのクレデンシャルは決して復号されません。 それがオフスイッチです。
- 到達可能性。
status(ok/degraded/down)は最後のプローブを反映します; 到達不能なサーバーは、ゲートウェイがツールセットを構築するときにスキップされます。 - 呼び出しごとの判定。 ディスパッチ時にエンジンは、特定の
<server>.<tool>呼び出しに対してその引数とともに判定を返します:allow/audit→ 転送(監査ログ、依然として許可)。sanitize→ 書き換えられた引数で転送。deny/pending_approval/ 不明なもの → ツールエラーとしてブロック。 (統合ゲートウェイ経由では、保留された呼び出しは承認 id を通すのではなく永続的な エラーとして表面化します — 承認ハンドシェイクが必要なときは evaluate フックを 使ってください。)
- 削除はソフト削除です;名前スロットは即座に解放されるため、同じ名前で再登録 できます。
6. クライアントの接続
任意の MCP クライアントを、ファイアウォールゲートウェイスコープのトークンとともに ゲートウェイエンドポイントに向けます:orcarouter-firewall-gateway として自身を識別します。
有効で到達可能なすべてのサーバーのツールを <server>.<tool> 名前空間の下で
アドバタイズし、各ツールの入力スキーマを逐語的に再公開します。ファイアウォール
ゲートウェイスコープのないトークンは 403 を受け取ります — これ専用の
ゲートウェイトークンを発行してください。
API リファレンス
コンソール(ワークスペーススコープ、RBAC)
| メソッドとパス | ロール | 目的 |
|---|---|---|
GET /api/workspace/firewall/mcp_servers | Member | サーバー一覧(シークレットマスク、エンドポイントリダクト)。 |
GET /api/workspace/firewall/mcp_servers/:id | Member | 単一サーバー、マスク済み。 |
POST /api/workspace/firewall/mcp_servers | Developer+ | サーバーを登録(重複名で 409)。 |
PUT /api/workspace/firewall/mcp_servers | Developer+ | サーバーを更新(id はボディ内)。 |
DELETE /api/workspace/firewall/mcp_servers/:id | Developer+ | ソフト削除;名前を解放。 |
POST /api/workspace/firewall/mcp_servers/:id/probe | Developer+ | 到達可能性をプローブ + ツールを発見。 |
ゲートウェイ(ファイアウォールゲートウェイスコープのトークン)
| メソッドとパス | 目的 |
|---|---|
ANY /api/v1/firewall/mcp | 統合された MCP ゲートウェイのディスパッチエンドポイント。 |
GET /api/v1/firewall/mcp_servers | SDK プロキシ向けのランタイムレジストリ(復号された認証、有効なサーバーのみ)。 |
POST /api/v1/firewall/evaluate | 単一の tools/call を自分でディスパッチする前に評価。 |
FAQ
そもそもなぜ MCP を OrcaRouter 経由でルーティングするのか?
そもそもなぜ MCP を OrcaRouter 経由でルーティングするのか?
すべてのツール呼び出しを見る場所をひとつにするためです。ゲートウェイがなければ、
各エージェントは各 MCP サーバーに直接接続します — 共有ポリシーなし、監査トレイル
なし、SSRF 保護なし、そしてクレデンシャルがエージェント設定に散在します。
ゲートウェイはそのすべてを集中化します:ひとつの接続、ひとつのポリシー、ひとつの
監査済みログ、ディスパッチ時に注入される暗号化されたシークレット。
ブロックされた MCP 呼び出しが戻ってきたときに何が起こるか?
ブロックされた MCP 呼び出しが戻ってきたときに何が起こるか?
モデルはそれをツールエラー(
firewall deny: <reason>)として受け取ります —
任意の失敗するツールから得るのと同じ形状です。それによりエージェントは適応でき
ます — 別のアプローチを試す、ユーザーに尋ねる、あるいは停止する — トランスポート
クラッシュとして扱う代わりに。同じツールをサーバーごとに異なる方法で統制できますか?
同じツールをサーバーごとに異なる方法で統制できますか?
はい — それが
<server>.<tool> 名前空間の目的です。tool_name_glob: trusted.* を
持つルールは allow できる一方、community.* は audit されたり
pending_approval にされたりします。さらに細かいスコープのために、
スキル名グロブと組み合わせます。ゲートウェイは SSRF から保護しますか?
ゲートウェイは SSRF から保護しますか?
はい。エンドポイント URL とその解決されたダイヤル IP は、登録時とすべての
ディスパッチホップで SSRF ポリシーに対して検証されます — イントラネット範囲と
クラウドメタデータアドレスは拒否され、解決された IP は DNS リバインディングを
打ち破るために再チェックされます。ツールがどこに到達してよいかを統制するために、
egress ルールと組み合わせて
ください。
関連項目
エージェントセキュリティをさらに深く知りたいですか? エージェントを保護する(ゼロトラスト) のガイドが、この機能をゼロトラストワークフローの中に位置づけます。MCP サーバーを保護する(ゼロトラスト)
ゼロトラスト姿勢のもとで MCP サーバーを接続し、認証し、統制します。
MCP 信頼チェックリスト
サードパーティの MCP サーバーを信頼する前に検証すべきこと。
