Compartilhar via

保护“Azure AI Search”服务

本文提供了有助于保护 Azure AI 搜索服务的安全最佳做法。 你负责实施这些客户可配置的安全控制。 有关 Microsoft 内置保护(如网络体系结构、加密和合规性认证)的信息,请参阅 Azure AI Search 中的“数据、隐私和内置保护”。

作为解决方案架构师,应跨三个域配置安全控制:

  • 网络安全:控制搜索服务的入站和出站流量。
  • 身份验证和授权:定义如何访问您的搜索服务和数据、可以访问的人员以及可以访问的内容。
  • 数据保护:实现加密、访问控制和监视。

了解网络流量模式

在配置网络安全之前,请了解Azure AI Search中的三种网络流量模式:

  • 入站流量:从客户端到搜索服务的请求,例如查询、索引和管理操作。 此流量可由客户配置。

  • 出站流量:从搜索服务向外部资源发出的请求,例如连接到数据源的索引器、向量化器和自定义技能。 此流量可由客户配置。

  • 内部流量:通过微软主干网络的服务间调用。 此流量由Microsoft管理,客户无法配置。 有关详细信息,请参阅 内部流量保护

配置网络安全

使用以下方法之一来限制对搜索服务的入站访问。 这些方法按安全级别从最低到最高列出:

创建 IP 防火墙规则

创建入站防火墙规则以仅允许来自特定 IP 地址或地址范围的请求。 所有客户端连接都必须通过允许的 IP 地址进行。 否则,连接被拒绝。

IP 受限访问的示例体系结构图。

何时使用:需要限制对已知 IP 地址的访问的基本保护方案。

如何开始:请参阅 配置 Azure AI 搜索的网络访问和防火墙规则

创建专用终结点

为 Azure AI 搜索创建专用终结点,以允许虚拟网络上的客户端通过专用链接安全地访问搜索索引中的数据。 专用终结点使用虚拟网络地址空间中的 IP 地址。

客户端与搜索服务之间的网络流量通过虚拟网络和Microsoft骨干网络上的专用链接进行传输,从而消除了来自公共互联网的暴露。

专用终结点访问的示例体系结构图。

何时使用:适用于需要与公共互联网完全隔离的高安全性场景。

如何开始:请参阅 为 Azure AI 搜索创建专用终结点

加入网络安全外围

围绕部署在虚拟网络外部的平台即服务(PaaS)资源创建网络安全外围,以建立逻辑网络边界。 这将建立一个通过显式访问规则控制公共网络访问的边界。

入站客户端连接和服务间的连接发生在边界内,简化了对未经授权访问的防御。 在 Azure AI 搜索中,使用多个 Azure 资源的解决方案很常见。

何时使用:使用需要协调网络边界保护的多个 Azure PaaS 资源的解决方案。

如何开始

配置身份验证和授权

Azure AI 搜索支持两种身份验证方法。 您可以使用一种方法并禁用另一种方法,也可以在适当的控制下同时使用这两种方法。

使用 Microsoft Entra 身份验证来建立 调用方(而不是 请求)作为经过身份验证的标识。 Azure角色分配确定授权,提供集中式标识管理、条件访问策略和全面的审核日志。

基于角色的访问控制工作流为:

  1. 启用基于角色的访问控制,将搜索服务配置为接受 Microsoft Entra ID 身份验证,而不是(或以及)API 密钥。 请参阅 Azure AI 搜索中的“启用或禁用基于角色的访问控制”。

  2. 将角色分配给用户和组:使用内置角色(搜索服务参与者、搜索索引数据参与者和搜索索引数据读取者)授予最低特权访问权限,以控制谁可以管理和查询索引。 请参阅 如何使用角色连接到 Azure AI 搜索

  3. 使用标识连接应用程序:通过使用DefaultAzureCredential进行身份验证,无需 API 密钥,该方法支持托管标识、开发人员凭据和其他基于令牌的流。 参见 使用身份标识将应用程序连接到 Azure AI Search

配置 API 密钥身份验证

使用基于密钥的身份验证,每个请求都必须包含管理员或查询 API 密钥,以证明它源自受信任的源。 此方法适用于开发环境、与现有应用程序的向下兼容性,或在Microsoft Entra ID不可用的情况下。

