Azure AI Search からのインデクサー接続を許可するように IP ファイアウォール規則を構成する

インデクサーの代わりに、検索サービスは外部 Azure リソースへの送信呼び出しを発行して、インデックス作成中にデータをプルします。 Azure リソースで IP ファイアウォール規則を使用して着信呼び出しをフィルター処理する場合は、インデクサー要求を許可する受信規則をファイアウォールに作成する必要があります。

この記事では、ご利用の検索サービスの IP アドレスを検索してから、 Azure Storage アカウント上でインバウンド IP 規則を構成する方法について説明します。 この方法は Azure Storage に固有のものですが、データ アクセスに IP ファイアウォール規則を使う他の Azure リソース (Azure Cosmos DB や Azure SQL など) でも機能します。

Note

Azure Storage にのみ適用されます。 IP ファイアウォール規則を定義する場合は、ストレージ アカウントと検索サービスが異なるリージョンに存在する必要があります。 お使いの設定でこれが許可されない場合は、代わりに信頼されたサービス例外またはリソース インスタンス ルールを試してください。

インデクサーからサポートされている Azure リソースへのプライベート接続の場合は、共有プライベート リンクを設定することをおすすめします。 プライベート接続は、パブリック インターネットを完全にバイパスして、Microsoft バックボーン ネットワークを移動します。

検索サービスの IP アドレスを取得する

  1. お使いの検索サービスの完全修飾ドメイン名 (FQDN) を取得します。 これは <search-service-name>.search.windows.netのようになります。 FQDN は、Azure portal で検索サービスを調べることで確認できます。

    検索サービスの [概要] ページのスクリーンショット。

  2. コマンド プロンプトで FQDN の nslookup (または ping) を実行して、検索サービスの IP アドレスを検索します。 FQDN から https:// のプレフィックスを削除してください。

  3. 次の手順でインバウンド規則に指定できるように、IP アドレスをコピーします。 次の例では、コピーする必要がある IP アドレスは 「150.0.0.1」 です。

    nslookup contoso.search.windows.net
    Server:  server.example.org
    Address:  10.50.10.50
    
    Non-authoritative answer:
    Name:    <name>
    Address:  150.0.0.1
    aliases:  contoso.search.windows.net
    

クライアント IP アドレスからのアクセスを許可する

インデックス作成とクエリの要求を検索サービスにプッシュするクライアント アプリケーションは、IP 範囲で表す必要があります。 Azure では、通常、サービスの FQDN に ping を実行して IP アドレスを特定できます (たとえば、 ping <your-search-service-name>.search.windows.netは検索サービスの IP アドレスを返します )。

クライアント IP アドレスを追加して、現在のコンピューター上の Azure portal からサービスにアクセスできるようにします。 左側のナビゲーション ウィンドウの [ネットワーク] セクションに移動します。 [パブリック ネットワーク アクセス][選択したネットワーク] に変更してから、[ファイアウォール][クライアント IP アドレスを追加する] をオンにします。

検索サービスのファイアウォールへのクライアント IP の追加を示すスクリーンショット

Azure portal の IP アドレスを取得する

ポータルまたは データのインポート ウィザード を使用してインデクサーを作成する場合は、ポータルの受信規則も必要です。

ポータルの IP アドレスを取得するには、stamp2.ext.search.windows.net (トラフィック マネージャーのドメイン) で nslookup (または ping) を実行します。 nslookup の場合、IP アドレスは応答の "権限のない回答" 部分に表示されます。

次の例では、コピーする必要がある IP アドレスは "52.252.175.48" です。

$ nslookup stamp2.ext.search.windows.net
Server:  ZenWiFi_ET8-0410
Address:  192.168.50.1

Non-authoritative answer:
Name:    azsyrie.northcentralus.cloudapp.azure.com
Address:  52.252.175.48
Aliases:  stamp2.ext.search.windows.net
          azs-ux-prod.trafficmanager.net
          azspncuux.management.search.windows.net

異なるリージョンのサービスは、異なるトラフィック マネージャーに接続します。 ドメイン名に関係なく、ping から返された IP アドレスは正しいもので、リージョン内の Azure portal で受信ファイアウォール規則を定義するときに使用します。

