在 Azure 认知搜索中配置 IP 防火墙规则以允许索引器连接

搜索服务将代表索引器发出对外部 Azure 资源的出站调用,以便在索引期间拉取数据。 如果 Azure 资源使用 IP 防火墙规则来筛选传入的调用,则需要在防火墙中创建允许索引器请求的入站规则。

本文介绍如何查找搜索服务的 IP 地址,然后在 Azure 存储帐户上配置入站 IP 规则。 在特定于 Azure 存储的情况下,此方法也适用于使用 IP 防火墙规则进行数据访问的其他 Azure 资源,如 Azure Cosmos DB 和 Azure SQL。

注意

如果要定义 IP 防火墙规则,存储帐户和搜索服务必须位于不同的区域中。 如果设置禁止此操作,请改为尝试受信任的服务异常资源实例规则

获取搜索服务 IP 地址

  1. 获取搜索服务的完全限定的域名 (FQDN)。 将显示为 <search-service-name>.search.azure.cn。 你可以通过在 Azure 门户上查找搜索服务来查找 FQDN。

    Screenshot of the search service Overview page.

  2. 通过在命令提示符下对 FQDN 执行 nslookup(或 ping)查找搜索服务的 IP 地址。 请确保从 FQDN 中删除前缀“https://”。

  3. 复制 IP 地址,以便可以在下一步中对入站规则指定该地址。 在以下示例中,应复制的 IP 地址是“150.0.0.1”。

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

允许从客户端 IP 地址进行访问

向搜索服务推送索引和查询请求的客户端应用程序必须在 IP 范围内表示。 通常可以在 Azure 上通过对服务的 FQDN 执行 ping 操作来确定 IP 地址(例如,ping <your-search-service-name>.search.azure.cn 将返回搜索服务的 IP 地址)。

添加客户端 IP 地址,以便从当前计算机的 Azure 门户进行访问。 导航到左侧导航窗格上的“网络”部分。 将“公共网络访问”更改为“所选网络”,然后选中“防火墙”下的“添加客户端 IP 地址”。

Screenshot of adding client ip to search service firewall

获取 Azure 门户 IP 地址

如果使用门户或导入数据向导创建索引器,则还需要门户的入站规则。

若要获取门户的 IP 地址,请在 stamp2.ext.search.azure.cn(即流量管理器的域)上执行 nslookup(或 ping)。 对于 nslookup,IP 地址在响应的“非权威回复”部分可见。

在以下示例中,应复制的 IP 地址是“52.252.175.48”。

$ nslookup stamp2.ext.search.azure.cn
Server:  ZenWiFi_ET8-0410
Address:  192.168.50.1

Non-authoritative answer:
Name:    azsyrie.northchinanorth.cloudapp.chinacloudapi.cn
Address:  52.252.175.48
Aliases:  stamp2.ext.search.azure.cn
          azs-ux-prod.trafficmanager.net
          azspncuux.management.search.azure.cn

不同区域中的服务会连接到不同的流量管理器。 无论域名是什么,ping 返回的 IP 地址都是为你所在区域的 Azure 门户定义入站防火墙规则时要使用的正确 IP 地址。

对于 ping,请求超时,但 IP 地址在响应中可见。 例如,在消息“正在对 azsyrie.chinaeast.cloudapp.chinacloudapi.cn [52.252.175.48] 执行 ping 操作”中,IP 地址为“52.252.175.48”。

获取“AzureCognitiveSearch”服务标记的 IP 地址

还需要创建入站规则,允许来自多租户执行环境的请求。 此环境由 Azure 管理,用于卸载处理密集型作业,如果不卸载,搜索服务可能会无法处理这些作业。 此部分说明如何获取创建此入站规则所需的 IP 地址范围。

为支持 Azure 认知搜索的每个区域定义 IP 地址范围。 指定完整范围,以确保来自多租户执行环境的请求成功。

可以从 AzureCognitiveSearch 服务标记获取此 IP 地址范围。

  1. 使用发现 API可下载的 JSON 文件。 假设搜索服务是 Azure 公有云,应下载 Azure 公共 JSON 文件

  2. 打开 JSON 文件并搜索“AzureCognitiveSearch”。 对于 ChinaNorth2 中的搜索服务,多租户索引器执行环境的 IP 地址为:

    {
    "name": "AzureCognitiveSearch.ChinaNorth2",
    "id": "AzureCognitiveSearch.ChinaNorth2",
    "properties": {
       "changeNumber": 1,
       "region": "chinanorth2",
       "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. 对于具有“/32”后缀的 IP 地址,删除“/32”(40.91.93.84/32 变成规则定义中的 40.91.93.84)。 所有其他 IP 地址可以逐字使用。

  4. 复制该区域的所有 IP 地址。

将 IP 地址添加到 IP 防火墙规则

现在,你已拥有所需的 IP 地址,可以设置入站规则。 向存储帐户的防火墙规则添加 IP 地址范围的最简单方法是通过 Azure 门户添加。

  1. 在门户上找到存储帐户,在左侧导航窗格中打开“网络”。

  2. 在“防火墙和虚拟网络”选项卡中,选择“选定网络”。

    Screenshot of Azure Storage Firewall and virtual networks page

  3. 添加之前在地址范围内获取的 IP 地址,然后选择“保存”。 你应该有搜索服务的规则、Azure 门户(可选),以及与区域的“AzureCognitiveSearch”服务标记对应的所有 IP 地址。

    Screenshot of the IP address section of the page.

更新防火墙规则可能需要 5-10 分钟,之后索引器应能够访问防火墙后面的存储帐户数据。

后续步骤