基于密钥的身份验证工作流为:

  1. 在每个请求中提供 API 密钥:管理员密钥授予所有操作完全访问权限。 查询密钥授予对索引的文档集合的只读访问权限。 请参阅使用密钥连接到 Azure AI 搜索

  2. 按计划轮换管理密钥:通过定期重新生成管理密钥来降低密钥泄露的风险。 搜索服务支持两个管理密钥,用于零停机轮换。 请参阅 “重新生成管理密钥”。

授权控制平面操作

控制平面操作(服务创建、配置和删除)通过 Azure Resource Manager 基于角色的访问控制(这与所有 Azure 服务使用的模型相同)进行授权。 API 密钥不适用于控制平面操作。 三个内置 Azure 角色控制访问权限:

角色 权限
Owner 完全控制,包括访问管理。
参与者 完全控制,但不包括访问管理。
读取器 仅查看访问权限。

授权控制平面操作的工作流如下:

  1. 分配管理角色:使用内置的 Azure 角色(“所有者”、“参与者”和“读者”)来授予最低特权访问权限,并控制谁可以创建、配置或删除搜索服务。 请参阅 分配服务管理角色

  2. 应用资源锁:通过应用 CanNotDeleteReadOnly 锁定防止意外删除生产搜索服务。 请参阅 锁定 Azure 资源来保护基础结构

授权数据平面操作

数据平面操作针对托管在搜索服务上的内容,例如索引创建、文档加载和查询。 授权可通过基于角色的访问控制、API 密钥或两者获取。 有关配置步骤,请参阅前面有关 基于角色的访问控制API 密钥身份验证的部分。

授予对单个索引的访问权限

通过创建自定义角色定义来限制用户对单个索引的访问。 此方法对于必须在索引级别隔离每个租户的数据的多租户方案至关重要。 请参阅 授予对单个索引的访问权限

有关需要在索引级别设定安全边界的解决方案,请参阅 多租户 SaaS 应用程序和 Azure AI 搜索的设计模式

注释

API 密钥仅提供服务级别访问权限。 具有 管理员密钥 的任何人都可以读取、修改或删除搜索服务中的任何索引。 对于索引级隔离,请使用基于角色的访问控制或在应用程序的中间层实现隔离。

配置出站连接

出站请求源自搜索服务到其他应用程序,通常是由索引器、自定义技能和向量器生成的。 配置这些连接以使用安全的身份验证和网络访问。

为搜索服务创建托管标识,以向其他 Azure 资源进行身份验证,而无需在代码中存储凭据。 使用托管标识消除存储和轮换包含凭据的连接字符串的需要。

使用托管标识的工作流如下:

  1. 为搜索服务配置托管标识:在系统分配的托管标识或用户分配的托管标识之间进行选择。 请参阅 配置搜索服务以使用托管标识进行连接

  2. 使用托管标识连接到外部资源:支持的连接包括 Azure StorageAzure Cosmos DBAzure SQL DatabaseSQL Managed InstanceAzure Functions

安全访问外部数据

根据外部资源保护方式配置安全连接:

小窍门

如果Azure Storage和Azure AI Search位于同一区域,则通过Microsoft主干网络通过专用 IP 地址自动路由网络流量,无需防火墙配置。 有关详细信息,请参阅 同一区域 Azure 存储和 Azure AI 搜索

用于外部 AI 处理的安全连接

针对 AI 扩充和向量化的出站请求需要特别考虑:

运算 配置
连接到数据源的索引器 保护对外部数据的访问
调用外部代码的自定义技能 保护与 Azure Functions、Web 应用或其他主机的连接。
索引期间矢量化 连接到 Azure OpenAI 或自定义嵌入模型。
Azure Key Vault 连接到 Azure Key Vault 以获取 客户管理的加密密钥

对于基本检索扩充生成(RAG)模式,当客户端应用程序调用聊天完成模型时,连接使用客户端或用户标识,而不是搜索服务标识。 对于使用知识库的代理检索,出站请求由搜索服务的托管标识发出。

实现文档级访问控制

文档级别的用户权限(也称为 行级安全性)控制用户可以通过查询执行访问哪些文档。

配置文档级安全性

