Slide 1

Slide 1 text

1 MCPの認証と認可 MCP Meetup Tokyo 株式会社メルカリ Hiroki Akamatsu

Slide 2

Slide 2 text

2 ⾃⼰紹介 Hiroki Akamatsu @hi120ki 株式会社メルカリAI Security Team所属 ● 外部AIツールのセキュリティレビュー ● 安全な利⽤⽅法やガイドライン策定 ● 社内のAIの取り組みのセキュリティ確保 ● Platform(クラウド‧GitHub等)整備 ● 社内LiteLLM基盤構築

Slide 3

Slide 3 text

3 MCPサーバーのセキュリティ 様々なベストプラクティスが提唱 ● Security Best Practices - 公式MCP仕様 ● 利⽤者⽬線で考える、MCPを安全に使うために - GMO Flatt Security ● Research Briefing: MCP Security - Wiz Blog → ローカルではなくリモートMCPサーバーの利⽤が推奨 実際にサービス公式からリモートMCPサーバーが提供開始 ● Atlassian MCP Server ● Notion MCP Server ● Linear MCP Server

Slide 4

Slide 4 text

4 リモートMCPサーバーのメリット ✅ 設定ファイルにアクセストークンが不要 ✅ ユーザーごとの動作バージョンが統⼀ ✅ 組織内での利⽤状況の可視性の向上

Slide 5

Slide 5 text

5 新たな動き 複数のサービスにまたがる処理をMCP化したい 公式のMCPサーバーが公開されていない 公式のMCPサーバーにない機能がほしい 社内の独⾃システムに接続したい → 内製のMCPサーバー開発の機運

Slide 6

Slide 6 text

6 MCPサーバーのセキュリティ 内製のMCPサーバー開発の機運 → とりあえずローカルMCPサーバーを開発 ❌ 設定ファイルにアクセストークンがハードコード ❌ ユーザーごとに動作バージョンが混在 ❌ 組織内での利⽤状況の可視性の不⾜ 公式の認可仕様を満たしURLのみで接続できる 内製リモートMCPサーバー開発に期待 → 公式の認可仕様の「現在地」を確認

Slide 7

Slide 7 text

7 リモートMCPサーバーの認可の動き 1. MCPクライアントにMCPサーバーのURLを追加し有効化 Atlassian MCPを利⽤

Slide 8

Slide 8 text

8 リモートMCPサーバーの認可の動き 1. MCPクライアントにMCPサーバーのURLを追加し有効化 2. ブラウザが⽴ち上がり、サービスにログイン

Slide 9

Slide 9 text

9 リモートMCPサーバーの認可の動き 1. MCPクライアントにMCPサーバーのURLを追加し有効化 2. ブラウザが⽴ち上がり、サービスにログイン 3. MCPクライアントに許可する権限の範囲を確認し承認

Slide 10

Slide 10 text

10 リモートMCPサーバーの認可の動き 1. MCPクライアントにMCPサーバーのURLを追加し有効化 2. ブラウザが⽴ち上がり、サービスにログイン 3. MCPクライアントに許可する権限の範囲を確認し承認 4. MCPサーバーが利⽤可能に

Slide 11

Slide 11 text

11 リモートMCPサーバーの認可の動き(1)

Slide 12

Slide 12 text

12 リモートMCPサーバーの認可の動き(2)

Slide 13

Slide 13 text

13 リモートMCPサーバーの認可の動き(3)

Slide 14

Slide 14 text

14 リモートMCPサーバーの認可の動き(4)

Slide 15

Slide 15 text

15 リモートMCPサーバーの認可の動き(5)

Slide 16

Slide 16 text

16 リモートMCPサーバーの認可の動き(6)

Slide 17

Slide 17 text

17 リモートMCPサーバーの認可仕様の問題 内製リモートMCPサーバーで認可仕様をサポートできそう? → 実は挙動(4)に罠

Slide 18

Slide 18 text

