你当前正在访问 Microsoft Azure Global Edition 技术文档网站。 如果需要访问由世纪互联运营的 Microsoft Azure 中国技术文档网站,请访问 https://docs.azure.cn

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

在执行期间,Azure 认知搜索索引器可对各种 Azure 资源发出出站调用。 本文将解释索引器访问受 IP 防火墙、专用终结点或其他 Azure 网络级安全机制保护的内容的相关概念。

索引器访问的资源

如果出现以下三种情况,索引器会进行出站调用:

  • 在索引期间连接到外部数据源
  • 通过技能集连接到外部封装的代码
  • 在技能组执行期间连接到 Azure 存储以缓存扩充、保存调试会话状态或写入知识存储

下表列出了索引器在典型的运行中可能访问的所有可能资源类型的列表。

资源 在索引器运行中的用途
Azure 存储(Blob、ADLS Gen 2、文件、表) 数据源
Azure 存储(Blob、表) 技能组(缓存扩充、调试会话、知识存储投影)
Azure Cosmos DB(各种 API) 数据源
Azure SQL Database 数据源
Azure 虚拟机上的 SQL Server 数据源
SQL 托管实例 数据源
Azure Functions 附加到技能组并用于托管自定义 Web API 技能

注意

索引器还连接到认知服务以获取内置技能。 但是,该连接是通过内部网络建立的,不受控制下的任何网络预配约束。

可以使用 Azure 提供的任意数量的网络隔离机制来保护 Azure 资源。 根据不同的资源和区域,认知搜索索引器可以通过 IP 防火墙和专用终结点建立出站连接,但受限于下表中所述的限制。

资源 IP 限制 专用终结点
用于基于文本的索引的 Azure 存储(Blob、ADLS Gen 2、文件、表) 仅当存储帐户和搜索服务位于不同的区域时才受支持 支持
用于 AI 扩充的 Azure 存储(缓存、调试会话、知识存储) 仅当存储帐户和搜索服务位于不同的区域时才受支持 支持
Azure Cosmos DB - SQL API 支持 支持
Azure Cosmos DB - MongoDB API 支持 不支持
Azure Cosmos DB - Gremlin API 支持 不支持
Azure SQL 数据库 支持 支持
Azure 虚拟机上的 SQL Server 支持 空值
SQL 托管实例 支持 空值
Azure Functions 支持 支持,但仅适用于特定的 Azure Functions 层

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

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

同区域服务

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

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

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

不同区域中的服务

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

索引器执行环境

Azure 认知搜索索引器能够有效地从数据源提取内容,将扩充内容添加到提取的内容,并在将结果写入搜索索引之前有选择性地生成投影。

为了获得最佳处理能力,搜索服务会确定一个内部执行环境以设置操作。 根据分配的任务数量和类型,索引器将在以下两种环境之一中运行:

  • 供特定搜索服务专用的环境。 在此类环境中运行的索引器将与其他工作负载(例如客户启动的其他索引编制或查询工作负载)共享资源。 通常,只有执行基于文本的索引编制的索引器(例如,不使用技能组的索引器)才会在此环境中运行。

  • 托管资源密集型索引器的多租户环境 - 例如具有技能集的索引器、处理大型文档的索引器、处理大量文档的索引器等等。 此环境用于卸载计算密集型处理,使服务特定的资源可用于日常操作。 此多租户环境由 Microsoft 管理和保护,不会向客户收取额外费用。

对于任何给定的索引器运行,Azure 认知搜索将确定用于运行索引器的最佳环境。 如果你正在使用 IP 防火墙控制对 Azure 资源的访问,了解执行环境将有助于设置涵盖这两个环境的 IP 范围,如下一部分中所述。

向索引器 IP 范围授予访问权限

