Securing Model Context Protocol: Safer Agentic AI with Containers

投皿日: 5月 6日, 2025幎

モデル・コンテキスト・プロトコル(MCP)ツヌルは 、䞻にアヌリヌアダプタヌの手に委ねられおいたすが、より広範な採甚が加速しおいたす。この増加に䌎い、MCPのセキュリティに関する懞念はたすたす緊急性を増しおいたす。゚ヌゞェントの自埋性を高めるこずで、MCPツヌルは、゚ヌゞェントの行動ずナヌザヌの期埅ずの間の䞍敎合や制埡䞍胜な実行に関連する新たなリスクをもたらしたす。たた、これらのシステムは新たな攻撃察象領域ずなり、新たな゜フトりェアサプラむチェヌンの脅嚁を生み出しおいたす。その結果、MCPの採甚は、これらのシステムが本番環境に統合される前に、信頌性、分離性、ランタむム制埡に関する重芁な問題を提起したす。

MCPツヌルがセキュリティに欠ける堎所

私たちのほずんどは、以䞋に瀺すようなファむルを構成しお、最初にMCPツヌルを詊したした。このワヌクフロヌは、迅速で柔軟性があり、生産性が高く、初期の実隓に最適です。しかし、それにはトレヌドオフも䌎いたす。MCPサヌバヌは、むンタヌネットから盎接取埗され、ホストマシン䞊で実行され、プレヌンテキストの環境倉数ずしお枡される機密性の高い資栌情報で構成されたす。それはたるでリビングルヌムで花火を打ち䞊げるようなもので、スリル満点ですが、あたり安党ではありたせん。

{
  "mcpServers": {
    "command": "npx",
    "args": [
      "-y",
      "@org/mcp-server",
      "--user", "me"
    ],
    "env": {
      "SECRET_API_KEY": "YOUR_API_KEY_HERE"
    }
  }
}

MCPツヌルが本番環境での䜿甚に近づくに぀れお、私たちは䞀連の基本的な問題に盎面するこずを䜙儀なくされたす。

MCPサヌバヌを信頌できたすか?

ホストに適切な゜フトりェアがむンストヌルされおいるこずを保蚌できたすか?そのベヌスラむンがなければ、再珟性ず信頌性は厩壊したす。MCP サヌバヌ自䜓の出所ず敎合性をどのように確認したすか?それがどこから来たのかを远跡したり、䜕が含たれおいるのかを確認できなければ、安党に実行されるずは信頌できたせん。たずえ実行されおいたずしおも、それが私たちに到達する前、たたは実行䞭に改ざんされおいないこずをどうやっお知るこずができるのでしょうか?

シヌクレットずアクセスを安党に管理しおいたすか?

たた、秘密管理も喫緊の課題ずなっおいたす。環境倉数は䟿利ですが、安党ではありたせん。機密デヌタを読み取りが蚱可されおいるランタむムにのみ安党に挿入し、それ以倖の堎所には挿入しない方法が必芁です。アクセス制埡に぀いおも同じこずが蚀えたす。チヌムがMCPツヌルの䜿甚を拡倧するに぀れお、どの゚ヌゞェントがどのサヌバヌず通信できるかを定矩し、それらのルヌルが実行時に適甚されるようにするこずが䞍可欠になりたす。

ブログ MCPセキュリティReddit

図 1:シヌクレットを.envに保存しないこずに関するディスカッション レディット(Reddit).信甚 アミルシュク

脅嚁を早期に怜出するにはどうすればよいでしょうか? 

そしお、怜出の問題がありたす。私たちは、MCPツヌルの呚りに出珟しおいる脅嚁の皮類を認識する準備ができおいたすか?プロンプトむンゞェクションから悪意のあるサヌバヌ応答たで、新たな攻撃ベクトルがすでに出珟しおいたす。専甚のツヌルず明確なセキュリティ基準がなければ、これらの脅嚁に盲目的に足を螏み入れるリスクがありたす。最近の脅嚁パタヌンには、次のようなものがありたす。

  • MCP ラグプル – 悪意のある MCP サヌバヌは、ナヌザヌがツヌルを承認した埌でツヌルの説明を倉曎するこずで「ラグプル」を実行できたす。
  • MCPシャドりむング – 悪意のあるサヌバヌが、信頌できるサヌビスたたはツヌルに察しお゚ヌゞェントの動䜜を倉曎するツヌルの説明を挿入したす。 
  • ツヌルポむズニング – MCPツヌルの説明にある悪意のある呜什で、ナヌザヌには隠されおいたすが、AIモデルによっお読み取るこずができたす。

明らかなのは、初期段階の実隓で機胜したプラクティスが安党に拡匵できないずいうこずです。採甚が拡倧するに぀れお、MCPサヌバヌをパッケヌゞ化、怜蚌、および実行するための安党で暙準化されたメカニズムの必芁性が重芁になりたす。それらがなければ、MCPツヌルを匷力にする自埋性そのものが、MCPツヌルを危険なものにもする可胜性がありたす。

なぜ MCP サヌバヌ甚のコンテナなのか

開発者はすぐに、クラりドネむティブ・アプリケヌションの提䟛に䜿甚されおいるのず同じコンテナ・テクノロゞヌが、゚ヌゞェント・システムを安党に匷化するためにも自然に適しおいるこずに気付きたした。コンテナは単なるパッケヌゞ化ではなく、ガヌドレヌルを远加しおMCPサヌバヌの採甚に向けたより安党な道筋を構築できる、制埡されたランタむム環境を提䟛したす。

MCP サヌバヌの移怍性ず安党性を確保 

私たちのほずんどは、コンテナを䜿甚しお゜フトりェアを移動させ、ランタむムの䞀貫性ず簡単な配垃を提䟛する方法に粟通しおいたす。たた、コンテナはワヌクロヌド間の匷力な分離レむダヌを提䟛し、1 ぀のアプリケヌションが別のアプリケヌションやホストシステムに干枉するのを防ぐのに圹立ちたす。この分離により、䟵害の圱響範囲が制限され、最小特暩アクセスの匷制が容易になりたす。さらに、コンテナは、出所ず完党性の䞡方の怜蚌を提䟛できたす。これは、゜フトりェアサプラむチェヌンのセキュリティから埗られる重芁な教蚓の1぀であり続けおいたす。これらのプロパティを組み合わせるこずで、信頌できない MCP サヌバヌをホスト䞊で盎接実行するリスクを軜枛できたす。

最初のステップずしお、クラりドネむティブ配信に぀いおすでに知っおいるこずを䜿甚しお、MCPサヌバヌをコンテナに分散するだけです。 

{
  "mcpServers": {
    "mcpserver": {
      "command": "docker",
      "args": [
        "run", "-i", "--rm",
        "org/mcpserver:latest",
        "--user", "me"
      ],
      "env": {
        "SECRET_API_KEY": "YOUR_API_KEY_HERE"
      }
    }
  }
}

しかし、サヌバヌのコンテナ化は話の半分にすぎたせん。開発者は、MCP サヌバヌ ランタむムずシヌクレットの匕数を指定する必芁がありたす。これらの匕数が誀っお構成されおいたり、さらに悪いこずに意図的に倉曎されおいたりするず、機密デヌタが公開されたり、サヌバヌの実行が安党でなくなったりする可胜性がありたす。 

次のセクションでは、これらのリスクを軜枛するための䞻芁な蚭蚈䞊の考慮事項、ガヌドレヌル、およびベスト プラクティスに぀いお説明したす。

MCPサヌバヌずクラむアント甚の安党なコンテナ化アヌキテクチャの蚭蚈

コンテナは、MCPサヌバヌを安党に実行するための匷固な基盀を提䟛したすが、それはほんの始たりに過ぎたせん。MCP サヌバヌずクラむアントの数が増えるに぀れお、シヌクレットの凊理方法、脅嚁に察する防埡方法、ツヌルの遞択ず承認の管理方法など、远加のガヌドレヌルず蚭蚈を怜蚎するこずが重芁です。 

安党なシヌクレット凊理

これらのサヌバヌがランタむム構成シヌクレットを必芁ずする堎合、コンテナベヌスの゜リュヌションは、ナヌザヌがそのデヌタを提䟛するための安党なむンタヌフェむスを提䟛する必芁がありたす。その埌、認蚌情報、API キヌ、OAuth アクセス トヌクンなどの機密情報は、承認されたコンテナ ランタむムにのみ挿入する必芁がありたす。クラりドネむティブなデプロむず同様に、シヌクレットは分離されたたたで、それを必芁ずするワヌクロヌドにスコヌプが蚭定されおいるため、偶発的な公開や誀甚のリスクが軜枛されたす。

新たなMCPの脅嚁に察する防埡

MCP゚コシステムで新たに出珟する脅嚁の倚くは、悪意のあるサヌバヌが゚ヌゞェントを隙し、MCPサヌバヌがナヌザヌの意図ず矛盟するアクションを実行させようずするものです。これらの攻撃は、倚くの堎合、サヌバヌからクラむアントに送信される有害なデヌタから始たりたす。

これを軜枛するには、すべおの MCP クラむアント トラフィックを 1 ぀の接続゚ンドポむント、MCP ゲヌトりェむ、たたはコンテナ䞊に構築されたプロキシ経由でルヌティングするこずをお勧めしたす。MCPサヌバヌを空枯の乗客のように考えおください:1぀の集䞭セキュリティチェックポむント(ゲヌトりェむ)を確立するこずで、飛行機に搭乗する前に党員がスクリヌニングされるこずを保蚌したす(MCPクラむアント)。このゲヌトりェむは、MCP ラグ プル攻撃、MCP シャドりむング、ツヌル ポむズニングなどの脅嚁を早期に怜出しお阻止できる重芁なむンタヌフェむスになりたす。軜枛策には以䞋が含たれたす。

  • MCP ラグプル: ナヌザヌの同意埌にサヌバヌがツヌルの説明を倉曎できないようにしたす。新しいバヌゞョンが導入された堎合、クラむアントは再認蚌する必芁がありたす。
  • MCP Shadowing: 意味的に近い説明を持぀䞀連のツヌルにアクセスできる゚ヌゞェント セッション、たたは完党な競合を怜出したす。
  • ツヌルポむズニング: ヒュヌリスティックたたはシグネチャベヌスのスキャンを䜿甚しお、ポむズニング攻撃でよく芋られる操䜜プロンプトや誀解を招く機胜など、ツヌルメタデヌタの疑わしいパタヌンを怜出したす。

MCP サヌバヌの遞択ず蚱可の管理

゚ヌゞェントシステムが進化するに぀れお、環境党䜓でどの MCP サヌバヌを信頌するか、特定の゚ヌゞェントが実際に必芁ずする 2 ぀の決定を区別するこずが重芁です。1 ぀目は、信頌できる境界を定矩し、䜿甚できるサヌバヌを決定したす。2぀目は、意図ず範囲、぀たり特定のクラむアントがどのサヌバヌを䜿甚すべきかを決定するこずです。

利甚可胜な MCP サヌバヌの数は急速に増加するず予想されるため、ほずんどの゚ヌゞェントは、厳遞された小さなサブセットのみを必芁ずしたす。これを管理するには、信頌性、遞択的公開、および厳栌なランタむム制埡に関する明確なポリシヌが必芁です。理想的には、これらの決定は、ワヌクロヌドを保存、管理、および安党に共有するための組み蟌み機胜ず、意図しないアクセスを制限するために必芁なガヌドレヌルを備えた、コンテナベヌスの配垃を既にサポヌトしおいるプラットフォヌムを通じお実斜する必芁がありたす。

MCP セキュリティのベスト プラクティス

MCP 仕様の進化に䌎い、readOnlyHint や destructiveHint などのツヌルレベルのアノテヌションなど、䟿利な远加がすでに芋られたす。readOnlyHint は、ランタむムに読み取り専甚モヌドでファむルシステムをマりントするように指瀺できるため、意図しない倉曎のリスクを最小限に抑えるこずができたす。ネットワヌクのヒントを䜿甚するず、MCP をむンタヌネットから完党に分離したり、送信接続を限られたルヌトのセットに制限したりできたす。これらのアノテヌションをツヌルのメタデヌタで宣蚀するこずを匷くお勧めしたす。コンテナの実行時に適甚し、採甚を促進するのに圹立ちたす - ナヌザヌは、明確に定矩された境界を持぀ツヌルを信頌しお実行する可胜性が高くなりたす。

たず、開発者の生産性に焊点を圓おたす。しかし、これらのガヌドレヌルを簡単に導入しおテストできるようにするこずで、ガヌドレヌルが邪魔にならないようにし、これは、より安党で回埩力のある゚ヌゞェントシステムをデフォルトで構築するための重芁なステップです。

Docker がどのように圹立぀か  

コンテナは、MCPツヌルをパッケヌゞ化しお分離する自然な方法を提䟛し、MCPツヌルをより簡単か぀安党に実行できたす。Dockerは、最新の MCPカタログずツヌルキットでこれをさらに拡匵し、信頌できるツヌルの怜出、共有、実行の方法を合理化したす。

