次の方法で共有


SQL MCP Server の認証を構成する

Important

SQL モデル コンテキスト プロトコル (MCP) サーバーは、Data API Builder バージョン 1.7 以降で使用できます。

このセクションで説明する SQL MCP Server 2.0 の機能は現在プレビュー段階であり、一般公開前に変更される可能性があります。 詳細については、「 バージョン 2.0 の新機能」を参照してください。

SQL MCP Server は、データ API ビルダーでモデル コンテキスト プロトコル (MCP) エンドポイントを公開します。 一部の認証オプションでは、JSON Web トークン (JWT) を使用します。

クライアント (Microsoft AI Foundry エージェントなど) を SQL MCP Server に接続すると、認証は 2 方向のセットアップになります。

  • 受信認証 (クライアントから SQL MCP Server): MCP エンドポイントを呼び出すときにクライアントが認証する方法 ( https://<host>/mcpなど)。
  • 送信認証 (SQL MCP Server からデータベースへ): SQL MCP Server がデータベースに対して認証する方法。

次の図を使用して、自分の方向を設定します。 この記事の残りの部分では、最初に 送信 を構成し (サーバーがデータベースに到達できるように)、 次に受信 を構成します (クライアントがサーバーを安全に呼び出すことができるようにします)。

クライアント アプリ、SQL MCP サーバー、およびデータベース間の受信および送信認証フローを示す図。

"クライアント アプリ" には、Microsoft AI Foundry エージェント、カスタム MCP クライアント アプリ、または別のエージェント ランタイムを指定できます。 SQL MCP Server の受信構成は、MCP エンドポイントを呼び出すクライアントに関係なく同じです。

[前提条件]

  • 実行中の SQL MCP Server (Data API Builder 1.7 以降)
  • 少なくとも 1 つのエンティティを持つ既存のdab-config.json
  • MCP ツール接続を追加できるエージェントを含む Microsoft AI Foundry プロジェクト

手順 1: 送信認証を構成する (SQL MCP サーバーからデータベースへ)

送信認証は、 data-source 構成で定義します。 最もよくあるのは接続文字列です。

SQL MCP Server からデータベースへの送信認証フローを示す図。

複数のデータ ソース

SQL MCP Server では、 data-source-filesを介して複数のデータ ソースがサポートされます。 各データ ソースは、独自の送信認証設定を持つことができます。 たとえば、あるデータベースでマネージド ID を使用し、別のデータベースで SQL ユーザー名とパスワードを使用できます。 データ ソースは、データベース アクセスの構成方法に応じて、1 つの ID を共有することもできます。

SQL MCP Server からデータベースごとの資格情報を使用した複数のデータベースへの送信認証を示す図。

詳細については、「 複数のデータ ソースを追加する 」と「 データ ソースの構成」を参照してください。

データベース接続を構成する

dab-config.jsonで、data-source.database-typedata-source.connection-stringを設定します。

ヒント

@env()を使用して、シークレットを構成ファイルから除外します。

例: SQL ユーザー/パスワード (開発)

SQL MCP Server では、ユーザー名とパスワードを使用した SQL 認証がサポートされています。 このアプローチは、開発、テスト、および特定の運用環境で一般的です。

SQL ユーザー/パスワード認証フローを示す図。

{
  "data-source": {
    "database-type": "mssql",
    "connection-string": "@env('SQL_CONNECTION_STRING')"
  }
}

環境変数の値の例:

Server=tcp:<server>.database.windows.net,1433;Initial Catalog=<database>;User ID=<user>;Password=<password>;Encrypt=True;TrustServerCertificate=False;

SQL MCP Server では、DefaultAzureCredential を使用したAzure SQLのマネージド サービス ID (MSI) がサポートされます。 マネージド ID 認証を使用するようにconnection stringを構成します。

マネージド ID 認証フローを示す図。

Server=tcp:<server>.database.windows.net,1433;Initial Catalog=<database>;Authentication=Active Directory Managed Identity;

ユーザー割り当てマネージド ID (UAMI) の場合は、ID クライアント ID を含めます。

Server=tcp:<server>.database.windows.net,1433;Initial Catalog=<database>;Authentication=Active Directory Managed Identity;User Id=<uami-client-id>;

詳細については、「 データ ソースの構成」を参照してください。

手順 2: 受信認証を構成する (クライアントから SQL MCP Server)

受信認証は、MCP クライアントが SQL MCP Server に対して認証する方法を制御します。

クライアント アプリから SQL MCP Server への受信認証フローを示す図。

OAuth プロバイダー

SQL MCP Server では、OAuth プロバイダーによって発行された JSON Web トークン (JWT) を検証できます (たとえば、Microsoft Entra ID)。 クライアントには、要求ごとにトークンが含まれており、SQL MCP Server によって検証されます。

SQL MCP Server を呼び出すクライアントの JWT を発行する OAuth プロバイダーを示す図。

ゲートウェイ認証 (省略可能)

MCP クライアントで API キーまたは別の JWT 以外のスキームが必要な場合は、クライアントを認証して MCP エンドポイントに要求を転送するゲートウェイまたはプロキシを使用して SQL MCP サーバーを前面に移動します。

Azureホストされるパターンについては、「 API Management の MCP サーバーへの安全なアクセスを参照してください。

SQL MCP サーバーを保護する API ゲートウェイを示す図。

複数のクライアント

受信認証は、たとえば、 runtime.host.authentication.providerを使用して、SQL MCP Server インスタンスごとに 1 回構成されます。 同じ MCP エンドポイントを呼び出すクライアントはすべて、互換性のある認証方法を使用する必要があります。 たとえば、すべてのクライアントが同じ対象ユーザーに対してMicrosoft Entraトークンを使用できます。

SQL MCP Server にアクセスするために同じ受信認証構成を使用する複数のクライアント アプリを示す図。

ヒント

2 つの異なる受信認証スキームが必要な場合 (たとえば、1 つのクライアントでMicrosoft Entraを使用し、もう 1 つは別の ID プロバイダーを使用します)、runtime.host.authentication 設定が異なる 2 つの SQL MCP Server インスタンスを実行します。

Microsoft AI Foundry

クライアントが Microsoft AI Foundry エージェントである場合は、次の手順を使用します。

  1. エージェント プロジェクトで、[ ツールの追加] を選択します。
  2. [カスタム] タブ 選択します。
  3. [モデル コンテキスト プロトコル] を選択します。
  4. リモート MCP サーバー エンドポイント (たとえば、https://<your-server>/mcp) を設定します。
  5. 認証モードを選択します。

Microsoft AI Foundry にツールを追加するスクリーンショット。

Foundry を構成したら、同じ受信認証モードを受け入れるように SQL MCP Server を構成する必要があります。

この記事では、MCP ツールの接続について説明します。 Foundry Agent Service REST エンドポイントの認証の構成については説明しません。

Foundry 認証モード

未認証

DAB 2.0 以降では、既定の認証プロバイダーは Unauthenticated。 既定のanonymous プロバイダー (またはUnauthenticatedを設定) を使用して要求をprovider: AppServiceとして処理し、目的のanonymousアクセス許可のみを付与するように SQL MCP Server を構成します。

基になる DAB 認証動作については、「 認証されていないプロバイダーの構成」を参照してください。

Foundry の認証されていない認証フローを示す図。

Microsoft EntraまたはOAuthアイデンティティパススルー

JWT (provider: EntraId) を検証するように SQL MCP Server を構成します。

DiagramがFoundry Microsoft Entra 認証フローを示しています。

キーを基にした

直接サポートされていません。 キーを使用する必要がある場合は、MCP エンドポイントの前に、Azure API Managementなどのゲートウェイを配置します。 API Management の MCP サーバーへのセキュリティで保護されたアクセスを参照してください。

Foundry キーベースの認証フローを示す図。

Foundry 固有の構成の詳細については、 Foundry MCP 認証ガイダンスを参照してください。

Microsoft Entra IDでアプリを登録する

アプリの登録は、Microsoft EntraOAuth ID パススルーに必要です。

  • ディレクトリ (テナント) ID (jwt.issuerのビルドに使用) を記録します。
  • アプリケーション ID URI (jwt.audienceと Foundry 対象ユーザーに推奨) を記録します。

アプリの登録手順については、「 Microsoft Entra ID でアプリケーションを登録する」を参照してください。

Entra ID を使用して SQL MCP サーバーを構成する

EntraId プロバイダーを構成し、jwt.audiencejwt.issuerの値を設定します。

Command-Line の例

次の例では、 dab configure コマンドと dab update コマンドを使用して認証オプションを設定します。

dab configure \
  --runtime.host.authentication.provider EntraId

dab configure \
  --runtime.host.authentication.jwt.audience "api://<app-id-or-audience>"

dab configure \
  --runtime.host.authentication.jwt.issuer "https://login.microsoftonline.com/<tenant-id>/v2.0"

# Grant permissions for authenticated users (repeat per entity)
dab update \
  Products \
  --permissions "authenticated:read"