如果索引器从中提取数据的资源位于防火墙后面,则需要允许索引器连接的入站规则。 请确保入站规则中的 IP 范围包括可发出索引器请求的所有 IP。 如前所述,可以在两个可能的环境中运行索引器和发起访问请求。 需要添加这两个环境的 IP 地址,索引器访问才能正常进行。

  • 若要获取搜索服务专用环境的 IP 地址,请对搜索服务的完全限定域名 (FQDN) 使用 nslookup(或 ping)。 公有云中搜索服务的 FQDN 为 <service-name>.search.windows.net

  • 若要获取索引器可能在其中运行的多租户环境的 IP 地址,请使用 AzureCognitiveSearch 服务标记。 Azure 服务标记为每项服务发布了 IP 地址范围。 可以使用发现 API可下载的 JSON 文件找到这些 IP。 在任一情况下,IP 范围按区域划分。 只应指定分配给在其中预配了搜索服务的区域的 IP 范围。

对于某些数据源,服务标记本身可直接使用,而无需枚举 IP 范围列表(仍需显式使用搜索服务的 IP 地址)。 这些数据源通过设置一个网络安全组规则来限制访问。与 Azure 存储、Cosmos DB、Azure SQL 等提供的 IP 规则不同,该规则原生支持添加服务标记。 除了支持搜索服务 IP 地址外,还支持直接利用 AzureCognitiveSearch 服务标记的数据源包括:

通过专用终结点授予访问权限

将 Azure 认知搜索集成到在虚拟网络上运行的解决方案时,请考虑以下限制:

  • 索引器不能与虚拟网络服务终结点建立直接连接。 仅支持通过具有凭据、专用终结点、受信任服务和 IP 寻址的公共终结点建立索引器连接。
  • 搜索服务始终在云中运行,无法预配到在虚拟机上本机运行的特定虚拟网络。 Azure 认知搜索不提供此功能。

若要实现集成,可以使用专用终结点出站连接到锁定的资源(在受保护的虚拟网络上运行,或者只是无法通过公共连接使用)。

通过共享专用链接实现搜索服务连接到受保护资源的机制。 共享专用链接是认知搜索中创建、管理和使用的 Azure 专用链接资源。

计费影响

  • 共享专用链接需要可计费的搜索服务,其中,对于基于文本的索引,最低层是基本层,对于基于技能的索引,最低层是标准 2 (S2) 层。 有关详细信息,请参阅专用终结点数的层限制

  • 入站和出站连接受 Azure 专用链接定价的限制。

步骤 1:创建用于访问安全资源的专用终结点

在 Azure 认知搜索中,可以使用门户或管理 API 创建共享专用链接。

通过此(出站)专用终结点连接传送的流量只会源自搜索服务特定的“专用”索引器执行环境中的虚拟网络。

Azure 认知搜索将验证此 API 的调用方是否拥有 Azure RBAC 角色权限,可以批准对安全资源的专用终结点连接请求。 例如,如果你使用只读权限请求与存储帐户建立专用终结点连接,此调用将被拒绝。

步骤 2:批准专用终结点连接

当创建共享专用链接资源的(异步)操作完成时,将创建一个处于“挂起”状态的专用终结点连接。 暂时还没有任何流量流经该连接。

然后,客户需要查找并“批准”针对其安全资源的这种请求。 通常,可以通过 Azure 门户或 REST API 执行此操作。

步骤 3:强制索引器在“专用”环境中运行

使用已批准的专用终结点,可以成功地从搜索服务对实施了某种形式的网络级访问限制的资源(例如,配置为只能从特定虚拟网络访问的存储帐户数据源)进行传出调用。

这意味着,任何能够通过专用终结点访问此类数据源的索引器都将成功。 如果专用终结点未经批准,或者索引器不利用专用终结点连接,则索引器运行最终会出现 transientFailure

若要使索引器能够通过专用终结点连接访问资源,必须将索引器的 executionEnvironment 设置为 "Private",确保所有索引器运行能够利用专用终结点。 这是因为,专用终结点是在搜索服务特定的专用环境中预配的。

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

通过专用终结点建立索引器连接中更详细地介绍了这些步骤。 在你获得一个用于访问资源的已批准专用终结点后,设置为 private 的索引器将尝试通过专用终结点连接获取访问权限。

后续步骤