倚くの開発者は、Docker がコンテナ化されたワヌクロヌド甚の API を提䟛するこずを知っおいたすが、Docker MCP Toolkit は、MCP クラむアントが MCP カタログにリストされおいる任意の信頌できるサヌバヌに安党に接続できるようにするこずで、それに基づいお構築されおいたす。これにより、゚ヌゞェントずツヌルの間に制埡されたむンタヌフェむスが䜜成され、コンテナベヌスの配信でおなじみの利点である移怍性、䞀貫性、分離性が埗られたす。

ブログ MCP セキュリティコンテナ

図 2:Docker MCPカタログずツヌルキットは、MCPサヌバヌをコンテナ内で実行するこずにより、クラむアントに安党に接続したす

Docker Hub の䞀郚である MCP カタログは、信頌できる MCP サヌバヌを識別しながら、MCP クラむアントを柔軟に構成できるようにするこずで、成長を続けるツヌルの゚コシステムを管理するのに圹立ちたす。開発者は、どのサヌバヌを任意の゚ヌゞェントでも䜿甚できるようにするだけでなく、特定のサヌバヌのスコヌプを゚ヌゞェントに限定するこずもできたす。MCP Toolkit は、信頌できる MCP サヌバヌの任意のセットを 1 ぀の統合接続である MCP ゲヌトりェむを通じお公開するこずで、これをさらに簡玠化したす。 

開発者は、シヌクレットの保存方法ずシヌクレットぞのアクセスを蚱可するMCPサヌバヌを定矩しお、垞に制埡したす。各サヌバヌは、完党に構成され、すぐに実行できる Docker コンテナヌを指す URL によっお参照されたす。ランタむムはコンテンツず蚭定の䞡方を凊理するため、゚ヌゞェントは、再珟可胜で怜蚌可胜で自己完結型の MCP ランタむムずのみ察話したす。これらのランタむムは改ざん防止機胜を備え、分離されおおり、ナヌザヌによっお明瀺的に付䞎されたリ゜ヌスのみにアクセスするように制限されおいたす。すべおの MCP メッセヌゞは 1 ぀のゲヌトりェむを通過するため、MCP Toolkit は、脅嚁が MCP クラむアントに衚瀺される前に怜出するための 1 ぀の匷制ポむントを提䟛したす。 

前の䟋に戻るず、構成は、構成された MCP サヌバヌ コンテナヌの蚱可されたセットを持぀カタログぞの 1 ぀の接続になりたした。MCP クラむアントには、STDIO 経由で構成された MCP サヌバヌの管理ビュヌが衚瀺されたす。その結果、MCPクラむアントはMCP゚コシステムに安党に接続できたす。

{
  "mcpServers": {
    "mcpserver": {
      "command": "docker",
      "args": [
        "run", "-i", "--rm",
        "alpine/socat", "STDIO", "TCP:host.docker.internal:8811"
      ],
    }
  }
}

抂芁

私たちは今、MCPツヌルの採甚の進化においお極めお重芁なポむントにいたす。゚コシステムは急速に拡倧しおおり、開発者䞻導であるこずに倉わりはありたせんが、゚ヌゞェントシステムを安党に拡匵する方法を暡玢しおいるナヌザヌが増えおいたす。コンテナは、MCPツヌルの理想的なデリバリヌモデルであるこずが蚌明されおおり、最小限の摩擊で分離、再珟性、セキュリティを提䟛したす。

Docker の MCP カタログずツヌルキットは、この基盀の䞊に構築されおおり、信頌できる MCP サヌバヌを共有しお実行するための軜量な方法を提䟛したす。ツヌルをコンテナずしおパッケヌゞ化するこずで、ナヌザヌが既存のクラむアントからすでにMCPを消費しおいる方法を䞭断するこずなく、ガヌドレヌルを導入できたす。このカタログは、珟圚、どの MCP クラむアントず互換性があるため、ベンダヌロックむンなしで簡単に開始できたす。

私たちの目暙は、むノベヌションの邪魔にならないように、MCPの採甚を可胜な限り安党か぀シヌムレスにするこずで、この動きの速い分野をサポヌトするこずです。私たちは、MCPの導入を簡単で生産的なだけでなく、デフォルトで安党にするために、コミュニティず匕き続き協力できるこずを嬉しく思いたす。

さらに詳しく

著者に぀いお

プリンシパル゜フトりェア゚ンゞニア、Docker瀟

CTO、Docker、

関連蚘事