ping の場合、要求はタイムアウトしますが、IP アドレスは応答に表示されます。 たとえば、"Pinging azsyrie.northcentralus.cloudapp.azure.com [52.252.175.48]" というメッセージでは、IP アドレスは "52.252.175.48" になります。

"AzureCognitiveSearch" サービス タグの IP アドレスを取得する

マルチテナント実行環境からの要求を許可する受信ルールを作成する必要もあります。 この環境は Microsoft によって管理されており、処理集中型のジョブをオフロードするために使用されます。そうしないと、検索サービスが過負荷になる恐れがあります。 このセクションでは、この受信規則の作成に必要な IP アドレスの範囲を取得する方法について説明します。

IP アドレスの範囲は、Azure AI Search をサポートするリージョンごとに定義されます。 マルチテナント実行環境から派生した要求が成功するように、完全な範囲を指定します。

この IP アドレス範囲は、AzureCognitiveSearch サービス タグから取得できます。

  1. Discovery API またはダウンロード可能な JSON ファイルを使用します。 検索サービスが Azure パブリック クラウドの場合は、Azure パブリック JSON ファイルをダウンロードします。

  2. JSON ファイルを開き、「AzureCognitiveSearch」を検索します。 WestUS2 の検索サービスの場合、マルチテナント インデクサー実行環境の IP アドレスは次のとおりです。

    {
    "name": "AzureCognitiveSearch.WestUS2",
    "id": "AzureCognitiveSearch.WestUS2",
    "properties": {
       "changeNumber": 1,
       "region": "westus2",
       "regionId": 38,
       "platform": "Azure",
       "systemService": "AzureCognitiveSearch",
       "addressPrefixes": [
          "20.42.129.192/26",
          "40.91.93.84/32",
          "40.91.127.116/32",
          "40.91.127.241/32",
          "51.143.104.54/32",
          "51.143.104.90/32",
          "2603:1030:c06:1::180/121"
       ],
       "networkFeatures": null
    }
    },
    
  3. IP アドレスに "/32" サフィックスがある場合は、ルール定義で "/32" を削除します (40.91.93.84/32 は 40.91.93.84 になります)。 他の IP アドレスはすべて逐語的に使用できます。

  4. リージョンのすべての IP アドレスをコピーします。

IP ファイアウォール規則に IP アドレスを追加する

必要な IP アドレスを取得したので、受信規則を設定できます。 ストレージ アカウントのファイアウォール規則に IP アドレスの範囲を追加する最も簡単な方法は、Azure portal を使用することです。

  1. ポータルでストレージ アカウントを見つけ、左側のナビゲーション ウィンドウで [ネットワーク] を開きます。

  2. [ファイアウォールと仮想ネットワーク] タブで、[選択したネットワーク] を選択します。

    Azure Storage ファイアウォールと仮想ネットワークのページのスクリーンショット

  3. 先ほど取得した IP アドレスをアドレス範囲に追加し、[保存] を選択します。 検索サービス、Azure portal (省略可能)、およびお使いのリージョンの "AzureCognitiveSearch" サービス タグのすべての IP アドレスについて、規則が必要です

    ページの IP アドレス セクションのスクリーンショット。

ファイアウォール規則が更新されてから、インデクサーがファイアウォールの内側のストレージ アカウント データにアクセスできるようになるまで、5 分から 10 分かかる場合があります。

トークン認証を使用してネットワーク セキュリティを補完する

ファイアウォールとネットワーク セキュリティは、データと操作への未承認のアクセスを防ぐための最初の手順です。 次の手順となるのが承認です。

ロールベースのアクセスをお勧めします。この場合、Microsoft Entra ID のユーザーとグループは、サービスへの読み取りと書き込みのアクセス権を決定するロールに割り当てられます。 組み込みロールの説明とカスタム ロールを作成する手順については、ロールベースのアクセス制御を使用した Azure AI 検索への接続に関するページを参照してください。

キーベースの認証が必要ない場合は、API キーを無効にし、ロールの割り当てのみを使用することをおすすめします。

次のステップ