Azure 虚拟机上到 SQL Server 实例的索引器连接

在配置 Azure SQL 索引器以从 Azure 虚拟机上的数据库中提取内容时,需要执行其他步骤来进行安全连接。

从 Azure AI 搜索到虚拟机上的 SQL Server 实例的连接是公共 Internet 连接。 为了成功建立安全连接,请执行以下步骤:

  • 对于虚拟机上 SQL Server 实例的完全限定的域名,请从证书颁发机构提供程序获取证书。
  • 在虚拟机上安装证书。

在 VM 上安装证书后,即可完成本文中的以下步骤。

注意

Azure AI 搜索索引器当前不支持 Always Encrypted 列。

启用加密连接

对于所有通过公共 Internet 连接的索引器请求,Azure AI 搜索都需要使用加密通道。 本部分列出了实现此目的的步骤。

  1. 查看证书的属性,验证使用者名称是否是 Azure VM 的完全限定的域名 (FQDN)。

    可以使用 CertUtils 等工具或证书管理单元查看属性。 可从 Azure 门户中 VM 服务页面的“基本要素”部分中获取 FQDN(位于“公共 IP 地址/DNS 名称标签”字段中)。

    FQDN 通常格式为 <your-VM-name>.<region>.cloudapp.chinacloudapi.cn

  2. 使用注册表编辑器 (regedit) 将 SQL Server 配置为使用证书。

    尽管 SQL Server 配置管理器通常用于此任务,但不能在此方案中使用它。 它不会查找导入的证书,因为 Azure 上 VM 的 FQDN 与该 VM 确定的 FQDN(它将域标识为本地计算机或它所加入到的网络域)不匹配。 名称不匹配时,使用 regedit 指定证书。

    1. 在 regedit 中,浏览到此注册表项:HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Microsoft SQL Server\[MSSQL13.MSSQLSERVER]\MSSQLServer\SuperSocketNetLib\Certificate

      [MSSQL13.MSSQLSERVER] 部分因版本和实例名称而异。

    2. 将证书密钥的值设置为已导入到 VM 的 TLS/SSL 证书的指纹(不带空格)。

    可通过多种方式获取指纹,有些方式十分有效。 如果从 MMC 的“证书”管理单元中复制指纹,可能会如此支持文章中所述选取不可见的前导字符,这会导致在尝试连接时出错。 提供了几种更正此问题的解决方法。 最简单的方法是按 Backspace 键退格,并重新键入指纹的第一个字符,以在 regedit 中删除密钥值字段中的前导字符。 此外,也可以使用其他工具复制指纹。

  3. 向服务帐户授予权限。

    请确保向 SQL Server 服务帐户授予 TLS/SSL 证书私钥的相应权限。 如果忽略此步骤,SQL Server 将不会启动。 可使用证书管理单元或 CertUtils 执行此任务。

  4. 重新启动 SQL Server 服务。

连接到 SQL Server

设置 Azure AI 搜索所需的加密连接后,请通过其公共终结点连接到实例。 以下文章介绍了连接要求和语法:

配置网络安全组

最佳做法是配置网络安全组 (NSG) 和相应的 Azure 终结点或访问控制列表 (ACL),使其他方可以访问你的 Azure VM。 可能之前已完成此操作,以允许自己的应用程序逻辑连接到 SQL Azure VM。 这不同于将 Azure AI 搜索连接到 SQL Azure VM。

以下步骤和链接提供了有关为 VM 部署配置 NSG 的说明。 使用这些说明,根据 IP 地址为搜索服务终结点配置 ACL。

  1. 获取搜索服务的 IP 地址。 有关说明,请参阅下一部分

  2. 将搜索 IP 地址添加到安全组的 IP 筛选器列表中。 以下任何一篇文章都说明了这些步骤:

IP 寻址会产生一些挑战,如果了解问题和潜在解决方法,则可以轻松应对。 剩余部分提供了有关处理 ACL 中与 IP 地址相关的问题的建议。

强烈建议你在 ACL 中限制对搜索服务的 IP 地址及 AzureCognitiveSearch 服务标记的 IP 地址范围的访问,而不是使 SQL Azure VM 对所有连接请求开放。

通过对搜索服务的 FQDN(例如 <your-search-service-name>.search.azure.cn)进行 ping 操作,可找到 IP 地址。 虽然搜索服务 IP 地址可能会发生更改,但不太可能更改。 此 IP 地址在服务生存期内通常是静态的。

可以使用可下载的 JSON 文件或通过服务标记发现 API 找到 AzureCognitiveSearch 服务标记的 IP 地址范围。 IP 地址范围每周更新一次。

包含 Azure 门户 IP 地址

若要使用 Azure 门户创建索引器,则必须授予门户对 SQL Azure 虚拟机的入站访问权限。 防火墙中的入站规则要求你提供门户的 IP 地址。

若要获取门户 IP 地址,请 ping stamp2.ext.search.azure.cn(即流量管理器的域)。 请求超时,但 IP 地址在状态消息中可见。 例如,在消息“正在对 azsyrie.chinaeast.cloudapp.chinacloudapi.cn [52.252.175.48] 执行 ping 操作”中,IP 地址为“52.252.175.48”。

不同区域中的群集会连接到不同的流量管理器。 无论域名是什么,ping 返回的 IP 地址都是为你所在区域的 Azure 门户定义入站防火墙规则时要使用的正确 IP 地址。

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

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

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

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

后续步骤

完成配置后,现在可以将 Azure VM 上的 SQL Server 指定为 Azure AI 搜索索引器的数据源。 有关详细信息,请参阅为 Azure SQL 中的数据编制索引