在文档级别配置细化权限,从数据引入到查询执行。 对于构建需要在文档级别进行授权检查的安全 AI 代理系统、数据基础应用程序、RAG 应用程序和企业搜索解决方案,此功能至关重要。 有关详细信息,请参阅 文档级访问控制

使用敏感度标签(预览版)

配置索引器,以便在索引过程自动检测 Microsoft Purview 敏感度标签,并在执行查询时应用基于标签的访问控制。 有关详细信息,请参阅 敏感度标签

配置数据加密

Azure AI Search使用Microsoft管理的密钥自动加密所有数据。 有关内置加密的信息,请参阅 数据加密

为了增强数据保护,可以实现以下加密控制。

(可选)添加客户管理的密钥加密

通过在 Azure Key Vault 中管理自己的加密密钥,为索引和同义词映射添加额外的加密层。 客户管理的密钥(CMK)适用于符合性要求的组织,要求客户控制加密密钥或密钥吊销功能。 请参阅 在 Azure AI Search 中配置客户管理的密钥进行数据加密。

还可以配置以下选项:

重要

  • CMK 加密会增加索引大小,并且可能会使查询性能降低 30-60%。 仅对需要它的索引启用。
  • 2021年5月13日之后创建的服务才支持在临时磁盘上使用CMK。 早期服务仅支持数据磁盘上的 CMK。

为加密的 Blob 数据编制索引

配置索引器以处理静态加密Azure Blob Storage中的内容,该内容独立于搜索索引的 CMK 加密。 请参阅 教程:为加密的 Blob 编制索引和扩充

(可选)启用机密计算

机密计算通过硬件证明和加密保护使用中的数据免受未经授权的访问,包括来自微软的未经授权访问。 此计算类型只能在服务创建期间进行配置。 请参阅 “选择计算类型”。

我们仅建议对符合性或法规要求需要数据使用保护的组织进行机密计算。 对于每日使用,默认计算类型就足够了。

计算类型 说明 局限性 Cost 可用性
默认 具有内置加密的标准 VM,为静态数据和传输中的数据提供加密。 不使用基于硬件的数据隔离。 没有限制。 不会更改免费层或计费层的基本成本。 在所有区域中都可用。
机密 在基于硬件的受信任执行环境中的机密虚拟机(DCasv5 或 DCesv5)。 将计算和内存与主机作系统和其他 VM 隔离开来。 禁用或限制代理检索语义排名器查询重写技能集执行和在多租户环境中运行的索引器1。 将 10% 附加费添加到可计费层的基本成本。 有关详细信息,请参阅定价页 在某些区域中可用。 有关详细信息,请参阅 支持的区域列表

1 启用此计算类型时,索引器只能在专用执行环境中运行,这意味着它们从托管在机密计算上的搜索群集运行。

启用监视和日志记录

通过为搜索服务启用日志记录和监控来跟踪操作、检测异常并协助安全审核。 有关 Azure AI 搜索默认日志的信息,请参阅 数据日志记录

使用Azure Policy

应用资源标记

应用资源标记,按环境、数据敏感度、成本中心或合规性要求对搜索服务进行分类,以提高治理能力。 请参阅 “使用标记”来组织 Azure 资源和管理层次结构

安全清单

使用此清单来确保已配置适当的安全控制:

网络安全性

  • [ ] 配置的 IP 防火墙规则、专用终结点或网络安全边界
  • [ ] 限制对已知客户端或网络的入站访问
  • [ ] 使用托管标识配置安全出站连接

身份验证和授权

  • [ ] 已启用基于角色的访问控制
  • [ ] 为用户和应用程序分配了适当的角色
  • [ ] 已实施的管理员密钥轮换计划(如果使用密钥)
  • [ ] 配置的索引级权限(如果需要)

数据保护

  • [ ] 配置文档级访问控制(如果需要)
  • [ ] 配置的敏感度标签(如果适用)
  • [ ] 已实现 CMK 加密(如果需要)
  • [ ] 评估的机密计算要求(如果适用)

监视和符合性

  • [ ] 已启用诊断日志记录
  • [ ] 设置监视和警报以识别异常活动
  • [ ] 应用了用于治理的资源标记
  • [ ] 为资源日志记录分配Azure Policy
  • [ ] 已根据要求评审符合性认证