注释
此功能目前处于公开预览状态。 此预览版未随附服务级别协议,建议不要用于生产工作负载。 某些功能可能不受支持或者受限。 有关详细信息,请参阅适用于 Azure 预览版的补充使用条款。
Azure AI 搜索现在支持在索引编制期间自动提取文档级别 Microsoft Purview 敏感度标签 ,并在查询时强制执行基于标签的访问控制。 此功能在公共预览版中提供,使组织能够将搜索体验与 Azure Purview 中定义的现有 信息保护策略 保持一致。
使用敏感度标签索引,Azure AI 搜索提取并存储描述每个文档敏感度级别的元数据。 它还强制实施基于标签的访问控制,确保只有经过授权的用户才能在搜索结果中查看或检索标记的内容。
此功能适用于以下数据源:
重要
目前不支持管理员的门户配置和调试模式。
策略强制执行
在查询时,Azure AI 搜索会评估敏感度标签,并根据用户的 Microsoft Entra ID 令牌和 Purview 标签策略强制实施 文档级访问控制 。
只有有权在给定标签下访问具有 READ 使用权限 的内容的用户才能在搜索结果中检索相应的文档。 在更改之后,从文档提取标签的频率会有延迟。
按计划配置时,索引器将从数据源拉取新文档和更新。 它捕获:
- 新添加的文档及其关联的敏感度标签
- 文档内容更改
- 对现有文档的敏感度标签的更新
如果自上次运行索引器以来发生这些更新,则会检测到这些更新。
先决条件
Microsoft Purview 敏感度标签策略必须在编制索引之前配置并 应用于文档 。
Microsoft Entra 租户中的全局管理员或特权角色管理员角色需要授予搜索服务对 Purview API 和敏感度标签的访问权限。
Azure AI 搜索服务和查询内容的最终用户必须属于同一Microsoft Entra 租户。 不支持来宾用户和多租户方案。
文件类型必须包含在 Purview 敏感度标签支持的格式列表中,并且也可以被 Azure AI 搜索索引器识别为 Office 支持的文件类型 。
局限性
文档删除和敏感度标签存在已知问题。 为索引启用敏感度标签时,索引器无法枚举索引的文档。 因此,软删除作不会运行,因为索引器无法列出需要删除的文档。 这适用于支持软删除的索引器,包括 Azure Blob、ADLS Gen2、OneLake、SharePoint。
初始版本仅支持 REST API 版本 2025-11-01-preview 和关联的 beta SDK。 没有用于配置或管理的门户体验。
当与 基于 ACL 的安全筛选器 同时使用(目前也处于预览状态)时,不支持此功能。 独立测试每个功能,直到 Azure 宣布正式共存支持。
不支持来宾帐户和跨租户查询。
在初始版本中,启用敏感度标签的索引不支持未标记的文档,也不会在查询结果中返回它们。 此功能将在可用时编入文档。
以下索引器功能不支持具有敏感度标签的文档。 如果在技能组或索引器中使用这些功能中的任何一项,它们不会处理这些文档。
- 自定义 Web API 技能
- GenAI 提示技能
- 知识存储
- 索引器扩充缓存
- 调试会话
若要在 Azure AI 搜索中配置敏感度标签同步,必须遵循以下步骤。
1. 启用 AI 搜索托管标识
为 Azure AI 搜索服务启用系统分配的托管标识。 索引器需要此标识才能安全地访问 Azure Purview 并提取标签元数据。
2. 在 AI 搜索服务上启用 RBAC
在 Azure AI 搜索服务上启用基于角色的访问控制(RBAC)。 此步骤是必需的,以确保与内容相关的操作(如索引内容和查询索引)能够成功。 保留 RBAC 和 API 密钥,以避免中断依赖于 API 密钥的作。
3. 授予权限以提取敏感度标签
访问 Azure Purview 敏感度标签元数据涉及高特权作,包括读取加密内容和安全分类。 若要在 Azure AI 搜索中启用此功能,必须按照组织的内部治理和审批流程,向服务的托管标识授予特定角色。
标识全局或特权角色管理员
如果需要确定谁可以授权搜索服务的权限,可以在 Microsoft Entra 租户中找到活动或符合条件的全局管理员。
在 Azure 门户中,搜索“Microsoft Entra ID”。
在左侧导航窗格中,选择“ 管理 > 角色”和“管理员”。
搜索 全局管理员 或 特权角色管理员 角色,并选择它。
在 “合格分配 ”和 “活动分配”下,查看有权运行权限设置过程的管理员列表。
安全治理审批
让内部安全或合规性团队查看请求。 在继续执行任何角色分配之前,Azure 建议遵循公司的标准治理和安全评审过程。
获得批准后,全局管理员或特权角色管理员必须为Azure AI 搜索的系统分配托管标识分配以下角色:
- Content.SuperUser - 用于标签和内容提取
- UnifiedPolicy.Tenant.Read - 用于 Purview 策略和标签元数据访问
通过 PowerShell 分配角色
全局管理员或特权角色管理员应使用以下 PowerShell 脚本授予所需的权限。 将占位符值替换为实际订阅、资源组和搜索服务名称。
Install-Module -Name Az -Scope CurrentUser
Install-Module -Name Microsoft.Entra -AllowClobber
Import-Module Az.Resources
Connect-Entra -Scopes 'Application.ReadWrite.All'
$resourceIdWithManagedIdentity = "subscriptions/<subscriptionId>/resourceGroups/<resourceGroup>/providers/Microsoft.Search/searchServices/<searchServiceName>"
$managedIdentityObjectId = (Get-AzResource -ResourceId $resourceIdWithManagedIdentity).Identity.PrincipalId
# Azure Information Protection (MIP)
$MIPResourceSP = Get-EntraServicePrincipal -Filter "appID eq '870c4f2e-85b6-4d43-bdda-6ed9a579b725'"
New-EntraServicePrincipalAppRoleAssignment -ServicePrincipalId $managedIdentityObjectId -Principal $managedIdentityObjectId -ResourceId $MIPResourceSP.Id -Id "8b2071cd-015a-4025-8052-1c0dba2d3f64"
# ARM Service Principal for policy read
$ARMSResourceSP = Get-EntraServicePrincipal -Filter "appID eq '00000012-0000-0000-c000-000000000000'"
New-EntraServicePrincipalAppRoleAssignment -ServicePrincipalId $managedIdentityObjectId -Principal $managedIdentityObjectId -ResourceId $ARMSResourceSP.Id -Id "7347eb49-7a1a-43c5-8eac-a5cd1d1c7cf0"
提供的 PowerShell 脚本中的 appID 角色与以下 Azure 角色相关联:
| AppID | 服务主体 |
|---|---|
870c4f2e-85b6-4d43-bdda-6ed9a579b725 |
Azure 信息保护同步服务 |
00000012-0000-0000-c000-000000000000 |
Azure Resource Manager |
4.配置索引以启用 Purview 敏感度标签
如果需要敏感度标签支持,请在 索引定义中将 purviewEnabled 属性设置为 true。
重要
创建索引时,purviewEnabled 属性必须设置为 true。 此设置是永久性的,以后无法修改。 当purviewEnabled设置为true时,API的所有文档操作仅支持RBAC身份验证。 API 密钥访问仅限于索引架构检索(列表和获取)。
PUT https://{service}.search.azure.cn/indexes('{indexName}')?api-version=2025-11-01-preview
{
"purviewEnabled": true,
"fields": [
{
"name": "sensitivityLabel",
"type": "Edm.String",
"filterable": true,
"sensitivityLabel": true,
"retrievable": true
}
]
}
5. 配置数据源
若要启用敏感度标签引入,请使用 indexerPermissionOptions 属性设置为 [“sensitivityLabel”] 配置 数据源 。
{
"name": "purview-sensitivity-datasource",
"type": "azureblob", // < adjust type value according to the data source you are enabling this for: sharepoint, onelake, adlsgen2.
"indexerPermissionOptions": [ "sensitivityLabel" ],
"credentials": {
"connectionString": <your-connection-string>;"
},
"container": {
"name": "<container-name>"
}
}
该 indexerPermissionOptions 属性指示索引器在引入过程中提取敏感度标签元数据,并将其附加到索引文档。
6.在技能集中配置索引投影(如果适用)
如果索引器具有 技能集 ,并且通过 拆分技能实现数据分块,例如,如果已集成向量化,则必须确保通过 技能集中的索引投影将敏感度标签映射到每个区块。
PUT https://{service}.search.azure.cn/skillsets/{skillset}?api-version=2025-11-01-preview
{
"name": "my-skillset",
"skills": [
{
"@odata.type": "#Microsoft.Skills.Text.SplitSkill",
"name": "#split",
"context": "/document",
"inputs": [{ "name": "text", "source": "/document/content" }],
"outputs": [{ "name": "textItems", "targetName": "chunks" }]
}
// ... (other skills such as embeddings, entity recognition, etc.)
],
"indexProjections": {
"selectors": [
{
"targetIndexName": "chunks-index",
"parentKeyFieldName": "parentId", // must exist in target index
"sourceContext": "/document/chunks/*", // match your split output path
"mappings": [
{ "name": "chunkId", "source": "/document/chunks/*/id" }, // if you create an id per chunk
{ "name": "content", "source": "/document/chunks/*/text" }, // chunk text
{ "name": "parentId", "source": "/document/id" }, // parent doc id
{ "name": "sensitivityLabel", "source": "/document/metadata_sensitivity_label" } // <-- parent → child
]
}
],
"parameters": {
"projectionMode": "skipIndexingParentDocuments"
}
}
}
7. 配置索引器
- 在 索引器定义 中定义字段映射,以将提取的标签元数据路由到索引字段。 如果数据源以不同的字段名称(例如,metadata_sensitivity_label)发出标签元数据,请显式映射它。
{
"fieldMappings": [
{
"sourceFieldName": "metadata_sensitivity_label",
"targetFieldName": "sensitivityLabel"
}
]
}
- 在计划的索引器运行期间检测到对文档标签、内容或元数据的更改时,敏感度标签更新会自动编制索引。 按定期计划配置索引器。 支持的最小间隔为每 5 分钟一次。