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

已完成

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

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

安全方法概述

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

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

数据加密

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

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

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

小窍门

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

保护入站流量

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

此图显示了通过 ExpressRoute 通过防火墙保护的入站流量进入 Azure AI 搜索。

如果搜索服务只能由本地资源使用,则可以使用 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 ID 的身份验证。

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

通过 IP 受限防火墙访问数据源的 Azure AI 搜索解决方案示意图。

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 搜索结果的安全筛选器