管理 Azure AI 搜索解决方案的安全性

已完成

组织需要能够信任其搜索解决方案的安全性。 Azure AI 搜索使你能够控制如何保护搜索的数据。

在这里,你将了解如何保护搜索解决方案。 你将重点关注加密数据的位置以及保护入站和出站数据流的方式。 最后,你将了解如何针对特定用户或组限制对搜索结果的访问。

安全方法概述

AI 搜索安全性基于 Azure 的现有网络安全功能。 在考虑保护搜索解决方案时,可以专注于三个方面:

  • 用户发出的对搜索解决方案的入站搜索请求
  • 用于为文档编制索引的从搜索解决方案到其他服务器的出站请求
  • 限制每个用户搜索请求的文档级别的访问权限

数据加密

与所有 Azure 服务一样,Azure AI 搜索服务使用服务管理的密钥加密其静态存储的数据。 此加密包括索引、数据源、同义词映射、技能集,甚至索引器定义。

传输中的数据使用标准 HTTPS TLS 1.3 加密通过端口 443 进行加密。

如果想要使用自己的加密密钥,ACS 支持使用 Azure Key Vault。 使用自己的客户管理的密钥的一个好处是,将在使用自定义密钥的所有对象上启用双重加密。

提示

有关如何使用客户管理的密钥进行加密的详细步骤,请参阅在 Azure AI 搜索中配置客户管理的密钥以进行数据加密

保护入站流量

如果可从 Internet 或应用外部访问搜索解决方案,则可以减少攻击面。 Azure AI 搜索允许使用防火墙免费限制对公共终结点的访问,以允许从特定 IP 地址进行访问。

Diagram showing inbound traffic secured using ExpressRoute through a firewall into Azure AI Search.

如果搜索服务仅供本地资源使用,则可以使用 ExpressRoute 线路、Azure 网关和应用服务强化安全性。 还可以选择更改公共终结点以使用 Azure 专用链接。 还将需要设置 Azure 虚拟网络和其他资源。 使用专用终结点是最安全的解决方案,尽管它确实增加了使用需要在 Azure 平台上托管的服务的成本。

提示

有关专用终结点的详细信息,请参阅创建专用终结点以建立与 Azure AI 搜索的安全连接

验证对搜索解决方案的请求

有了用于减少搜索解决方案攻击面的基础结构之后,可以将重点转向如何验证来自用户和应用的搜索请求。

创建 ACS 时的默认选项是基于密钥的身份验证。 有两种不同类型的密钥:

  • 管理密钥 - 授予写入权限和查询系统信息的权限(每个搜索服务最多可以创建 2 个管理密钥
  • 查询密钥 - 授予读取权限,由用户或应用用于查询索引(每个搜索服务最多可以创建 50 个查询密钥

重要

针对数据平面操作的基于角色的访问控制目前处于预览状态,并根据补充使用条款进行使用。 角色仅在 Azure 公有云中可用,并且使用这些角色会使搜索请求的延迟增加。

基于角色的访问控制 (RBAC) 由 Azure 平台作为全局系统提供,用于控制对资源的访问。 可以通过以下方式在 Azure AI 搜索中使用 RBAC:

  • 可以授予角色用于管理服务的权限
  • 定义有权创建、加载和查询索引的角色

可以分配用于管理 Azure AI 搜索服务的内置角色包括:

  • 所有者 - 具有对所有搜索资源的完全访问权限
  • 参与者 - 同上,但无法分配角色或更改授权
  • 读者 - 查看部分服务信息

如果需要还可以管理数据平面(例如搜索索引或数据源)的角色,请使用以下角色之一:

  • 搜索服务参与者 - 搜索服务管理员(与上面的参与者角色具有相同的访问权限)和内容(索引、索引器、数据源和技能集)的角色
  • 搜索索引数据参与者 - 将导入、刷新或查询索引的文档集合的开发人员或索引所有者的角色
  • 搜索索引数据读者 - 仅需要运行查询的应用和用户的只读访问角色

提示

有关如何使用 RBAC 进行身份验证的详细信息,请参阅在 Azure AI 搜索中使用 Azure 基于角色的访问控制 (Azure RBAC)

保护出站流量

通常,出站流量会为源数据编制索引或使用人工智能 (AI) 对其进行扩充。 如果你可以使用 Microsoft Entra ID,则出站连接支持使用基于密钥的身份验证、数据库登录名或 Microsoft Entra 登录名。

如果数据源托管在 Azure 平台上,你还可以使用系统或用户分配的托管标识来保护连接。

Diagram showing Azure AI Search solution accessing data sources through an IP restricted firewall.

Azure 服务可以使用防火墙限制对它们的访问。 防火墙可配置为仅允许 Azure AI 搜索服务的 IP 地址。 如果要使用 AI 扩充索引,则还需要允许 AzureCognitiveSearch 服务标记中的所有 IP 地址

可以选择在索引器使用的共享专用链接后保护源数据。

重要

共享专用链接需要基本层来实现基于文本的索引编制,需要标准 2 (S2) 层来实现基于技能的索引编制。 有关定价详细信息,请参阅 Azure 专用链接定价

在文档级别保护数据

可以配置 Azure AI 搜索以限制某人可以搜索的文档,例如,将合同 PDF 搜索限制为法律部门的人员。

控制文档级别的访问权限需要更新搜索索引中的每个文档。 需要向每个文档添加包含可访问该文档的用户或组 ID 的新安全字段。 安全字段需要可筛选,以便能够在字段中筛选搜索结果。

有了此字段并填充了允许的用户或组之后,可以通过将 search.in 筛选器添加到所有搜索查询来限制结果。 如果使用 HTTP POST 请求,正文应如下所示:

{
   "filter":"security_field/any(g:search.in(g, 'user_id1, group_id1, group_id2'))"  
}

这将根据该用户所属的用户 ID 和组筛选返回的搜索结果。 如果应用程序可以使用 Microsoft Entra ID,则可以从此处使用用户的标识和组成员身份。

提示

有关如何使用 Microsoft Entra ID 的分步指南,请参阅用于使用 Active Directory 标识剪裁 Azure AI 搜索结果的安全筛选器