1. なぜ MCP エージェントをセキュアにするのか
エージェントを 5 つの MCP サーバーへ直接向けると、5 つの信頼境界、5 つの クレデンシャルストア、そしてゼロの共有監査証跡を持つことになります。顧客レコードを 読むtools/call と、シェルコマンドを実行するものは、モデルには同一に見え、
コミュニティサーバーは初めてロードされるときに shell.exec と外部ネットワークスコープを
ひっそり要求し得ます。
修正は、OrcaRouter をすべての呼び出しが横切る唯一のチョークポイントにすることです。
MCP エージェントのトラフィックをエンドツーエンドでセキュアにするには、すべての
MCP ディスパッチをファイアウォールの MCP ゲートウェイ経由で
ルーティングし、すべての tools/call が実サーバーに到達する前にポリシー評価される
ようにします — スキルはリスクスコアリングされ、egress は統制され、クレデンシャルは
保存時に暗号化されます。
2. Secure Agents ベースラインから始める
あつらえのものを作成する前に、姿勢を設定します。コンソールで Firewall → Posture を開き、balanced 自律性レベルを
適用します(Developer ロール)。ひとつのトランザクションで、最も破壊的なアクションを
deny しながらツール呼び出しを audit し、PII を flag します — 広く強制する前に観察し、
ワンクリックの取り消しを持ちます。
Events と Runs フィードが正しく見えたら、
tight に移ります:デフォルト deny、破壊的シェル deny、SSRF 形の egress deny、
加えて PII Shield と Secrets Blocker ガードレールの強制。その単一のスイッチが、
このレシピが構築する土台です。
3. すべての tools/call を 1 つの MCP ゲートウェイ経由でルーティングする
各 MCP サーバーを一度登録します;ゲートウェイは単一の接続の下にそれらのツールを集約し (<server>.<tool> で名前空間化)、すべての tools/call をファイアウォールエンジン
経由で実行します。
コンソール(または REST API、Developer+)からサーバーを登録します:
github.create_issue と shell.exec が 1 つの接続の下に並んで現れ、各
ディスパッチは実行前に評価されます。ブロックされた呼び出しは、トランスポートの
クラッシュではなくツールエラー(firewall deny: …)としてモデルに返ってくるため、
エージェントは適応できます。
サーバーのツールに対してルールを書けるようになる前に、それをプローブしてツール名と
スキーマを発見します:
4. エージェントが取り込むスキルを quarantine する
MCP ゲートウェイは呼び出しを統制します;スキルガバナンスはエージェントがロードする ケイパビリティを統制します。インストール可能なすべてのスキル、BYO MCP サーバー、 あるいはプラグインは、すべてのルール判定の上に乗るリスクバンドと強制モードへスキャン されます:| モード | 実行時の効果 |
|---|---|
allow | ルール判定が決定します;スキルは何も追加しません。 |
quarantine | deny 未満のものは pending_approval のために保留されます。 |
block | スキルのツールは強制的に deny されます。 |
5. SSRF 形の egress を deny する
侵害された、あるいは混乱した MCP ツールがクラウドメタデータやイントラネットホストへ 到達するのは、典型的な持ち出しの道です。2 つのレイヤーがそれをカバーします。 第一に、ゲートウェイは、登録時と各ディスパッチホップで、すべてのリモート MCP エンドポイントとその解決済みダイヤル IP を SSRF ポリシーに対して検証します — イントラネット範囲とクラウドメタデータアドレスは拒否され、DNS リバインディングを 打ち破るために再チェックされます。これは組み込みです;あなたが設定する必要は ありません。 第二に、tight 自律性レベルは、fetch 形のツール名 — http_fetch、
web_search、fetch_url、request、およびそれらの <server>.* 名前空間化された
形 — を deny する SSRF egress プリセットを出荷します。つまり、仕事全体が
「この URL を取りに行く」というツールは、ダイヤルする前に止められます。
ツールが宛先別に到達してよい場所を統制するには、host/CIDR deny リストを持つ独自の
egress ルールを作成します — それがアウトバウンドリーチを固定するためのサーフェス
です:
CIDR egress ルールを出荷するプリセットはありません — SSRF プリセットは宛先ではなく
ツール名にマッチします。宛先レベルの制御が必要なときは、host/CIDR deny リストを
自分で作成してください。
egress リストと
持ち出しを止めるを参照。
6. サーバークレデンシャルを暗号化したまま保つ
すべての MCP サーバーのauth_json は保存時に暗号化され、読み取り時にマスクされます;
ゲートウェイはディスパッチ時にクレデンシャルを注入するため、モデルやクライアントには
決して届きません。サポートされる auth_mode 値:
bearer
bearer
{ "token": "…" } — 静的なベアラートークン、Authorization: Bearer として
送信されます。oauth
oauth
{ "client_id": "…", "client_secret": "…", "token_url": "…" } —
client-credentials OAuth;ゲートウェイがトークンを取得しリフレッシュします。basic
basic
{ "username": "…", "password": "…" } — HTTP Basic 認証。none
none
"" — 認証なしのサーバー。デフォルト。status(ok / degraded / down)は、依存する前に到達可能か
どうかを教えてくれます。
7. リクエストにコンテンツガードレールを追加する
ファイアウォールはアクションを統制します;MCP エージェントを通って動くテキストも スクリーニングされるように、ガードレールと組み合わせます。 Secrets Blocker プリセットは、モデル — あるいはどのツール — も見る前に、リクエスト内のクレデンシャルを 捕捉し、PII Shield は入ってくる 途中で識別子をマスクします。どちらもtight 自律性レベルでオンになるか、guardrail_id
経由で名前付きガードレールをエージェントのリレーキーにアタッチします。
8. 検証して監視する
信頼する前にポリシーが期待どおりに動くことを確認し、それからフィードに目を配ります:ツール呼び出しをテストする
あなたのポリシーに対してサンプルの
tools/call をドライランし、判定、マッチした
ルール、理由を見ます — 何もディスパッチされず、何もログされません。Discovered tools
ワークスペースが見たすべてのツール、covered または gap とフラグ — 実 MCP
トラフィックからまっすぐルールを作成します。
Events & Runs
すべてのディスパッチ、その判定、そしてそれが当たったサーフェスを、エージェント
run ごとにロールアップ。
異常フィード
学習されたベースラインに対するレート/コストのスパイク、リトライループ、そして
新規のツールパス。
9. 次に進む先
MCP ツールポイズニング
quarantine と MCP ゲートウェイの背後にある脅威モデル。
過剰なエージェンシー
自律的なツール使用にとってデフォルト deny と HITL がなぜ重要か。
自律エージェントのレシピ
高自律性エージェントをエンドツーエンドで強化します。
持ち出しを止める
アウトバウンドの egress を深くロックダウンします。
