Azure AI 検索から SQL マネージド インスタンスの共有プライベート リンクを作成する

注

Azure AI 検索は、Azure ポータル、REST API、およびAzure SDKから使用できます。 また、Foundry IQ は、エンタープライズ コンテンツを、Microsoft Foundry ポータルのエージェントの再利用可能なアクセス許可に対応したナレッジ ベースに変換するマネージド ナレッジ レイヤーです。

この記事では、仮想ネットワーク内で実行される SQL マネージド インスタンスへのプライベート接続用に、Azure AI 検索でインデクサーを構成する方法について説明します。 プライベート接続は、共有プライベート リンクおよびAzure Private Link経由です。

マネージド インスタンスへのプライベート接続では、インスタンスの完全修飾ドメイン名 (FQDN) に DNS ゾーンを含める必要があります。 現時点では、DNS ゾーンの指定を受け入れるための dnsZonePrefix パラメーターが提供されるのは、Azure AI 検索 Management REST API だけです。

管理 REST API は直接呼び出すことができますが、Azure CLI az rest モジュールを使用して、コマンド ラインから Management REST API 呼び出しを送信する方が簡単です。 この記事では、REST でAzure CLIを使用してプライベート リンクを設定します。

注

この記事では、プロパティの取得と手順の確認Azureポータルについて説明します。 ただし、SQL Managed Instanceの共有プライベート リンクを作成するときは、REST API を使用していることを確認してください。 [ネットワーク] タブにはオプションとして Microsoft.Sql/managedInstances が表示されますが、Azure ポータルでは現在、SQL Managed Instanceで使用される拡張 URL 形式はサポートされていません。

前提条件

  • Azure CLI

  • Azure AI 検索、Basic 以降。 AI エンリッチメントとスキルセットを使用している場合、Standard 2 (S2) 以上を使用してください。 詳細については、「サービスの制限」を参照してください。

  • Azure SQL Managed Instance、仮想ネットワークで実行するように構成されています。

  • Azure AI 検索とSQL Managed Instanceの両方に対する最小限の共同作成者アクセス許可が必要です。

  • Azure SQL マネージド インスタンスの接続文字列。 現在、マネージド ID は、共有プライベート リンクではサポートされていません。 接続文字列には、ユーザー名とパスワードを含める必要があります。

注

共有プライベート リンクは、Azure Private Link 価格を通じて課金され、使用量に基づいて請求されます。

1 - 接続情報の取得

このセクションでは、ホスト名と接続文字列から DNS ゾーンを取得します。

  1. Azure ポータルで、SQL マネージド インスタンス オブジェクトを見つけます。

  2. [概要] タブで、ホストのプロパティを探します。 次の手順のために、FQDN の DNS ゾーン部分をコピーします。 DNS ゾーンは、SQL Managed Instanceのドメイン名の一部です。 たとえば、SQL Managed Instanceの FQDN が my-sql-managed-instance.a1b22c333d44.database.windows.net の場合、DNS ゾーンは a1b22c333d44 です。

  3. Connection 文字列タブで、後の手順で使用するために ADO.NET 接続文字列をコピーします。 プライベート接続をテストする際の、データ ソース接続に必要です。

接続プロパティの詳細については、「create an Azure SQL Managed Instance」を参照してください。

2 - 要求の本文を作成する

  1. テキスト エディターを使用して、共有プライベート リンクの JSON を作成します。

    {
        "name": "{{shared-private-link-name}}",
        "properties": {
            "privateLinkResourceId": "/subscriptions/{{target-resource-subscription-ID}}/resourceGroups/{{target-resource-rg}}/providers/Microsoft.Sql/managedInstances/{{target-resource-name}}",
            "dnsZonePrefix": "a1b22c333d44",
            "groupId": "managedInstance",
            "requestMessage": "please approve"
        }
    }
    

    共有プライベート リンクのわかりやすい名前を付けます。 共有プライベート リンクは、他のプライベート エンドポイントと共に表示されます。 "shared-private-link-for-search" のような名前にすると、使用方法を思い出させてくれます。

    前の手順で取得した DNS ゾーン名を "dnsZonePrefix" に貼り付けます。

    "privateLinkResourceId" を編集し、プレースホルダーを有効な値に置き換えます。 有効なサブスクリプション ID、リソース グループ名、マネージド インスタンス名を指定します。

  2. ファイルを create-pe.json としてローカルに保存します (または、別の名前を使用して、次の手順でAzure CLI構文を更新することを忘れないでください)。

  3. Azure CLIで、「dir」と入力して、ファイルの現在の場所をメモします。

  1. コマンド ラインから、az login を使用してAzureにサインインします。

  2. 複数のサブスクリプションがある場合は、使用する予定のサブスクリプション (az account show) を使用していることを確認します。

    サブスクリプションを設定するには、az account set --subscription {{subscription ID}} を使用してください

  3. az rest コマンドを呼び出して、Azure AI 検索の Management REST API を使用します。

    SQL マネージド インスタンスに対する共有プライベート リンクのサポートはプレビュー段階であるため、管理 REST API のプレビュー バージョンを使用する必要があります。 最新のプレビュー API バージョンをお勧めします。

    az rest --method put --uri https://management.azure.com/subscriptions/{{search-service-subscription-ID}}/resourceGroups/{{search service-resource-group}}/providers/Microsoft.Search/searchServices/{{search-service-name}}/sharedPrivateLinkResources/{{shared-private-link-name}}?api-version=2026-03-01-preview --body @create-pe.json
    

    Azure AI 検索 リソースのサブスクリプション ID、リソース グループ名、サービス名を指定します。

    JSON 本文で指定したのと同じ共有プライベート リンク名を指定します。

    ファイルの場所から移動した場合は、create-pe.json ファイルへのパスを指定します。 コマンド ラインで dir を入力して、ファイルが現在のディレクトリに含まれているかどうかを確認できます。

  4. コマンドを実行します。

これらの手順を完了すると、保留中の状態でプロビジョニングされた共有プライベート リンクが作成されます。 リンクの作成には数分かかります。 動作可能にするには、作成後にリソース所有者が要求を承認する必要があります。

Azure ポータルで共有プライベート リンクの状態を確認できます。 検索サービス ページの [設定]>[プロパティ] で、下にスクロールして共有プライベート リンク リソースを見つけて、JSON 値を確認します。 プロビジョニングの状態が "保留中" から "成功" に変わったら、次の手順に進むことができます。

4 - プライベート エンドポイント接続を承認する

SQL Managed Instance側で、リソース所有者は、作成したプライベート接続要求を承認する必要があります。

  1. Azure ポータルで、マネージド インスタンスの Security>Private エンドポイント接続を開きます。

  2. プライベート エンドポイント接続のリストを示すセクションを見つけます。

  3. 接続を選択し、[承認] を選択します。 Azure ポータルで状態が更新されるまでに数分かかる場合があります。

プライベート エンドポイントが承認されると、Azure AI 検索は、そのエンドポイント用に作成された DNS ゾーンに必要な DNS ゾーン マッピングを作成します。

Azure AI 検索側で、検索サービス Networking ページの [共有プライベート アクセス] タブに再びアクセスして、要求の承認を確認できます。 接続状態が承認されているはずです。

Azure ポータルのスクリーンショット。

6 - プライベート環境で実行されるようにインデクサーを構成する

マネージド インスタンスへの送信プライベート接続を使用するようにインデクサーとそのデータ ソースを構成できるようになりました。

この記事では、REST クライアントを前提としており、REST API を使用します。

  1. Azure SQLの場合と同様に>データ ソース定義

    [イニシャル カタログ] をデータベース名に設定してから、先ほどコピーした接続文字列を指定します。

    POST https://myservice.search.windows.net/datasources?api-version=2026-04-01
     Content-Type: application/json
     api-key: admin-key
     {
         "name" : "my-sql-datasource",
         "description" : "A database for testing Azure AI Search indexes.",
         "type" : "azuresql",
         "credentials" : { 
             "connectionString" : "Server=tcp:contoso.a1b22c333d44.database.windows.net,1433;Persist Security Info=false; User ID=<your user name>; Password=<your password>;MultipleActiveResultsSets=False; Encrypt=True;Connection Timeout=30;Initial Catalog=<your database name>"
            },
         "container" : { 
             "name" : "Name of table or view to index",
             "query" : null (not supported in the Azure SQL indexer)
             },
         "dataChangeDetectionPolicy": null,
         "dataDeletionDetectionPolicy": null,
         "encryptionKey": null
     }
    
  2. インデクサーの定義を作成し、インデクサーの executionEnvironment を "private" に設定します。

    Indexer の実行は、検索サービスに固有のプライベート実行環境、またはMicrosoftによってホストされ、複数の顧客に対して高価なスキルセット処理をオフロードするために使用されるマルチテナント環境で発生します。 プライベート エンドポイント経由で接続する場合、インデクサーの実行はプライベートである必要があります。

     POST https://myservice.search.windows.net/indexers?api-version=2026-04-01
      Content-Type: application/json
      api-key: admin-key
        {
         "name": "indexer",
         "dataSourceName": "my-sql-datasource",
         "targetIndexName": "my-search-index",
         "parameters": {
             "configuration": {
                 "executionEnvironment": "private"
             }
         },
         "fieldMappings": []
         }
    
  3. インデクサーを実行します。 インデクサーの実行が成功し、検索インデックスが設定された場合、共有プライベート リンクは機能しています。

インデクサーの状態は、Azure ポータルで監視することも、Indexer Status API を使用して監視することもできます。

Azure ポータルで Search explorer を使用して、インデックスの内容を確認できます。

前の手順でインデクサーを実行し、マネージド インスタンスからコンテンツのインデックスを正常に作成した場合、テストは成功しました。 ただし、インデクサーが失敗した場合、またはインデックスにコンテンツがない場合は、オブジェクトを変更し、インデクサーから送信要求を呼び出すことができるクライアントからテストを繰り返すことができます。

Azure ポータルでインデクサーを実行するのは簡単な選択ですが、REST クライアントおよび REST API を使ってより正確に試すこともできます。 検索サービスがプライベート接続用にも構成されていないと仮定すると、Azure AI 検索への REST クライアント接続はパブリック インターネット経由で行うことができます。

テストに関するいくつかの留意点を次に示します:

  • REST クライアントを使用する場合は、 Management REST API と最新の プレビュー API バージョン を使用して、共有プライベート リンクを作成します。 Search REST API と安定した API バージョンを使用して、インデクサーとデータ ソースを作成して呼び出してください。

  • データのインポート ウィザードを使用して、インデクサー、データ ソース、およびインデックスを作成できます。 ただし、生成されたインデクサーには、正しい実行環境設定がありません。

  • Azure ポータルでデータ ソースとインデクサー JSON を編集して、実行環境や接続文字列などのプロパティを変更できます。

  • Azure ポータルでインデクサーをリセットして再実行します。 リセットは、すべてのドキュメントの完全な再処理を強制するため、このシナリオでは重要です。

  • 検索エクスプローラーを使用して、インデックスの内容を確認できます。

関連項目