347 Views
November 28, 25
スライド概要
生成AIの活用が進む中、MCPやAPIの統合・管理・運用はますます複雑化しています。本セッションでは、Azure API Management(AI Gateway)とAzure API Centerを活用し、生成AIを中心としたAPI基盤の構築・運用・統合のアプローチをご紹介します。
プラットフォームエンジニアです。 セキュリティやSRE、インフラなど多岐にやっています。 趣味はタロット。
API Management × API Centerで実 現する生成AIプラットフォームエン ジニアリング
生成AI普及に伴うMCP/API運用課題と Azureによる解決策 Azure API ManagementによるAI Gateway の構築 API Centerを活用したAPI統合管理(ハン ズオン紹介)
自己紹介 名前:折田菜津子 会社:株式会社 エーピーコミュニケーションズ 主な業務 • AI foundry(MS foundry)を使ったAIエージェント基盤設計構築 • Azure AI関連の新機能を調査
生成AI普及に伴う MCP/API運用課題と Azureによる解決策
生成AI活用の現状と制約 GitHub Copilot や Claude Code などの生成AIツールの利 用が進展 企業内外のデータやツール連携を実現するために MCP が広く活用 一方で、セキュリティポリシーにより生成AIツールの利用 が制限されるケースも存在
MCPの課題 • 企業ガバナンスに準拠したMCP利用の必要性 • パブリックMCPレジストリには不正・有害なコンテ ンツが含まれる可能性があり危険 • 企業側で承認したMCPのみ利用できるよう制限する 必要がある • 独自MCPの開発・管理ニーズの拡大 • 管理方法・運用体制に関する課題の顕在化
Azureによる解決アプローチ • Azure API Management(APIM)によるAI Gateway • AIモデル公開・管理基盤として活用(生成AIツールの 提供) • 独自 MCP の統合管理を実現 • 負荷分散、トークン制御、MCP認可、observabilityな どの運用機能を一元化 • Azure API Center(APIC) • API カタログの統合とライフサイクル管理 • プライベート MCP レジストリの提供 • APIガバナンス
Azure API Managementに よるAI Gatewayの構築
APIM(AI Gateway)構成 ①AIモデルの公開・管理基盤 • 負荷分散とサーキットブレーカーによる安定稼働 • トークン制御・制限によるリソース管理 ②独自 MCP の統合管理を実現 • OAuth認可によるセキュアなアクセス制御 • APIポリシーによる(レート制限など)利用制御とガバナンス強化 ③ Observability Observability Roo code ③ ① AI ② APIM MCP Managed Grafana ③ Application Insights
AIモデルの公開・管理基盤
AIモデル公開&管理の重要ポイント ① AIモデルごとに、APIのオペレーションを分ける ② AIの負荷分散とサーキットブレーカーの構成 ③ トークン制限の構成 ④ 余計なAPIをブロック ⑤ サブスクリプションキー認可
①AIモデルごとにAPIオペレーションを分離 →開発者が利用可能なモデルを一覧・参照できるようにする API openration1 openration2 例)GPT-4o-miniのバージョン(gpt-4o-mini) GPT-4oのバージョン(gpt-4o) モデルバージョンごとにオペレーションを分けることで、 開発者のカスタマイズ性が上がる
②AIの負荷分散とサーキットブレーカーの構成 負荷分散方式の比較 ラウンドロビン(AIサポート開発向けの基本構成) • リクエストを順番に各バックエンドへ分配 • 各リージョンにトークンクォータがあるため、リージョンごとに AI を配置し、ラウンドロビンで分 散させることで効率的な運用が可能 • AI サポート開発において、AI モデルの API 公開に適した方式 重み付け(用途:ブルーグリーンデプロイ) • 各バックエンドに重み(weight)を設定し、リクエストの分配率を調整 • 高性能なインスタンスに多く割り当てるなど、柔軟なトラフィック制御が可能 • 新旧環境の切り替えや段階的リリースに適している 優先度ベース(用途:アクティブ・スタンバイ構成) • 優先度(priority)を設定し、通常は優先度の高いバックエンドにリクエストを送信 • 障害発生時には自動で他のバックエンドへフェイルオーバー • サーキットブレーカー機能と組み合わせることで、高可用性を実現 サーキットブレーカー • 429エラー(Too Many Requests)やバックエンド障害時に、スタンバイ 系バックエンドへ自動切替することで、サービス継続性を確保。 • ラウンドロビン構成においても、障害中のインスタンスへリクエ ストが送られないように設定することを推奨
③トークン制限の構成 llm-token-limit 使ってトークン制限を構成 サブスクリプションやIPアドレスごとにトークン制限が可能。 また、このポリシーの中にTPM(tokens-per-minute)の設定があるが、 どれぐらいトークン数に制限すればいいか迷う場合は、一旦はAIの TPM数に合わせて設定しておいて、grafanaダッシュボードで数か月間 TPMを観察し、調整するとよい。 <llm-token-limit tokens-per-minute="30000" counterkey="@(context.Subscription.Id)" estimate-prompt-tokens="true" tokens-consumed-header-name="consumed-tokens" remainingtokens-header-name="remaining-tokens" />
④余計なAPIをブロック
使用しないAPIは、400エラーを返すようにAll operationsスコープ
でポリシーを設定
使用するAPIは各オペレーションごとにポリシーを設定
使用しないAPIはAll operationsスコー
プで400エラーを返すように設定
使用するapiはオペレーションごとのポ
リシーで設定
<inbound>
<!-- 既定ではエラーで折り返す -->
<return-response>
<set-status code="400" reason="Bad Request" />
<set-body>{
"error": {
"code": "openrationNotSupported",
"message": "Your request openration is not
supported"
}
}</set-body>
</return-response>
</inbound>
<policies>
<!-- Throttle, authorize, validate, cache, or transform the requests -->
<inbound>
<authentication-managed-identity resource="https://cognitiveservices.azure.com" />
<include-fragment fragment-id="backend-aoai" />
<azure-openai-emit-token-metric namespace="Azureopenai">
<dimension name="API ID" />
<dimension name="Subscription ID" />
</azure-openai-emit-token-metric>
<azure-openai-token-limit tokens-per-minute="30000" counter-key="@(context.Subscription.Id)" estimate-prompttokens="true" tokens-consumed-header-name="consumed-tokens" remaining-tokens-header-name="remaining-tokens" />
...
⑤APIMサブスクリプションキー認可 APIMサブスクリプションキーを払い出す場合、ユーザーごとに払い出す。 APICで払い出し可能。(後ページ参照) Roo Codeで指定例
独自 MCP の統合管理を実現
独自MCPの公開 独自MCPをAPIM経由で 公開・管理可能。 APIMのポリシー(認証、レート制 限、IPフィルタ等)でアクセス制 御やセキュリティ強化が可能。
APIMによるMCP の OAuth 認可フローの構成 APIM を AI 認証ゲートウェイとして活用することで、MCP の OAuth 認可フローを構成可 能。 これにより、PKCE の検証やアクセストークンの取得を、APIM を介して安全にスケラブ ルに実施できる。 1. 2. 3. 4. 5. MCP クライアントは APIM にアクセスし、認証要求を開始 APIM は Entra ID にリダイレクトし、ユーザー認証を実施 認証後、APIM のコールバック URL にリダイレクトされ、 APIM は Entra ID との間で認証コードを Entra ID のアクセス トークンに交換 その後、APIM は MCP クライアント向けに暗号化された セッションキー(MCP サーバトークン)を生成し、トー クンエンドポイント経由で MCP クライアントに返却 MCP API 呼び出し時には、クライアントから送信される MCP サーバトークンを検証し、有効であれば MCP サーバ へ安全にプロキシする処理が行われる
APIM×MCPの認可方法の使い分け APIMへのアクセスに対する送信元制限の可否で分かれる。 送信元制限不可の場合、 OAuth認可を実装 制限可もしくは内部アクセスのみの場合、 サブスクリプションキー認可 pl-subnet 開発端末VNET(spoke) apim-subnet AOAI Roo code functions-subnet Dev box APIM vnet統 合 MCP
Observability
APIMの「分析」ダッシュボード • • • 言語モデルカテゴリを選択することで、AI トークン使用量やリクエスト数を 可視化可能 Azure Monitor ベースのダッシュボードで、APIごとの利用状況・パフォーマ ンス、LLM API のトークン消費量を確認できる トークン消費量の自動集計:LLM API を APIM にインポートすると、使用量や リクエスト状況が自動的に集計・表示される
App insights とManaged Grafanaダッシュボード 各トークン数の推移など詳細に可視化したい場合、 llm-emit-token-metric ポリシーを利用して、カスタムメトリック(例:IP アドレス単位)ごとのトークン数を Application Insights に送信し、 Grafana ダッシュボードで可視化できる。 <llm-emit-token-metric namespace="AzureOpenAI"> <dimension name="API ID" /> しかし、カスタムメトリックに設定されたディメンションの数に応じて、 <dimension name="Subscription ID" /> 12時間以内に出力可能なログ数に上限がある <dimension name="Operation ID" /> </llm-emit-token-metric> Grafanaダッシュボード(例) • AIのモデルごとの1日あたりの平均応答時間(秒) • MCPごとの1日あたりの平均応答時間(秒) • openai APIのオペレーションごとの1日あたりのResponse 429の回数 • MCP APIのエラーコードごとの1日あたりの回数 • サブスクリプションごとの1日あたりの平均プロンプトトークン/完了トークン/合 計トークン数 • サブスクリプションごとの1日あたりの最大プロンプトトークン/完了トークン/合 計トークン数 • AIモデルごとの1日あたりのリクエスト数
API Centerを活用したAPI 統合管理(ハンズオン紹介)
API CenterとAPI Managementとの違い 項目 APIM APIC 主な目的 運用中のAPIガバナンス・公開・保護 設計時や運用などのすべてのライフサ イクルにおけるAPIガバナンス・一元管 理・発見 機能 APIの公開、保護、監視、分析 APIの発見、再利用、ガバナンスのため の中央集約型リポジトリ 使用シナリ オ APIのセキュアな公開、スケールでの監 APIの設計、発見、再利用、ガバナンス 視、使用状況の分析 ポータル 開発者ポータル(API利用者向け) API Centerポータル(API利用者向け) 統合 Azureサービスとのシームレスな統合 組織内のすべてのAPIを一元管理
API Centerハンズオンについてご紹 介します! 自分で試す方が早い!
1. パートナー MCP(Model Context Protocol)の確認 GitHub、Microsoft Docs、Atlassian のパートナー MCP が事前に登録された環 境で、API の階層構造(API → バージョン → 定義 → デプロイメント)を Visual Studio Code から直接確認できます。 Azure ポータルと VS Code 拡張機能の両方から API を確認 API 定義の OpenAPI ドキュメントやマークダウンに出力可能
2. GitHub Actions による自動化されたライフサイクル管理 preview → production → deprecated → retired この流れを、OpenAPI 定義ファイルの変更とコミット・マージだけ で実現できます。 さらに、GitHub Actions のワークフローは Azure API Center と連携 し、API の状態変更やバージョン管理を自動的に反映します。これ により、手動作業を減らし、運用ミスの防止や一貫性のある API 管 理が可能になります。
3. 実践的なセキュリティ・アクセス制御 • APIM API キー認証の設定と動作確認 • API キーごとのアクセス制御(ユーザー・グループ制限) • Key Vault との連携によるセキュアな認証情報管理
4. API ガバナンスの可視化 • API 分析機能で品質や改善点を自動検出 • エラー箇所の視覚的な確認
このハンズオンをおすすめする理由 •実環境に近い体験: 実際の開発・運用で直面するAPI 管理の課題を想定したハンズオン •GitOps の実践: GitHub Actions を使った自動化により、 現代的な DevOps/GitOps の手法を API 管理に適用 •段階的な学習: 基本的な API 確認から、高度なライフ サイクル管理まで、段階的に学習できる構成 •VS Code との連携: 開発者にとって馴染み深い VS Code から直接 API Center を操作する
さあ、始めてみましょう! リポジトリをフォークしてスタート apic-mcp-ai - GitHub
Entra ID OAuth AI Foundary(Project) MCP inspecctor MCP認証 Managed Grafana GwBS Roo code APIM AOAI GwBS MCP ついでに、APIM(AI Gateway)のサンプル構成も一緒 にお試しください! AOAI×Bing Search MCP の API 公開
ご清聴ありがとうございました