18 リモートMCPサーバーの認可仕様の問題 内製リモートMCPサーバーで認可仕様をサポートできそう? → 実は挙動(4)に罠 OAuthクライアントIDの登録‧取得 → 各サービス上でOAuthクライアントを追加または参照する必要 → URLだけのMCP設定で接続したい Dynamic Client Registrationプロトコルで⾃動クライアント登録(推奨) https://modelcontextprotocol.io/specification/2025-06-18/basic/authorization

Slide 19

Slide 19 text

19 Dynamic Client Registration

Slide 20

Slide 20 text

20 Dynamic Client Registrationの課題 既存の認可サーバーのDynamic Client Registration対応不⾜ ● プロトコル⾃体が実装されていない ● リクエストに管理者レベルの権限が必要 ほとんどの著名サービスの認可サーバーはDCRや認証なしDCRに⾮対応 Okta, Google Cloud, Google Workspace, GitHub, Atlassian… 公式の認可仕様を満たしURLのみで接続できるリモートMCPサーバー → 現状だと困難 → Atlassian MCP Serverなどはどうしている?

Slide 21

Slide 21 text

21 Dynamic Client Registrationの既存の対応⽅法(1)

Slide 22

Slide 22 text

22 Dynamic Client Registrationの既存の対応⽅法(2)

Slide 23

Slide 23 text

23 Dynamic Client Registrationの既存の対応⽅法(3)

Slide 24

Slide 24 text

24 Dynamic Client Registrationの既存の対応⽅法(4)

Slide 25

Slide 25 text

25 Dynamic Client Registrationの既存の対応⽅法(5)

Slide 26

Slide 26 text

26 Dynamic Client Registrationの既存の対応⽅法(6)

Slide 27

Slide 27 text

27 Dynamic Client Registrationの既存の対応⽅法 公式の認可仕様を満たしURLのみで接続できるリモートMCPサーバー DCRに対応したMCP⽤独⾃認可サーバー内製が必要 → OAuth provider library for Cloudflare Workersライブラリ 内製には認可サーバーの管理責務を持つ必要 ● 正確なOAuth仕様の準拠のための知識 ● 多数のアクセストークン‧OAuthクライアントの正確な処理 ● ⾮対応のサービスごとに認可サーバーを管理 ● DCRのセキュリティ考慮事項 ○ https://datatracker.ietf.org/doc/html/rfc7591#section-5

Slide 28

Slide 28 text

28 Dynamic Client Registrationの既存の対応⽅法 ● DCRのセキュリティ考慮事項 ○ https://datatracker.ietf.org/doc/html/rfc7591#section-5 😇

Slide 29

Slide 29 text

29 Dynamic Client Registrationの今後 ⼀般的ではないDynamic Client Registrationを推奨する認可仕様 → DCRを利⽤しない認可仕様の追加の試み ● SEP-991: Enable URL-based Client Registration using OAuth Client ID Metadata Documents ● SEP-1299 (SEP-1415): Server-Side Authorization Management with Client Session Binding SEP-991はMCP公式ブログにも取り上げられ注⽬度が⾼い Evolving OAuth Client Registration in the Model Context Protocol

Slide 30

Slide 30 text

30 MCPの認可仕様の今後 すべての連携先(Google, GitHub, …)ごとにブラウザを開く必要 → IdP(Okta)にログインするだけで連携が完了する試み ● SEP-646: Enterprise-Managed Authorization Profile for MCP IdPと各サービスの認可サーバー間で事前に設定をしておき、MCPクライ アントからID-JAGの仕組みを使ってアクセストークンをユーザー操作無く 取得 OktaではEA開始済み

Slide 31

Slide 31 text

31 まとめ 現在の内製リモートMCPサーバー提供には認可仕様の壁 → Dynamic Client Registration 提供⽅法はあるが内製の責任範囲の⼤きさ‧⻑期的な解消の⽅向性の存在 現時点で取り得るToDo ● プラットフォームでのアクセストークンの有効期限の短期化 ● Keychainなどをサポートする安全な保管ソフトウェア利⽤ ● 安全な利⽤⽅法の周知 ● MCP仕様変更のキャッチアップ