在 Azure AI 搜索中配置 IP 防火墙规则以允许索引器连接
搜索服务将代表索引器发出对外部 Azure 资源的出站调用,以便在索引期间拉取数据。 如果 Azure 资源使用 IP 防火墙规则来筛选传入的调用,则必须在防火墙中创建允许索引器请求的入站规则。
本文介绍如何查找搜索服务的 IP 地址,然后在 Azure 存储帐户上配置入站 IP 规则。 在特定于 Azure 存储的情况下,此方法也适用于使用 IP 防火墙规则进行数据访问的其他 Azure 资源,如 Azure Cosmos DB 和 Azure SQL。
注意
仅适用于 Azure 存储。 如果要定义 IP 防火墙规则,存储帐户和搜索服务必须位于不同的区域中。 如果设置禁止此操作,请改为尝试受信任的服务异常或资源实例规则。
对于从索引器到任何受支持 Azure 资源的专用连接,我们建议设置共享专用链接。 专用连接通过 Microsoft Azure 主干网络,完全绕过公共 Internet。
获取搜索服务 IP 地址
获取搜索服务的完全限定的域名 (FQDN)。 将显示为
<search-service-name>.search.azure.cn
。 你可以通过在 Azure 门户上查找搜索服务来查找 FQDN。通过在命令提示符下对 FQDN 执行
nslookup
(或ping
)查找搜索服务的 IP 地址。 请确保从 FQDN 中删除https://
前缀。复制 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 地址”。
获取 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.chinaeast.cloudapp.chinacloudapi.cn
Address: 52.252.175.48
Aliases: stamp2.ext.search.azure.cn
azs-ux-prod.trafficmanager.cn
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 AI 搜索的每个区域定义 IP 地址范围。 指定完整范围,以确保来自多租户执行环境的请求成功。
可以从 AzureCognitiveSearch
服务标记获取此 IP 地址范围。
使用发现 API 或可下载的 JSON 文件。 假设搜索服务是 Azure 公有云,应下载 Azure 公共 JSON 文件。
打开 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 } },
对于具有“/32”后缀的 IP 地址,删除“/32”(40.91.93.84/32 变成规则定义中的 40.91.93.84)。 所有其他 IP 地址可以逐字使用。
复制该区域的所有 IP 地址。
将 IP 地址添加到 IP 防火墙规则
现在,你已拥有所需的 IP 地址,可以设置入站规则。 向存储帐户的防火墙规则添加 IP 地址范围的最简单方法是通过 Azure 门户添加。
在门户上找到存储帐户,在左侧导航窗格中打开“网络”。
在“防火墙和虚拟网络”选项卡中,选择“选定网络”。
添加之前在地址范围内获取的 IP 地址,然后选择“保存”。 你应该有搜索服务的规则、Azure 门户(可选),以及与区域的“AzureCognitiveSearch”服务标记对应的所有 IP 地址。
更新防火墙规则可能需要 5-10 分钟,之后索引器应能够访问防火墙后面的存储帐户数据。
使用令牌身份验证补充网络安全性
防火墙和网络安全性是防止未经授权访问数据和操作的第一步。 下一步应该是授权。
我们建议使用基于角色的访问,在这种情况下,Microsoft Entra ID 用户和组将分配到确定对你的服务拥有读写访问权限的角色。 请参阅使用基于角色的访问控制连接到 Azure AI 搜索,获取内置角色的介绍以及有关创建自定义角色的说明。
如果你不需要基于密钥的身份验证,我们建议禁用 API 密钥并专门使用角色分配。