本文提供了有助于保护Azure AI 搜索服务的安全最佳做法。 你负责实施这些客户可配置的安全控制。 有关 Microsoft 内置保护(例如网络体系结构、加密和合规性认证)的信息,请参阅 Azure AI 搜索中的数据、隐私和内置保护。
作为解决方案架构师,应跨三个域配置安全控制:
- 网络安全:控制搜索服务的入站和出站流量。
- 身份验证和授权:定义如何访问您的搜索服务和数据、可以访问的人员以及可以访问的内容。
- 数据保护:实现加密、访问控制和监视。
了解网络流量模式
在配置网络安全之前,请了解Azure AI 搜索中的三种网络流量模式:
入站流量:从客户端到搜索服务的请求,例如查询、索引和管理操作。 此流量可由客户配置。
出站流量:从搜索服务向外部资源发出的请求,例如连接到数据源的索引器、向量化器和自定义技能。 此流量可由客户配置。
内部流量:通过Microsoft主干网络进行的服务间调用。 此流量由Microsoft管理,客户不可配置。 有关详细信息,请参阅 内部流量保护。
配置网络安全
使用以下方法之一来限制对搜索服务的入站访问。 这些方法按安全级别从最低到最高列出:
创建 IP 防火墙规则
创建入站防火墙规则以仅允许来自特定 IP 地址或地址范围的请求。 所有客户端连接都必须通过允许的 IP 地址进行。 否则,连接被拒绝。
何时使用:需要限制对已知 IP 地址的访问的基本保护方案。
如何开始:请参阅 配置网络访问和防火墙规则以适用于 Azure AI 搜索。
创建专用终结点
为Azure AI 搜索创建专用终结点,以允许虚拟网络上的客户端通过专用链接安全地访问搜索索引中的数据。 专用终结点使用虚拟网络地址空间中的 IP 地址。
客户端与搜索服务之间的网络流量通过虚拟网络以及 Microsoft 主干网络上的专用链接进行传输,从而避免了来自公共互联网的暴露。
何时使用:适用于需要与公共互联网完全隔离的高安全性场景。
如何开始:请参阅 为 Azure AI 搜索 创建专用终结点。
加入网络安全外围
围绕部署在虚拟网络外部的平台即服务(PaaS)资源创建网络安全外围,以建立逻辑网络边界。 这将建立一个通过显式访问规则控制公共网络访问的边界。
入站客户端连接和服务间的连接发生在边界内,简化了对未经授权访问的防御。 在Azure AI 搜索中,使用多个Azure资源的解决方案很常见。
何时使用:适用于使用多个 Azure PaaS 资源且需要协调网络边界保护的解决方案。
如何开始:
- 首先,将Azure AI 搜索加入网络安全外围。 请参阅 向网络安全外围添加搜索服务。
配置身份验证和授权
Azure AI 搜索支持两种身份验证方法。 您可以使用一种方法并禁用另一种方法,也可以在适当的控制下同时使用这两种方法。
(推荐)启用基于角色的访问控制
使用 Microsoft Entra 身份验证,将认证身份定为 caller 而非 request。 Azure角色分配确定授权,提供集中式标识管理、条件访问策略和全面的审核线索。
基于角色的访问控制工作流为:
启用基于角色的访问控制:将搜索服务配置为接受Microsoft Entra ID身份验证,而不是(或除)API 密钥。 请参阅 在 Azure AI 搜索 中启用或禁用基于角色的访问控制。
将角色分配给用户和组:使用内置角色(搜索服务参与者、搜索索引数据参与者和搜索索引数据读取者)授予最低特权访问权限,以控制谁可以管理和查询索引。 请参阅 使用角色连接到 Azure AI 搜索。
使用标识连接应用程序:通过使用
DefaultAzureCredential进行身份验证,无需 API 密钥,该方法支持托管标识、开发人员凭据和其他基于令牌的流。 请参阅 使用标识连接应用至Azure AI 搜索。
配置 API 密钥身份验证
使用基于密钥的身份验证,每个请求都必须包含管理员或查询 API 密钥,以证明它源自受信任的源。 这种方法适用于开发环境、需要与现有应用程序保持向后兼容的情况,或在没有 Microsoft Entra ID 的情况下的应用场景。
基于密钥的身份验证工作流为:
在每个请求中提供 API 密钥:管理员密钥授予所有操作完全访问权限。 查询密钥授予对索引的文档集合的只读访问权限。 请参阅 使用密钥连接到 Azure AI 搜索。
按计划轮换管理密钥:通过定期重新生成管理密钥来降低密钥泄露的风险。 搜索服务支持两个管理密钥,用于零停机轮换。 请参阅 “重新生成管理密钥”。
授权控制平面操作
控制平面操作(服务创建、配置和删除)通过Azure 资源管理器基于角色的访问控制(在所有Azure服务中使用的同一模型)获得授权。 API 密钥不适用于控制平面操作。 三个内置Azure角色控制访问权限:
| 角色 | 权限 |
|---|---|
| Owner | 完全控制,包括访问管理。 |
| 参与者 | 完全控制,但不包括访问管理。 |
| 读取器 | 仅查看访问权限。 |
授权控制平面操作的工作流如下:
分配管理角色:使用内置的 Azure 角色(所有者、参与者和读者)来授予最小特权访问权限,并控制谁可以创建、配置或删除搜索服务。 请参阅 分配服务管理角色。
应用资源锁:通过应用
CanNotDelete或ReadOnly锁定防止意外删除生产搜索服务。 请参阅 锁定Azure资源来保护基础结构。
授权数据平面操作
数据平面操作针对托管在搜索服务上的内容,例如索引创建、文档加载和查询。 授权可通过基于角色的访问控制、API 密钥或两者获取。 有关配置步骤,请参阅前面有关 基于角色的访问控制 和 API 密钥身份验证的部分。
授予对单个索引的访问权限
通过创建自定义角色定义来限制用户对单个索引的访问。 此方法对于必须在索引级别隔离每个租户的数据的多租户方案至关重要。 请参阅 授予对单个索引的访问权限。
有关在索引级别需要安全边界的解决方案,请参阅《多租户 SaaS 应用程序与 Azure AI 搜索的设计模式》。
注释
API 密钥仅提供服务级别访问权限。 具有 管理员密钥 的任何人都可以读取、修改或删除搜索服务中的任何索引。 对于索引级隔离,请使用基于角色的访问控制或在应用程序的中间层实现隔离。
配置出站连接
出站请求源自搜索服务到其他应用程序,通常是由索引器、自定义技能和向量器生成的。 配置这些连接以使用安全的身份验证和网络访问。
(推荐)使用托管标识
为搜索服务创建托管标识,以向其他Azure资源进行身份验证,而无需在代码中存储凭据。 使用托管标识消除存储和轮换包含凭据的连接字符串的需要。
使用托管标识的工作流如下:
为搜索服务配置托管标识:在系统分配的托管标识或用户分配的托管标识之间进行选择。 请参阅 配置搜索服务以使用托管标识进行连接。
使用托管标识连接到外部资源:支持的连接包括 Azure 存储、Azure Cosmos DB、Azure SQL 数据库、SQL 托管实例 和 Azure Functions。
安全访问外部数据
根据外部资源保护方式配置安全连接:
创建搜索服务的防火墙例外 :通过将搜索服务的出站 IP 地址添加到允许列表,允许索引器的流量通过数据源防火墙。 请参阅 配置 IP 防火墙规则,以允许从 Azure AI 搜索 建立索引器连接。创建共享专用链接:将索引器连接到受Azure 专用链接保护的数据源,而不会向公共 Internet 公开流量。 请参阅 通过共享专用链接建立出站连接。
对同一区域存储使用受信任的服务例外:在未配置防火墙的情况下,允许索引器访问同一区域中的安全Azure 存储帐户。 请参阅 将索引器作为受信任的服务连接到 Azure 存储。
配置资源实例规则:授予特定搜索服务对受网络规则保护的Azure 存储帐户的访问权限。 请参阅授予Azure资源实例的访问权限。
连接到SQL 托管实例专用终结点:通过专用终结点访问SQL 托管实例数据库,同时保持网络隔离。 请参阅 从 Azure AI 搜索 创建 SQL 托管实例的共享专用链接。
小窍门
如果Azure 存储和Azure AI 搜索位于同一区域,则通过Microsoft主干网络通过专用 IP 地址自动路由网络流量,无需防火墙配置。 有关详细信息,请参阅 Same-region Azure 存储 和 Azure AI 搜索。
用于外部 AI 处理的安全连接
针对 AI 扩充和向量化的出站请求需要特别考虑:
| 运算 | 配置 |
|---|---|
| 连接到数据源的索引器 | 保护对外部数据的访问。 |
| 调用外部代码的自定义技能 | 安全连接到 Azure Functions、Web 应用或其他主机。 |
| 索引期间矢量化 | 连接到 Azure AI 服务 或自定义嵌入模型。 |
| Azure 密钥保管库 | 连接到 Azure 密钥保管库 以使用客户管理的加密密钥。 |
对于基本检索扩充生成(RAG)模式,当客户端应用程序调用聊天完成模型时,连接使用客户端或用户标识,而不是搜索服务标识。 对于使用知识库的代理检索,出站请求由搜索服务的托管标识发出。
实现文档级访问控制
文档级别的用户权限(也称为 行级安全性)控制用户可以通过查询执行访问哪些文档。
配置文档级安全性
在文档级别配置细化权限,从数据引入到查询执行。 对于构建需要在文档级别进行授权检查的安全 AI 代理系统、数据基础应用程序、RAG 应用程序和企业搜索解决方案,此功能至关重要。 有关详细信息,请参阅 文档级访问控制。
使用敏感度标签(预览版)
配置索引器,以便在索引编制期间自动检测Microsoft Purview敏感度标签,并在执行查询时应用基于标签的访问控制。 有关详细信息,请参阅 敏感度标签。
配置数据加密
Azure AI 搜索使用Microsoft管理的密钥自动加密所有数据。 有关内置加密的信息,请参阅 数据加密。
为了增强数据保护,可以实现以下加密控制。
(可选)添加客户管理的密钥加密
通过在 Azure 密钥保管库 中管理自己的加密密钥,为索引和同义词映射添加额外的加密层。 客户管理的密钥(CMK)适用于符合性要求的组织,要求客户控制加密密钥或密钥吊销功能。 请参阅 在 Azure AI 搜索 中配置客户管理的密钥进行数据加密。
还可以配置以下选项:
配置跨租户 CMK:支持多租户方案,其中密钥存储在与搜索服务不同的Microsoft Entra租户中。 请参阅 跨不同租户配置客户管理的密钥。
查找加密对象:确定哪些索引和同义词映射使用 CMK 加密。 请参阅 “查找加密对象和信息”。
重要
- CMK 加密会增加索引大小,并且可能会使查询性能降低 30-60%。 仅对需要它的索引启用。
- 2021年5月13日之后创建的服务才支持在临时磁盘上使用CMK。 早期服务仅支持数据磁盘上的 CMK。
为加密的 Blob 数据编制索引
配置索引器以处理静态加密Azure Blob 存储中的内容,该内容独立于搜索索引的 CMK 加密。 请参阅 教程:为加密的 Blob 编制索引和扩充。
(可选)启用机密计算
机密计算通过硬件证明和加密保护使用中的数据免受未经授权的访问,即使是Microsoft也无法访问。 此计算类型只能在服务创建期间进行配置。 请参阅 “选择计算类型”。
我们仅建议对符合性或法规要求需要数据使用保护的组织进行机密计算。 对于每日使用,默认计算类型就足够了。
| 计算类型 | 说明 | 局限性 | Cost | 可用性 |
|---|---|---|---|---|
| 默认 | 具有内置加密的标准 VM,为静态数据和传输中的数据提供加密。 不使用基于硬件的数据隔离。 | 没有限制。 | 不会更改免费层或计费层的基本成本。 | 在所有区域中都可用。 |
| 机密 | 在基于硬件的受信任执行环境中的机密虚拟机(DCasv5 或 DCesv5)。 将计算和内存与主机作系统和其他 VM 隔离开来。 | 禁用或限制 |
将 10% 附加费添加到可计费层的基本成本。 有关详细信息,请参阅定价页。 | 在某些区域中可用。 有关详细信息,请参阅 支持的区域列表。 |
1 启用此计算类型时,索引器只能在专用执行环境中运行,这意味着它们从托管在机密计算上的搜索群集运行。
启用监视和日志记录
通过为搜索服务启用日志记录和监控来跟踪操作、检测异常并协助安全审核。 有关 Azure AI 搜索 默认记录的信息,请参阅 数据日志记录。
启用诊断日志记录:通过将日志发送到Azure Monitor、事件中心或Azure 存储来捕获安全审核和异常情况检测的操作。 请参阅 配置 Azure AI 搜索 的诊断日志记录。
监视查询:跟踪搜索查询活动、延迟和限制以检测异常模式。 请参阅 在 Azure AI 搜索 中监控查询请求。
监视索引器操作:跟踪索引活动、错误和数据刷新操作。 请参阅 监视索引器状态和结果与 Azure AI 搜索。
为异常活动配置警报:为查询卷峰值、失败的身份验证尝试和异常访问模式创建警报规则。 请参阅 “创建或编辑指标警报规则”。
使用 Power BI 可视化日志:生成仪表板以分析搜索服务活动并确定安全趋势。 请参阅 使用 Power BI 可视化 Azure AI 搜索 日志和指标。
使用Azure Policy
审查内置策略定义:使用 Azure 策略用于审核和强制安全配置,例如诊断日志记录和专用终结点的使用。 请参阅 适用于 Azure AI 搜索 的 Azure Policy 合规控制。
分配资源日志记录策略:自动识别缺少诊断日志记录的搜索服务并修正配置。 请参阅 Azure Policy 概述。
创建自定义策略:定义特定于组织的安全要求,并在所有搜索服务中强制实施这些要求。 请参阅 教程:创建自定义策略定义。
应用资源标记
应用资源标记,按环境、数据敏感度、成本中心或合规性要求对搜索服务进行分类,以提高治理能力。 请参阅 使用标记来组织Azure资源和管理层次结构。
安全清单
使用此清单来确保已配置适当的安全控制:
网络安全性:
- [ ] 配置的 IP 防火墙规则、专用终结点或网络安全边界
- [ ] 限制对已知客户端或网络的入站访问
- [ ] 使用托管标识配置安全出站连接
身份验证和授权:
- [ ] 已启用基于角色的访问控制
- [ ] 为用户和应用程序分配了适当的角色
- [ ] 已实施的管理员密钥轮换计划(如果使用密钥)
- [ ] 配置的索引级权限(如果需要)
数据保护:
- [ ] 配置文档级访问控制(如果需要)
- [ ] 配置的敏感度标签(如果适用)
- [ ] 已实现 CMK 加密(如果需要)
- [ ] 评估的机密计算要求(如果适用)
监视和符合性:
- [ ] 已启用诊断日志记录
- [ ] 设置监视和警报以识别异常活动
- [ ] 应用了用于治理的资源标记
- [ ] 为资源日志记录分配Azure Policy
- [ ] 已根据要求评审符合性认证