索引器访问受 Azure 网络安全性保护的内容
如果你的搜索应用程序要求包含到 Azure 虚拟网络,本概念文章解释了搜索索引器如何访问受网络安全性保护的内容。 其中介绍了出站流量模式和索引器执行环境。 另外,介绍了Azure AI 搜索支持的网络保护,以及可能影响所用安全策略的因素。 最后,由于 Azure 存储同时用于数据访问和永久性存储,因此本文还介绍了特定于搜索和存储连接的网络注意事项。
想要查看分步说明? 请参阅如何配置防火墙规则以允许索引器访问或如何通过专用终结点建立出站连接。
索引器访问的资源
在执行期间,Azure AI 搜索索引器可对各种 Azure 资源发出出站调用。 如果出现以下三种情况,索引器会进行出站调用:
- 在索引期间连接到外部数据源
- 通过包含自定义技能的技能组连接到外部封装的代码
- 在技能组执行期间连接到 Azure 存储以缓存扩充、保存调试会话状态或写入知识存储
下表列出了索引器在典型的运行中可能访问的所有可能 Azure 资源类型的列表。
资源 | 在索引器运行中的用途 |
---|---|
Azure 存储(Blob、ADLS Gen 2、文件、表) | 数据源 |
Azure 存储(Blob、表) | 技能组(缓存扩充、调试会话、知识存储投影) |
Azure Cosmos DB(各种 API) | 数据源 |
Azure SQL 数据库 | 数据源 |
Azure 虚拟机上的 SQL Server | 数据源 |
SQL 托管实例 | 数据源 |
Azure Functions | 附加到技能组并用于托管自定义 Web API 技能 |
注意
索引器还连接到 Azure AI 服务以获取内置技能。 但是,该连接是通过内部网络建立的,不受控制下的任何网络预配约束。
支持的网络保护
可以使用 Azure 提供的任意数量的网络隔离机制来保护 Azure 资源。 根据不同的资源和区域,Azure AI 搜索索引器可以通过 IP 防火墙和专用终结点建立出站连接,但受限于下表中所述的限制。
资源 | IP 限制 | 专用终结点 |
---|---|---|
用于基于文本的索引的 Azure 存储(Blob、ADLS Gen 2、文件、表) | 仅当存储帐户和搜索服务位于不同的区域时才受支持 | 支持 |
用于 AI 扩充的 Azure 存储(缓存、调试会话、知识存储) | 仅当存储帐户和搜索服务位于不同的区域时才受支持 | 支持 |
Azure Cosmos DB for NoSQL | 支持 | 支持 |
Azure Cosmos DB for MongoDB | 支持 | 不支持 |
Azure Cosmos DB for Apache Gremlin | 支持 | 不支持 |
Azure SQL 数据库 | 支持 | 支持 |
Azure 虚拟机上的 SQL Server | 支持 | 不适用 |
SQL 托管实例 | 支持 | 不适用 |
Azure Functions | 支持 | 支持,但仅适用于特定的 Azure Functions 层 |
索引器执行环境
Azure AI 搜索具有“索引器执行环境”的概念,它会根据作业的特征优化处理。 有两个环境。 如果你正在使用 IP 防火墙控制对 Azure 资源的访问,了解执行环境将有助于设置涵盖这两个环境的 IP 范围。
对于任何给定的索引器运行,Azure AI 搜索将确定用于运行索引器的最佳环境。 根据分配的任务数量和类型,索引器将在以下两种环境之一中运行:
搜索服务内部的专用执行环境。
在专用环境中运行的索引器与同一搜索服务上的其他索引编制和查询工作负载共享计算资源。 通常,只有执行基于文本的索引编制的索引器(不包括技能组)才在此环境中运行。
由 Azure 管理和保护的多租户环境,不收取额外的费用。 它不受限于由你控制的任何网络规定。
此环境用于卸载计算密集型处理,使服务特定的资源可用于日常操作。 资源密集型索引器作业的示例包括附加技能组、处理大型文档或处理大量文档。
以下部分解释了用于允许来自任一执行环境的请求的 IP 配置。
为索引器执行设置 IP 范围
如果提供源数据的 Azure 资源位于防火墙后面,则你需要针对索引器请求的所有可用来源 IP 创建允许索引器连接的入站规则。 IP 包括搜索服务和多租户环境使用的 IP。
若要获取搜索服务(和专用执行环境)的 IP 地址,请使用
nslookup
(或ping
)查找搜索服务的完全限定的域名 (FQDN)。 公有云中搜索服务的 FQDN 为<service-name>.search.azure.cn
。若要获取索引器可能在其中运行的多租户环境的 IP 地址,请使用
AzureCognitiveSearch
服务标记。Azure 服务标记为每项服务发布了 IP 地址范围。 可以使用发现 API 或可下载的 JSON 文件找到这些 IP。 IP 范围是按区域分配的,因此请在开始之前检查搜索服务区域。
在为多租户环境设置 IP 规则时,某些 SQL 数据源支持使用一种简单方法指定 IP 地址。 可以创建一个指定 AzureCognitiveSearch
服务标记的网络安全组规则,而无需枚举规则中的所有 IP 地址。
如果数据源是下列任何一项,则你可以指定服务标记:
请注意,如果为多租户环境 IP 规则指定了服务标记,仍然需要针对通过 nslookup
获取的专用执行环境(即搜索服务本身)创建一个显式入站规则。
选择连接方法
将 Azure AI 搜索集成到在虚拟网络上运行的解决方案时,请考虑以下限制:
索引器不能与虚拟网络服务终结点建立直接连接。 仅支持通过具有凭据、专用终结点、受信任服务和 IP 寻址的公共终结点建立索引器连接。
搜索服务始终在云中运行,无法预配到在虚拟机上本机运行的特定虚拟网络。 Azure AI 搜索不会提供此功能。
由于上述约束,在虚拟网络中实现搜索集成的选择包括:
在 Azure PaaS 资源上配置一个允许索引器请求数据的入站防火墙规则。
配置搜索的出站连接,用于通过专用终结点建立索引器连接。
对于专用终结点,搜索服务与受保护资源的连接是通过共享的专用链接建立的。 共享的专用链接是在Azure AI 搜索中创建、管理和使用的 Azure 专用链接资源。 如果资源已完全锁定(在受保护的虚拟网络上运行,或者无法通过公共连接使用),则专用终结点是唯一选择。
通过专用终结点建立的连接必须源自搜索服务的专用执行环境。 若要满足此要求,必须禁用多租户执行。 通过专用终结点建立出站连接中介绍了此步骤。
可以免费配置 IP 防火墙。 基于 Azure 专用链接的专用终结点会影响计费。
使用专用终结点
本部分汇总了为出站索引器连接设置专用终结点的主要步骤。 此摘要可帮助你确定专用终结点是否是最适合你方案的选择。 如何通过专用终结点建立出站连接中介绍了详细步骤。
Azure 专用链接的计费影响
共享专用链接需要可计费的搜索服务,其中,对于基于文本的索引,最低层是基本层,对于基于技能的索引,最低层是标准 2 (S2) 层。 有关详细信息,请参阅专用终结点数的层限制。
入站和出站连接受 Azure 专用链接定价的限制。
步骤 1:创建用于访问安全资源的专用终结点
你将使用搜索服务的门户页或通过管理 API 创建共享的专用链接。
在 Azure AI 搜索中,对于基于文本的索引器,搜索服务必须至少采用基本层;对于具有技能组的索引器,它必须至少采用 S2 层。
专用终结点连接将接受来自专用索引器执行环境的请求,但不接受来自多租户环境的请求。 需要按照步骤 3 中所述禁用多租户执行,以满足此要求。
步骤 2:批准专用终结点连接
当创建共享专用链接资源的(异步)操作完成时,将创建一个处于“挂起”状态的专用终结点连接。 暂时还没有任何流量流经该连接。
需要在安全资源上找到并批准此请求。 可以根据资源使用 Azure 门户完成此任务。 否则,请使用专用链接服务 REST API。
步骤 3:强制索引器在“专用”环境中运行
对于专用终结点连接,必须将索引器的 executionEnvironment
设置为 "Private"
。 此步骤确保所有索引器执行局限于搜索服务中预配的专用环境。
此设置的范围限定为索引器而不是搜索服务。 如果你希望所有索引器都通过专用终结点进行连接,则每个索引器必须采用以下配置:
{
"name" : "myindexer",
... other indexer properties
"parameters" : {
... other parameters
"configuration" : {
... other configuration properties
"executionEnvironment": "Private"
}
}
}
在你获得一个已批准的用于连接到资源的专用终结点后,设置为“专用”的索引器将尝试通过为 Azure 资源创建的且获批准的专用链接获取访问权限。
Azure AI 搜索将验证专用终结点的调用方是否拥有适当的 Azure RBAC 角色权限。 例如,如果你使用只读权限请求与存储帐户建立专用终结点连接,此调用将被拒绝。
如果专用终结点未获批准,或者索引器未使用专用终结点连接,则索引器执行历史记录中会出现 transientFailure
错误消息。
访问受网络保护的存储帐户
搜索服务存储索引和同义词列表。 对于需要存储的其他功能,Azure AI 搜索依赖于 Azure 存储。 扩充缓存、调试会话和知识存储属于此类别。 每个服务的位置以及为存储部署的任何网络保护将确定你的数据访问策略。
同区域服务
在 Azure 存储中,通过防火墙的访问要求请求源自其他区域。 如果 Azure 存储和 Azure AI 搜索位于同一区域,可以通过访问搜索服务系统标识下的数据来绕过对存储帐户的 IP 限制。
有两个选项支持使用系统标识来访问数据:
上述选项依赖于 Microsoft Entra ID 进行身份验证,这意味着必须使用 Microsoft Entra 登录以建立连接。 目前,只有 Azure AI 搜索系统分配的托管标识支持通过防火墙建立同区域连接。
不同区域中的服务
当搜索和存储位于不同的区域时,可以使用前面提到的选项或设置允许来自服务的请求的 IP 规则。 根据工作负载,可能需要按照下一部分所述为多个执行环境设置规则。
后续步骤
熟悉 Azure 虚拟网络中部署的解决方案的索引器数据访问选项后,接下来请查看以下任一操作指南文章: