MCPトンネルのセキュリティ
MCPトンネルのデプロイメントにおけるハードニングのガイダンス、認証情報のローテーション、侵害への対応、および撤去について説明します。
トンネルアーキテクチャは強力なデフォルト(アウトバウンドのみの接続、エンドツーエンドの暗号化、IP検証)を提供しますが、トンネルスタック全体のセキュリティは、その構成方法と運用方法にも依存します。このページでは、推奨されるハードニング、侵害への対応、およびトンネルの廃止方法について説明します。
ベストプラクティス
- すべてのMCPサーバーでOAuthを必須にする。 MCP認可仕様に記載されているとおり、各アップストリームMCPサーバーがOAuthを必須とするように構成します。OAuthは、トンネルのトランスポート認証に加えて多層防御を提供し、データレイヤーでのユーザーレベルの認可を可能にします。
- 組織でSSOを有効にする。 トンネル、フェデレーションルール、サービスアカウントはClaude Consoleで管理されます。SSOは、これらを変更できる管理者に対して、IDプロバイダーのセッション制御を適用します。
upstream.allowed_ipsを制限する。 MCPサーバーをカバーする最小のCIDR範囲を使用します。これはプロキシの主要なSSRF防御です。- ログを監視する。 トンネルスタックからの警告、エラー、および異常なトラフィックパターンに対してアラートを設定します。
- 認証情報をローテーションする。 サーバー証明書とトンネルトークンを定期的なスケジュールでローテーションし、侵害が疑われる場合は直ちにローテーションします。
- イメージを最新に保つ。 新しいプロキシのリリースを追跡し、イメージをSHA-256ダイジェストで固定します。
- ネットワークの到達範囲を制限する。 プロキシとcloudflaredは、ネットワーク要件に記載されている宛先にのみ到達できるようにします。NetworkPolicy(Kubernetes)またはホストのファイアウォールルール(Compose)を使用します。
- MCPサーバーのスコープを制限する。 各サーバーは、その目的に必要なツールとデータのみを公開するようにします。
- 保存時の認証情報を保護する。 秘密鍵とトンネルトークンに、組織のシークレット管理のプラクティスを適用します。
侵害が疑われる場合の対応
トンネルトークン、TLSキー、またはプロキシホストが侵害されたと思われる場合は、次の手順に従います。
トンネルスタックを停止する
helm uninstall mcp-tunnel -n mcp-tunnelアップストリームMCPサーバーを切り離す
アップストリームMCPサーバーを使用しているすべてのManaged Agentセッションからそれらを削除し、Messages APIリクエストの
mcp_serversブロックでそれらのURLを渡すのをやめます。トンネルをアーカイブする
アーカイブすると、トンネルトークンが無効になり、ドメインが切り離されます。Consoleで、MCP tunnelsリストからトンネルをアーカイブします。代わりにAPI経由でアーカイブする場合は、トンネルをアーカイブするを参照してください。
Anthropicに連絡する
疑われる侵害をAnthropicサポートに報告します。
ダウンストリームの認証情報をローテーションする
新しいトンネルを再プロビジョニングし、影響を受けたMCPサーバーが発行したOAuthトークンをすべてローテーションします。
サービスを復旧する前にログを確認する
新しいトンネルをオンラインにする前に、侵害が疑われる期間のプロキシ、cloudflared、およびMCPサーバーのログを調査します。
トンネルを撤去する
トンネルを廃止し、保存されているすべての認証情報を削除するには、次の手順に従います。
トンネルスタックを停止する
helm uninstall mcp-tunnel -n mcp-tunnelトンネルをアーカイブする
Consoleで、MCP tunnelsリストからトンネルをアーカイブします。
保存されている認証情報を削除する
プログラムによるアクセスを使用した場合、セットアップコンポーネントはリリース名にちなんだ単一のSecretを作成しています。プログラムによるアクセスを使用しなかった場合は、
mcp-tunnel-tokenとmcp-tunnel-certを自分で作成しています。該当するものを削除します。kubectl -n mcp-tunnel delete secret \ mcp-tunnel mcp-tunnel-token mcp-tunnel-cert \ --ignore-not-found
Was this page helpful?