ルール
マッチング言語 — ツールグロブ、引数句、egress リスト、サニタイザ、
シーケンス。
MCP サーバー
Model Context Protocol サーバーを単一の監査済みゲートウェイの背後で登録し
統制します。
スキル
エージェントがインストールするケイパビリティを、実行できるようになる前に
スキャンしリスクスコアリングします。
1. ファイアウォールとは
AI エージェントは単にテキストを生成するだけではありません — アクションを取るの です。shell.exec を呼び出し、db.query をクエリし、URL を取得し、コミュニティ
スキルをロードし、あるいはサードパーティの MCP サーバー経由でツール呼び出しを
ルーティングします。これらのそれぞれが現実世界に影響を及ぼすアクションであり、
プロンプトレベルのガードレールはそれらを見ることができません。
ファイアウォールは、ゲートウェイがすべてのツール呼び出しで評価する
ワークスペーススコープの名前付きポリシーです。ポリシーを一度作成し、API キーを
それにアタッチするか(あるいはワークスペースデフォルトに設定し)、それ以降は
そのキーが発行するすべてのツール呼び出しが — ツールに到達する前に —
ポリシーに対してチェックされます。
各ポリシーは順序付けられたルールのリストです。ルールはひとつのことを決定します
— どのツール呼び出しに適用されるか(ツール名グロブ。オプションでスキルや強制
サーフェスにスコープされます)とそれにどう対処するか(判定:allow、audit、
deny、sanitize、承認のための保留、またはコスト上限)。エンジンは優先度順に
ルールを辿り、最初にマッチしたものが勝ち、何もマッチしなければポリシーの
デフォルト判定にフォールバックします。
ポリシーを編集すると、それにアタッチされたすべてのキーが次の呼び出しで
反映されます。再デプロイ不要。エージェントのコード変更不要。ポリシーは
ゲートウェイで強制されます — エージェントは以前と全く同様にツール呼び出しを
発行し続けます。
検出はゲートウェイで、初回使用時に行われます。 ファイアウォールは
LLM リレーパス上に位置し、エージェントのパッケージマネージャやファイルシステムの
内部にはありません。エージェントが自己インストールしたツール、MCP サーバー、
スキルは、その呼び出しが初めてゲートウェイを横切ったときに捕捉されます — インストール
時ではありません。これは意図的なものです:ケイパビリティがどのようにそこへ
到達したかに関わらず、すべてのプロバイダ、すべてのエージェント、すべての
ツール呼び出しを見る唯一のチョークポイントなのです。
2. 4 つの強制サーフェス
すべてのツール呼び出しは、ちょうどひとつのサーフェス — ファイアウォールが それを見るリクエストライフサイクル上のポイント — に対して評価されます:| サーフェス | 何を見るか |
|---|---|
inbound | エージェントがリクエストでモデルにアドバタイズするツール(ツール定義)。モデルがそれを選択する前に、危険なツールをブロックできます。 |
response | モデルがその返信で発行する tool_calls。 |
mcp | ファイアウォール MCP ゲートウェイ経由でディスパッチされるか、SDK フック経由で評価される tools/call。 |
egress | ツールが報告するアウトバウンドのネットワーク宛先(host / IP / CIDR) — SSRF とデータ持ち出しのサーフェス。 |
3. コアコンセプト
| 概念 | 定義 |
|---|---|
| ポリシー | 名前付きの、ワークスペーススコープのルールセット。enabled、is_default、default_verdict、そして shadow_mode フラグを持ちます。 |
| ルール | ポリシー内のひとつのチェック:優先度、ツール/スキルマッチ、オプションのサーフェス、オプションの引数述語、そして判定。ルールを参照。 |
| 判定 | ルール(またはデフォルト)が生成するアクション — §4 を参照。 |
| デフォルト判定 | どのルールもマッチしないときに適用されます。allow、audit(デフォルト)、deny のいずれか。 |
| シャドウモード | ポリシーは評価しログを取りますが、決してブロックしません — すべての強制判定が audit に格下げされ、理由には [shadow] would … が前置されます。安全なロールアウトのスイッチです。 |
| 観察モード | ワークスペースレベルの設定。リクエストがどのポリシーにも解決されず観察モードがオンの場合、呼び出しは許可されますがカバレッジのギャップとしてログされます — これが Discovered-tools ビューを満たすものです。 |
スコープと解決
ポリシーはガードレールや API キーと全く同様に解決されます:アクティブな ワークスペースがある場合はワークスペース共有です。任意のツール呼び出しについて、 ゲートウェイはこの順序でポリシーを解決します:- キーアタッチメント — 呼び出し元のキーに
firewall_policy_idがある場合、 そのポリシーが適用されます(存在し有効である場合)。 - ワークスペースデフォルト — それ以外の場合、ワークスペースの有効な
is_defaultポリシーが適用されます。 - どちらもなし — 強制なし。観察モードがオンの場合、呼び出しは許可され ギャップとしてログされます;オフの場合、呼び出しはサイレントに許可されます (この機能を一度も有効化していないワークスペースとバイト単位で同一です)。
未知のものにはフェイルオープン、曖昧なものにはフェイルクローズ。 ポリシー
解決が一時的なエラーに遭遇した場合、ゲートウェイはトラフィックを止めるのではなく
observe/allow に劣化します。しかし強制しないことがルールを無効にしてしまう
場合 — 使用可能な宛先のない egress レポート、到達不能な承認ストア、所有権を
解決できないスキル — エンジンはフェイルクローズします(deny または hold)。
可用性は維持されます;重要なケースで安全性がサイレントにスキップされることは
ありません。
4. 判定
ルール(またはデフォルト判定)は次のいずれかを生成します:| 判定 | 何をするか |
|---|---|
allow | 呼び出しを通します。ログされます。 |
audit | 許可しますが、レビュー用に記録します。デフォルトの default_verdict です — 準備ができるまで、すべてを観察し、何もブロックしません。 |
deny | 呼び出しをブロックします。エージェントはツールエラー(または inbound サーフェスでは HTTP 400)を見ます。 |
sanitize | マッチした部分文字列をツールの引数からリダクトし(シークレット、PII)、クリーニングされた呼び出しを転送します。サニタイザを参照。inbound サーフェスでは — まだ呼び出し時の引数がないため — sanitize はブロックにエスカレートします。 |
pending_approval | 人間のために呼び出しを保留します。エージェントは「保留中」のレスポンスを受け取ります;レビュアーが帯域外で承認または拒否します;エージェントは単回使用の承認トークンで再送信します。§7 を参照。 |
cap_cost | エージェント実行の累積支出がルールごとのセント上限を超えたら deny します。暴走ループのためのサーキットブレーカーです。 |
deny / sanitize / pending_approval はすべて audit に
格下げされるため、ポリシーがトラフィックを変える前にその影響を測定できます。
5. ツール呼び出しがどう評価されるか
- ツール呼び出しがゲートウェイに到達します(inbound でアドバタイズされる、 レスポンスで発行される、MCP ゲートウェイ経由でディスパッチされる、または egress として報告される)。
- エンジンはアクティブなポリシーを解決します(§3)。
- 優先度順にポリシーのルールを辿ります(低い優先度が先;同点はルール id で 解決)。ルールは、そのサーフェス、ツール名グロブ、オプションのスキル名グロブ、 オプションの引数句、そしてオプションの egress スコープがすべてマッチした ときにマッチします。
- 最初にマッチしたものが勝ち → そのルールの判定が適用されます。どのルールも
マッチしなければ → ポリシーの
default_verdict。 - 呼び出しが統制されたスキルによって所有されている
場合、スキルの強制モードがその上に適用されます —
blockモードのスキルは deny を 強制し、quarantineモードのスキルは deny 未満のものをpending_approvalに エスカレートします。 - 決定はファイアウォールイベントとしてログされ(ドライランでない限り)、エージェント 実行とセッションに相関付けられます。
6. ブロックがどう見えるか
inbound サーフェスで拒否された呼び出しは、OpenAI 形式のエラーボディ、 エラーコードfirewall_blocked、そしてツールと理由を示すメッセージとともに
HTTP 400 を返します — 例:tool "shell.exec" blocked by firewall: destructive shell command。エラーは構造化された metadata(理由コード、リスク要因、スコア)を
持ち、skip-retry とマークされます(同じ呼び出しを再実行してもまたブロックされる
だけです)。
MCP ゲートウェイ経由でディスパッチされた呼び出しは、トランスポート障害では
なくツールエラー(firewall deny: <reason>)としてブロックされるため、モデルは
拒否を見て反応できます — 別のツールを選ぶ、ユーザーに尋ねる、あるいは停止する —
クラッシュする代わりに。
保留された呼び出し(pending_approval)は、コード firewall_approval_pending と、
クライアントがポーリングする承認 id とともに HTTP 400 を返します。
7. 人間による承認(HITL)
pending_approval 判定は、ツール呼び出しを帯域外のレビューに変えます:
- エンジンは承認レコードをエンキューし、その id を持つ「保留中」のレスポンスを 返します;呼び出しはツールに到達しません。
- レビュアーがそれを解決します — コンソールから(Developer+)、あるいは独自の 承認システムへの HMAC 署名付き webhook コールバック経由で。
- エージェント(または MCP SDK)が承認 id をポーリングします;承認されると、
単回使用の
X-OrcaRouter-Firewall-Approvalヘッダーとともに元の呼び出しを 再送信し、ゲートウェイはその一度限り通します。
rule_changed を記録するため、レビュアーはコンテキストが
変わったことを知ることができます。
8. 自律性レベル — 姿勢全体のためのひとつのスイッチ
ポリシーをルールごとにチューニングするのは精密な道です;自律性レベルは 高速な道です。単一のコントロールが、ワークスペースのファイアウォールおよび ガードレールの姿勢を、ワンクリックの取り消しとともに、ひとつのトランザクションで アトミックに置き換えます:| レベル | 姿勢 |
|---|---|
tight | 破壊的シェル、引数内のシークレット、SSRF egress をブロック(デフォルト deny);PII Shield + Secrets Blocker ガードレールをオン;観察モードオフ。 |
balanced | 破壊的シェルを audit、PII を flag;観察モードオフ。推奨される開始姿勢です。 |
permissive | 強制ポリシーなし、ガードレールなし;観察モードはオンなので、依然としてすべてを見られます。 |
9. 異常検出
静的なルールを超えて、ファイアウォールは各ワークスペースの通常のツール使用の形状を 学習し、逸脱をビューア可読のフィードでフラグします:- レート / コストのスパイク — ツールごとのアクティビティが学習された
曜日内時間ベースライン(14 日間の移動平均)に対してスコアリングされるため、
「日曜午前 3 時の 100 回の
db.query呼び出し」は、各呼び出しが個別には許可される 場合でも際立ちます。 retry_loop— エージェントが同じ失敗するツールを叩き続けている。novel_path— このワークスペースがこれまで一度も行ったことのない ツール間遷移。
10. 可観測性
ファイアウォールは、対処可能なトレイルを残します。すべてワークスペーススコープです:| サーフェス | 何を提供するか |
|---|---|
| Events | すべての評価。判定、サーフェス、ツール、実行、セッションでフィルタ可能。他のすべての背後にある生のレコード。 |
| Runs & sessions | エージェント実行または会話ごとにロールアップされたイベント — 判定の内訳、個別のツールとモデル、初回/最終の観測。「このエージェントが実際に何をしたか」のビュー。 |
| Discovered tools | ワークスペースが見たすべてのツール。covered(ルールが適用される)または gap(何も適用されない)とフラグされます。実トラフィックからのポリシー作成を駆動します。 |
| Simulate | 自律性レベルを適用する前に、それが何を変えるかをプレビューします。 |
| Test | サンプルのツール呼び出しに対してポリシーをドライランし、判定、マッチしたルール、理由を確認します — 何も永続化されず、何もディスパッチされません。 |
| Audit | すべてのポリシー、ルール、設定の変更は、変更がコミットされた後に監査行を書き込みます(ワークスペース + セントラル)。シークレットとルールブロブは決してログされません。 |
11. ゲートウェイの他部分との関係
| 面 | ファイアウォールとどう組み合わさるか? |
|---|---|
| ガードレール | 補完的なプレーンです。ガードレールはプロンプト/レスポンスのテキストをスクリーニングし、ファイアウォールはツールのアクションを統制します。両方を 1 つのリクエストに適用できます。自律性レベルは両方を一度に設定します。 |
| ルーティング | 独立しています。ルーティングはモデル/チャネルを選びますが、ファイアウォールはどのモデルが処理したかに関わらずツール呼び出しを判断します。 |
| API キー | キーは firewall_policy_id を介してポリシーにアタッチされます;バインディングはゲートウェイのキー上にあります。アタッチメントがなければワークスペースデフォルトにフォールバックします。 |
| MCP ゲートウェイ | ファイアウォールが MCP ゲートウェイそのものです — 登録したすべてのサーバーは、その tools/call をエンジン経由でディスパッチします。 |
| スキル | 統制されたスキルの強制モードはルール判定の上に乗るため、隔離されたスキルは、どのルールもそのツールを名指ししなくても保留されます。 |
12. エージェントをファイアウォールゲートウェイに接続する
ツール呼び出しがエンジンに到達する方法は 2 つあります:- MCP ゲートウェイ — MCP クライアント(Claude Desktop、Cursor、エージェント
フレームワーク)を
https://api.orcarouter.ai/api/v1/firewall/mcpに向けます。 ゲートウェイは到達可能なすべての登録済みサーバーのツールを<server>.<tool>で 名前空間化して公開し、各tools/callをインラインで評価します。 MCP サーバーを参照。 - Evaluate フック — ツール呼び出しをディスパッチする前に、独自のエージェント
ループから
POST /api/v1/firewall/evaluateを呼び出し、判定に応じて動作します。
403 を
受け取ります。
13. API リファレンス
すべてのコンソールルートはワークスペースコンテキストを介してワークスペース スコープされ、RBAC を一貫して強制します:読み取りと test/simulate サンドボックスは すべてのメンバーに開放、書き込みは Developer+ が必要です。ポリシーと設定
| メソッドとパス | ロール | 目的 |
|---|---|---|
GET /api/workspace/firewall/settings | Member | ワークスペースのファイアウォール設定を読み取り(観察モード、デフォルト)。 |
PUT /api/workspace/firewall/settings | Developer+ | 設定を更新。 |
GET /api/workspace/firewall/policies | Member | ポリシー一覧(ルール数 + アタッチ済みキー数つき)。 |
GET /api/workspace/firewall/policies/:id | Member | 単一ポリシー詳細。 |
POST /api/workspace/firewall/policies | Developer+ | ポリシーを作成。 |
PUT /api/workspace/firewall/policies | Developer+ | ポリシーを更新。 |
DELETE /api/workspace/firewall/policies/:id | Developer+ | ポリシーを削除(キーがまだアタッチされている場合は 409)。 |
姿勢、プリセット、サンドボックス
| メソッドとパス | ロール | 目的 |
|---|---|---|
GET /api/workspace/firewall/presets | Member | 組み込みルールプリセット。 |
POST /api/workspace/firewall/autonomy | Developer+ | 自律性レベルを適用。 |
POST /api/workspace/firewall/autonomy/undo/:audit_id | Developer+ | 自律性の変更を取り消し。 |
GET /api/workspace/firewall/simulate | Member | 自律性レベルをプレビュー(?level=)。 |
POST /api/workspace/firewall/test | Developer+ | サンプルのツール呼び出しに対してポリシーをドライラン。 |
可観測性
| メソッドとパス | ロール | 目的 |
|---|---|---|
GET /api/workspace/firewall/discovered-tools | Member | 見たツール、covered / gap とフラグ。 |
GET /api/workspace/firewall/events | Developer+ | ファイアウォールイベント一覧(フィルタ可能)。 |
GET /api/workspace/firewall/events/by-request/:request_id | Developer+ | 1 つのリクエストのイベント。 |
GET /api/workspace/firewall/events/aggregate | Developer+ | Runs / sessions ロールアップ。 |
GET /api/workspace/firewall/trace/by-run | Developer+ | 実行のトレースノード(?run_id=)。 |
GET /api/workspace/firewall/anomalies | Member | 異常フィード(?window=)。 |
POST /api/workspace/firewall/anomalies/snooze | Developer+ | 異常フィードをスヌーズ。 |
ゲートウェイ(マシン間)
これらはコンソールセッションではなく、ファイアウォールゲートウェイスコープの トークン上で動作します:| メソッドとパス | 目的 |
|---|---|
POST /api/v1/firewall/evaluate | 1 つのツール呼び出しに対するディスパッチ前の判定。 |
POST /api/v1/firewall/evaluate_plan | マルチステッププランの実行前チェック。 |
ANY /api/v1/firewall/mcp | 統合された MCP ゲートウェイエンドポイント。 |
GET /api/v1/firewall/approvals/:id | 保留された呼び出しの承認状態をポーリング。 |
POST /api/v1/firewall/approvals/:id/callback | HMAC 署名付き承認コールバック。 |
14. FAQ
ツール呼び出しでポリシーが解決されなかった場合は?
ツール呼び出しでポリシーが解決されなかった場合は?
観察モードオフの場合、挙動は機能を一度も有効化していないワークスペースと
バイト単位で同一です — 何もブロックもログもされません。観察モードオンの
場合、呼び出しは許可されますがカバレッジギャップとして記録されるため、
Discovered tools に表示されます。
ポリシーを安全にロールアウトするには?
ポリシーを安全にロールアウトするには?
シャドウモードをオンにします。ポリシーは本番と全く同様に評価しログを
取りますが、すべての強制判定が
audit に格下げされ、理由には
[shadow] would … が前置されます。events と runs ビューを監視し、期待どおりの
ものに発火し、そうでないものには発火しないことを確認してから、シャドウモードを
オフにして強制を開始します。ブロックされたツール呼び出しはクォータを消費しますか?
ブロックされたツール呼び出しはクォータを消費しますか?
inbound ブロックはアップストリームのモデル呼び出しの前に発火するため、モデル
トークンを消費しません。audit / allow 判定は課金を変えません。
cap_cost ルール
はそれ自体が課金コントロールです — 実行の支出がセント上限を超えたら deny します。ファイアウォールかガードレールか — どちらを使う?
ファイアウォールかガードレールか — どちらを使う?
両方を、異なる層に対して。ガードレールはプロンプトとレスポンス内のテキストを
スクリーニングします(PII、シークレット、jailbreak)。ファイアウォールは
エージェントが取るアクションを統制します(どのツール、どの MCP サーバー、どの
ホスト)。リクエストは両方を通過できます。
tight 自律性レベルはそれらを一緒に
構成します。エージェントが実行するすべてのツールに対して強制は保証されますか?
エージェントが実行するすべてのツールに対して強制は保証されますか?
ファイアウォールはゲートウェイを横切るツール呼び出しに対して強制します —
リレーパス、MCP ゲートウェイ、そして evaluate フックです。エージェントが
完全に自身のプロセス内で実行し、ゲートウェイに一度も触れないツールは、
ファイアウォールの視界の外です。設計目標は、重要な呼び出し(モデル媒介の
ツール、MCP ディスパッチ、ネットワーク egress)にとってゲートウェイを単一の
監査済みパスにすることです;それらをそこ経由でルーティングすれば、統制されます。
関連項目
エージェントセキュリティをさらに深く知りたいですか? エージェントを保護する(ゼロトラスト) のガイドが、この機能をゼロトラストワークフローの中に位置づけます。エージェントを保護する(ゼロトラスト)
ゼロトラストのエージェントファイアウォールプレイブック — ツール許可リスト、引数チェック、egress 制御。
セキュアエージェント ベースライン
ファイアウォールとガードレールの姿勢を一緒に設定するひとつのスイッチ。
