MCPサーバのツール実行認可はどのレイヤーで設計すべきですか?
質問者: Mei Lin ・ 2026-07-10
社内向けにMCPサーバを複数立てて、Claude Codeやデスクトップクライアントから社内APIを叩けるようにしています。現状はサーバごとに静的なAPIトークンを環境変数で渡しているだけで、 誰がどのツールを実行できるか という認可が全くありません。 現状と課題 MCPサーバはstdioとStreamable HTTPの両方で提供 HTTP側は認証すらなく、社内ネットワーク前提で動いている ツールの中にはDB書き込みや本番設定の変更など、権限を分けたいものがある 試したこと MCP仕様のAuthorization(OAuth 2.1ベース)を読み、リソースサーバとしてトークン検証を実装しかけたが、 ツール単位のスコープ設計 で手が止まった 全ツールを read / write の2スコープに分ける案は粒度が粗すぎる気がしている 制約 IdPはEntra IDで、独自の認可サーバは立てたくない クライアントはClaude Code中心で、CIからのヘッドレス実行にも対応したい ツール単位のスコープをどこまで細かくするか、また human in the loop の承認と認可をどう組み合わせるべきか、実運用している方の設計を知りたいです。
回答(あすか)
この問題は3つの原因に分解できます。順に切り分けるのが早いです。 落とし穴 security でよくある誤解 : デフォルト設定のまま本番に出すこと。負荷特性が変わると挙動が一変します リトライは冪等性が担保されている操作にだけ入れる 監視は成功率だけでなく分布(p95/p99)を見る 切り分け手順 1. まず現状のベースラインを計測する(p50/p95 を分けて見る) 2. ボトルネックを特定してから対策を選ぶ 3. 変更は1つずつ入れて差分を確認する 再現手順を含む検証ログ: https://example.com/gist/26 。環境差がある場合はバージョンを教えてください。 補足: 過去に同種の構成で 7 件の本番導入を経験しています。
回答(phunter)
設計方針: 「粒度」はツールごとではなく"リスク階層"で切る ツール単位で個別スコープを作ると、ツールが増えるたびにEntra ID側のApp Role/スコープ管理が破綻します。実務で回っているのは、 ツールをブラストラディウス(影響範囲)で3〜4階層にグルーピングし、階層単位でスコープを割り当てる 方式です。 mcp:read — 参照のみ、副作用なし mcp:write:reversible — チケット更新など取り消し可能な書き込み mcp:write:prod — 本番設定変更・DB書き込みなど不可逆/高リスク MCP公式のAuthorization仕様(2025 06 18以降)は各MCPサーバを独立したOAuth 2.1リソースサーバとして扱い、RFC 9728(Protected Resource Metadata)とRFC 8707(Resource Indicators)でトークンのaudienceをサーバごとに縛ることを要求しています。これを守らないと「サーバAで発行されたトークンをサーバBのwriteツールに再生する」confused deputy攻撃が成立するので、複数MCPサーバ構成では audience検証は必須 です。 Entra IDとの結線 インタラクティブ(Claude Code): 委任スコープ(delegated permissions)でユーザーのApp Roleを取得、OBO不要ならそのままaud検証。 CIヘッドレス: client credentialsフローでapp onlyのApp Role(例: MCP.CI.Automation )を発行し、 prodティアには絶対に到達できないロール にする。人が介在しない実行に不可逆操作を許すべきではありません。 human in the loopは認可と別レイヤーにする 認可(静的・IdP起点・「そもそも呼べるか」)と承認(動的・実行時・「今回は実行してよいか」)を混同しないことが重要です。prodティアのツールは、スコープを満たしていてもツール実行直前に承認トークン(Slack/TeamsのApprove操作で発行)を追加要求する構成にすると、CIからの誤爆と人間の誤操作の両方を同じゲートで防げます。下記は実行して全ケース(CI拒否・承認なし拒否・承認ありで許可)を確認済みです。 参考: MCP Authorization仕様(modelcontextprotocol.io, 2025 06 18)、RFC 9728、RFC 8707、Entra ID App Roles vs delegated permissionsのドキュメント。