索引器访问受 Azure 网络安全性保护的内容

如果你的 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 专用链接
  • 作为受信任服务连接
  • 通过 IP 寻址进行连接

如果 Azure 资源位于虚拟网络上,则应使用专用终结点或 IP 寻址来允许索引器连接到数据。

支持的网络保护

可以使用 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 范围是按区域分配的,因此请在开始之前检查搜索服务区域。

为 Azure SQL 设置 IP 规则

在为多租户环境设置 IP 规则时,某些 SQL 数据源支持使用一种简单方法指定 IP 地址。 可以创建一个指定 AzureCognitiveSearch 服务标记的网络安全组规则,而无需枚举规则中的所有 IP 地址。

如果数据源是下列任何一项,则你可以指定服务标记:

请注意,如果为多租户环境 IP 规则指定了服务标记,仍然需要针对通过 nslookup 获取的专用执行环境(即搜索服务本身)创建一个显式入站规则。

选择连接方法

无法将搜索服务预配到在虚拟机本地运行的特定虚拟网络。 尽管某些 Azure 资源提供了虚拟网络服务终结点,但 Azure AI 搜索不会提供此功能。 你应计划实现以下方法之一。

方法 详细信息
保护到 Azure 资源的入站连接 在 Azure 资源上配置一个允许索引器请求数据的入站防火墙规则。 防火墙配置应包括多租户执行的服务标记和你的搜索服务的 IP 地址。 请参阅配置防火墙规则以允许索引器访问
Azure AI 搜索与 Azure 资源之间的专用连接 为与资源的连接配置搜索服务专用的共享专用链接。 连接将通过内部网络进行传输,并绕过公共 Internet。 如果资源已完全锁定(在受保护的虚拟网络上运行,或者无法通过公共连接使用),则专用终结点是唯一选择。 请参阅通过专用终结点建立出站连接

通过专用终结点建立的连接必须源自搜索服务的专用执行环境。

可以免费配置 IP 防火墙。 基于 Azure 专用链接的专用终结点会影响计费。 有关详细信息,请参阅 Azure 专用链接定价

配置网络安全性后,请执行角色分配,指定哪些用户和组对你的数据和操作具有读取和写入访问权限。

使用专用终结点的注意事项

本部分将缩小专用连接选项的范围。

  • 共享专用链接需要可计费的搜索服务,其中,对于基于文本的索引,最低层是基本层,对于基于技能的索引,最低层是标准 2 (S2) 层。 有关详细信息,请参阅专用终结点数的层限制
  • 创建共享专用链接后,搜索服务始终将其用于与该特定 Azure 资源的每个索引器连接。 专用连接在内部被锁定并强制实施。 你无法绕过专用连接而使用公共连接。

  • 需要一个收费的 Azure 专用链接资源。

  • 要求订阅所有者批准专用终结点连接。

  • 要求关闭索引器的多租户执行环境。

    通过将索引器的 executionEnvironment 设置为 "Private" 来执行此操作。 此步骤确保所有索引器执行局限于搜索服务中预配的专用环境。 此设置的范围限定为索引器而不是搜索服务。 如果你希望所有索引器都通过专用终结点进行连接,则每个索引器必须采用以下配置:

        {
          "name" : "myindexer",
          ... other indexer properties
          "parameters" : {
              ... other parameters
              "configuration" : {
                ... other configuration properties
                "executionEnvironment": "Private"
              }
            }
        }
    

在你获得一个已批准的用于连接到资源的专用终结点后,设置为“专用”的索引器将尝试通过为 Azure 资源创建的且获批准的专用链接获取访问权限。

Azure AI 搜索将验证专用终结点的调用方是否拥有适当的角色分配。 例如,如果你使用只读权限请求与存储帐户建立专用终结点连接,此调用将被拒绝。

如果专用终结点未获批准,或者索引器未使用专用终结点连接,则索引器执行历史记录中会出现 transientFailure 错误消息。

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

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

我们建议使用基于角色的访问,在这种情况下,Microsoft Entra ID 用户和组将分配到确定对你的服务拥有读写访问权限的角色。 请参阅使用基于角色的访问控制连接到 Azure AI 搜索,获取内置角色的介绍以及有关创建自定义角色的说明。

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

访问受网络保护的存储帐户

搜索服务存储索引和同义词列表。 对于需要存储的其他功能,Azure AI 搜索依赖于 Azure 存储。 扩充缓存、调试会话和知识存储属于此类别。 每个服务的位置以及为存储部署的任何网络保护将确定你的数据访问策略。

同区域服务

在 Azure 存储中,通过防火墙的访问要求请求源自其他区域。 如果 Azure 存储和 Azure AI 搜索位于同一区域,可以通过访问搜索服务系统标识下的数据来绕过对存储帐户的 IP 限制。

有两个选项支持使用系统标识来访问数据:

上述选项依赖于 Microsoft Entra ID 进行身份验证,这意味着必须使用 Microsoft Entra 登录以建立连接。 目前,只有Azure AI 搜索系统分配的托管标识支持通过防火墙建立同区域连接。

不同区域中的服务

当搜索和存储位于不同的区域时,可以使用前面提到的选项或设置允许来自服务的请求的 IP 规则。 根据工作负载,可能需要按照下一部分所述为多个执行环境设置规则。

后续步骤

熟悉 Azure 虚拟网络中部署的解决方案的索引器数据访问选项后,接下来请查看以下任一操作指南文章: