共用方式為

配置 IP 防火墙规则以允许来自Azure AI Search的索引器连接

Azure AI Search在索引器处理内容和技能期间进行外部出站调用,同时在包括调用大型语言模型(LLM)的智能检索请求时也会进行调用。 如果目标Azure资源使用 IP 防火墙规则筛选传入调用,则必须在防火墙中创建一个入站规则,以允许来自Azure AI Search的请求。

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

先决条件

  • Azure AI Search服务(基本层或更高版本)。 无法在免费层上设置防火墙规则。
  • 现有的目标 Azure 资源正在受防火墙保护。
  • 搜索服务的参与者所有者角色。

注意

  • 仅适用于Azure Storage。 若要定义 IP 防火墙规则,存储帐户和搜索服务必须位于不同的区域中。 如果设置不允许不同的区域,请尝试使用 受信任的服务异常资源实例规则

  • 对于从索引器到任何受支持的Azure资源的专用连接,我们建议设置共享的专用链接。 专用连接通过Microsoft骨干网络传输,完全绕过公共Internet。

获取搜索服务 IP 地址

  1. Azure 门户中,转到你的搜索服务。

  2. 在左窗格中,选择“ 概述”。

  3. 复制搜索服务的完全限定域名(FQDN),应如下所示 my-search-service.search.azure.cn

    搜索服务“概述”页的屏幕截图。

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

  5. 复制 IP 地址,以便在下一步中使用。 在以下示例中,复制的 IP 地址为 150.0.0.1

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

    在此示例中的“非权威答案”(本示例中为 150.0.0.1)下的字段中的 IP 地址 Address 是防火墙规则所需的值。

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

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

添加客户端 IP 地址,以允许从当前计算机上的 Azure 门户访问服务。

  1. 在Azure门户中,选择搜索服务。

  2. 在左窗格中,选择 “设置>网络”。

  3. “防火墙和虚拟网络 ”选项卡上,将 公用网络访问权限 设置为 所选 IP 地址

    选项的截图显示了在 Azure 门户中允许来自特定 IP 地址的公共网络访问。

  4. IP 防火墙下,选择 “添加客户端 IP 地址”。

    在 Azure 门户中添加客户端 IP 地址选项的截图。

  5. 保存更改。

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

还需要创建入站规则,允许请求来自多租户执行环境。 此环境由Azure管理,专用于分流处理计算密集型任务,以避免对搜索服务造成负担。 此部分说明如何获取创建此入站规则所需的 IP 地址范围。

为每个支持Azure AI Search的区域定义 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
    }
    },
    

    复制区域数组中的所有 addressPrefixes IP 地址。

  3. 对于具有“/32”后缀的 IP 地址,删除“/32”(40.91.93.84/32)在规则定义中变为 40.91.93.84。 所有其他 IP 地址可以逐字使用。

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

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

获取必要的 IP 地址后,设置入站规则。 将 IP 地址范围添加到存储帐户的防火墙规则的最简单方法是通过Azure门户。

  1. 在Azure门户中,选择存储帐户。

  2. 在左窗格中,选择 “安全 + 网络>网络”。

  3. 在“ 公共访问 ”选项卡上,选择“ 管理”。

    在 Azure 门户中管理公共网络访问的按钮的屏幕截图。

  4. “公用网络访问范围”下, 从所选网络中选择“启用”。

    在 Azure 门户中启用从所选网络进行访问的选项的截图。

  5. 添加之前获取的 IP 地址,然后选择“ 保存”。 应该为搜索服务、Azure门户(可选)和区域“AzureCognitiveSearch”服务标记的所有 IP 地址设置规则。

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

使用令牌身份验证补充网络安全性

防火墙和网络安全性是防止未经授权访问数据和操作的第一步。 下一步应该是授权。

我们建议使用基于角色的访问控制,将 Microsoft Entra ID 用户和组分配到角色。这些角色决定了对您服务的读写访问权限。 有关内置角色的描述以及创建自定义角色的指引,请参阅 通过角色访问控制连接到 Azure AI 搜索

如果你不需要基于密钥的身份验证,我们建议禁用 API 密钥并专门使用角色分配。