为 Azure AI 搜索配置网络访问和防火墙规则
本文介绍如何限制对搜索服务公共终结点的网络访问。 若要阻止对公共终结点的所有数据平面访问,请使用专用终结点 和 Azure 虚拟网络。
本文假设使用 Azure 门户来配置网络访问选项。 还可使用管理 REST API、Azure PowerShell 或 Azure CLI。
先决条件
基本层或更高层任何区域中的搜索服务
所有者或参与者权限
何时配置网络访问
默认情况下,Azure AI 搜索配置为允许通过公共终结点进行连接。 通过公共终结点对搜索服务的访问受身份验证和授权协议的保护,但针对数据平面请求,终结点本身在网络层向 Internet 开放。
如果你不托管公共网站,可能需要配置网络访问以自动拒绝请求,除非这些请求源自一组批准的设备和云服务。
有两种机制可用于限制对公共终结点的访问:
- 列出允许请求的 IP 地址、范围或子网的入站规则
- 网络规则的例外情况,只要请求源自受信任的服务,就无需检查即可接受请求
网络规则不是必需的,但如果你使用 Azure AI 搜索来显示专用或内部公司内容,则一种安全最佳做法是添加网络规则。
网络规则的范围仅限于针对搜索服务公共终结点的数据平面操作。 数据平面操作包括创建或查询索引,以及搜索 REST API 描述的所有其他操作。 控制平面操作以服务管理为目标。 这些操作指定资源提供程序终结点,后者受 Azure 资源管理器支持的网络保护的约束。
限制
锁定公共终结点有一些缺点。
完全识别 IP 范围并设置防火墙需要时间,如果你正处于概念证明测试和调查的早期阶段,并且使用示例数据,则可能需要延迟网络访问控制,直到实际需要它们。
某些工作流需要访问公共终结点。 具体而言,Azure 门户中的导入向导通过公共终结点连接到内置(托管)示例数据和嵌入模型。 在防火墙规则到位时,可切换到代码或脚本来完成相同的任务,但如果你想要运行向导,公共终结点必须可用。 有关详细信息,请参阅导入向导中的安全连接。
通过 Azure 门户配置网络访问
登录到 Azure 门户并找到你的搜索服务。
在“设置”下,选择最左侧窗格中的“网络”。 如果未看到此选项,请检查服务层级。 基本层和更高层上提供了网络选项。
使用“所选 IP 地址”。 除非要配置专用终结点,否则请避免使用“禁用”选项。
选择此选项后可使用更多设置。
在“IP 防火墙”下,选择“添加客户端 IP 地址”,为个人设备的公共 IP 地址创建入站规则。 有关详细信息,请参阅允许来自 Azure 门户 IP 地址的访问。
为将向搜索服务发送请求的其他设备和服务添加其他客户端 IP 地址。
IP 地址和范围采用 CIDR 格式。 CIDR 表示法的示例是 8.8.8.0/24,它表示范围从 8.8.8.0 到 8.8.8.255 的 IP。
如果搜索客户端是 Azure 上的静态 Web 应用,请参阅 Azure 应用服务中的入站和出站 IP 地址。 有关 Azure Functions,请参阅 Azure Functions 中的 IP 地址。
在“例外”下面,选择“允许受信任的服务列表中的 Azure 服务访问此搜索服务”。 信任的服务列表包括:
- 适用于 Azure OpenAI 和 Azure AI 服务的
Microsoft.CognitiveServices
- 适用于 Azure 机器学习的
Microsoft.MachineLearningServices
启用此例外后,需要依赖 Microsoft Entra ID 身份验证、托管标识和角色分配。 在搜索服务上具有有效角色分配的任何 Azure AI 服务或 AML 功能都可以绕过防火墙。 有关详细信息,请参阅授予对受信任服务的访问权限。
- 适用于 Azure OpenAI 和 Azure AI 服务的
保存所做更改。
为 Azure AI 搜索服务启用 IP 访问控制策略后,将拒绝从 IP 地址范围允许列表中不包含的计算机向数据平面发出的所有请求。
请求来源于不在允许列表中的 IP 地址时,将返回一个不包含其他详细信息的通用“403 禁止”响应。
重要
这些更改可能需要几分钟才能生效。 请至少等待 15 分钟,然后再排查与网络配置相关的任何问题。
允许来自 Azure 门户 IP 地址的访问
配置 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 地址在响应中可见。 例如,在 "Pinging azsyrie.chinaeast.cloudapp.chinacloudapi.cn [52.252.175.48]"
消息中,IP 地址为 52.252.175.48
。
横幅会告知你 IP 规则会影响门户体验。 即使在添加门户的 IP 地址后,此横幅也仍然可见。 请记住等待几分钟,等到网络规则生效后再测试。
授予对受信任的 Azure 服务的访问权限
是否选择了受信任的服务例外? 如果是,则搜索服务允许来自受信任的 Azure 资源的请求和响应,而无需检查 IP 地址。 受信任的资源必须具有托管标识(系统或用户分配的托管标识,但通常是系统分配的托管标识)。 受信任的资源必须在 Azure AI 搜索上具有角色分配,该分配可授予其对数据和操作的权限。
Azure AI 搜索的受信任服务列表包括:
- 适用于 Azure OpenAI 和 Azure AI 服务的
Microsoft.CognitiveServices
- 适用于 Azure 机器学习的
Microsoft.MachineLearningServices
此网络例外的工作流是指从 Azure AI Studio 或其他 AML 功能发送到 Azure AI 搜索的请求。 受信任的服务例外通常适用于有关检索增强生成 (RAG) 和操场环境的基于自有数据的 Azure OpenAI 场景。
受信任的资源必须具有托管标识
为 Azure OpenAI 和 Azure 机器学习设置托管标识:
为 Azure AI 服务设置托管标识:
- 找到多服务帐户。
- 在最左侧的窗格中,选择“资源管理”下的“标识”。
- 将“系统分配”设置为“开”。
受信任的资源必须具有角色分配
Azure 资源拥有托管标识后,即可在 Azure AI 搜索上分配角色以授予数据和操作权限。
受信任的服务用于矢量化工作负载:从文本和图像内容生成矢量,并将有效负载发送回搜索服务,以执行查询或编制索引。 来自受信任的服务的连接用于向 Azure AI 搜索交付有效负载。
在最左侧的窗格中,选择“访问控制(IAM)”下的“标识”。
依次选择“添加”、“添加角色分配”。
在“角色”页上:
- 选择“搜索索引数据参与者”,以加载包含由嵌入模型生成的矢量的搜索索引。 如果要在编制索引期间使用集成向量化,请选择此角色。
- 或者,选择“搜索索引数据读取者”,为查询提供由嵌入模型生成的向量。 查询中使用的嵌入不会写入索引,因此不需要写入权限。
选择下一步。
在“成员”页上,选择“托管标识”和“选择成员”。
按系统托管标识进行筛选,然后选择你的 Azure AI 多服务帐户的托管标识。
注意
本文介绍允许向搜索服务发出请求的受信任例外,但 Azure AI 搜索本身位于其他 Azure 资源的受信任服务列表中。 具体而言,可以使用受信任服务例外从 Azure AI 搜索连接到 Azure 存储。
后续步骤
通过防火墙允许请求后,必须对请求进行身份验证和授权。 可以使用两个选项: