使用Azure AI 搜索索引器引入Microsoft Purview敏感度标签并强制实施文档级安全性(预览版)

注释

Azure AI 搜索可通过Azure门户REST APIAzure SDK获取。

重要

这些特性和功能是 2026-05-01 预览版 REST API 的一部分。 2026-05-01-preview 作为Azure订阅的一部分获得许可,并受Microsoft产品条款Microsoft产品和服务数据保护附录(“DPA”)和Azure预览版补充使用条款的约束。

2026-05-01-preview 支持连接到其他 Microsoft 服务和第三方服务。 使用这些服务受其各自的条款的约束,可能会导致数据处理或存储超出Azure符合性边界,以及流入Azure符合性边界的数据。

2026-05-01-preview 无法修改在 2026-05-01-preview 之外设置的访问权限。 如果您使用 2026-05-01-preview 处理受访问或权限限制的内容,那么在 2026-05-01-preview 识别这些访问或权限限制的更改之前,会存在一段时间延迟。

负责管理数据是否流出组织的合规性和地理边界以及任何相关影响,以及预配适当的权限、边界和审批。

你负责仔细查看和测试在特定用例上下文中生成的应用程序,并做出所有适当的决策和自定义。 此责任包括实施自己的负责任的 AI 缓解措施,例如元系统、内容筛选器或其他安全系统,并确保应用程序满足适当的质量、可靠性、安全性和可信度标准。

Azure AI 搜索支持在编制索引期间自动提取Microsoft Purview敏感度标签,并在查询时强制执行基于标签的访问控制。 此功能以预览版提供,使组织能够将搜索体验与Microsoft Purview中定义的现有 信息保护策略保持一致。

使用敏感度标签索引,Azure AI 搜索提取和存储描述每个文档敏感度级别的元数据。 它还强制实施基于标签的access control,确保只有经过授权的用户才能在搜索结果中查看或检索标记的内容。

此功能适用于以下数据源:

先决条件

  • 在编制索引之前,必须配置Microsoft Purview敏感度标签策略并将其应用于文档

  • Global AdministratorPrivileged Role Administrator 角色在您的 Microsoft Entra 租户中需要授予搜索服务对 Purview API 和敏感度标签的访问权限。

  • Azure AI 搜索服务和发出查询的用户必须位于同一Microsoft Entra 租户中。

  • 文件类型必须包含在 Purview 敏感度标签支持的格式列表中,并且也可以被Azure AI 搜索索引器识别为 Office 支持的文件类型

  • 使用 REST API 版本 2026-05-01-preview 或等效的预览版 SDK 包。

局限性

  • 初始版本仅支持 REST API 版本 2025-11-01-preview 和关联的 beta SDK。 没有用于配置或管理的门户体验。

  • 已启用 Purview 的索引不支持自动完成建议 API,因为它们尚不能强制实施基于标签的访问控制。

  • 不支持来宾帐户和跨租户查询。

  • 不支持用于权限分配的用户托管标识,以允许搜索服务提取敏感度标签和敏感度标记的内容。

  • 以下索引器功能不支持具有敏感度标签的文档。 如果在技能集或索引器中使用上述任何功能,则不会处理具有敏感度标签的文档。

策略强制实施的工作原理

敏感度标签支持分为两个阶段:索引编制和查询时间强制实施。

索引

按计划配置索引时,索引器将从数据源拉取新文档和更新。 对于每个文档,它捕获:

  • 文档内容
  • 关联的敏感度标签
  • 自上次运行索引器以来对内容或标签的更改

注释

在下次成功运行索引器之前,源文档上的标签更改不会反映在索引中。

1. 启用 AI 搜索托管标识

Azure AI 搜索 service 启用系统分配的托管标识。 索引器需要此标识以安全地访问 Microsoft Purview 并提取标签元数据。

2. 在 AI Search service上启用 RBAC

在Azure AI 搜索服务上启用基于角色的访问控制(RBAC)。 此步骤是必需的,因此与内容相关的操作(如索引内容和查询索引)成功。 保留 RBAC 和 API 密钥,以避免中断依赖于 API 密钥的作。

3. 授予权限以提取敏感度标签

访问 Microsoft Purview 敏感度标签元数据涉及的高特权操作包括读取加密内容和安全分类。 若要在Azure AI 搜索中启用此功能,必须向服务托管标识授予特定角色-遵循组织的内部治理和审批流程。

标识全局或特权角色管理员

如果需要确定谁可以授权搜索服务的权限,可以在 Microsoft Entra 租户中找到活跃或符合条件的全球管理员。

  1. Azure portal 中,搜索 Microsoft Entra ID

    Microsoft Entra 产品搜索动作的屏幕截图。

  2. 在左侧导航窗格中,选择“ 管理 > 角色”和“管理员”。

    Entra 角色和管理员页面的屏幕截图。

  3. 搜索 Global AdministratorPrivileged Role Administrator 角色并选择它。

    全球管理员角色选择的截图。

  4. “合格分配 ”和 “活动分配”下,查看有权运行权限设置过程的管理员列表。

    符合条件的角色和活动分配的屏幕截图。

安全治理审批

让内部安全或合规性团队查看请求。 Azure建议遵循公司的标准治理和安全评审过程,然后再继续执行任何角色分配。

批准后,Global Administrator或特权角色管理员必须将以下角色分配给由Azure AI 搜索系统分配的托管标识:

  • Content.SuperUser - 用于标签和内容提取
  • UnifiedPolicy.Tenant.Read - 用于 Purview 策略和标签元数据的访问

通过 PowerShell 分配角色

Global Administrator 或 特权角色管理员 应使用以下“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

# Microsoft 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"

# Microsoft Rights Management Services (MRMS) - Service Principal for policy read
$MRMSResourceSP = Get-EntraServicePrincipal -Filter "appID eq '00000012-0000-0000-c000-000000000000'"
New-EntraServicePrincipalAppRoleAssignment -ServicePrincipalId $managedIdentityObjectId -Principal $managedIdentityObjectId -ResourceId $MRMSResourceSP.Id -Id "7347eb49-7a1a-43c5-8eac-a5cd1d1c7cf0"

提供的 PowerShell 脚本中的 appID 角色与以下Azure角色相关联:

AppID 服务主体
870c4f2e-85b6-4d43-bdda-6ed9a579b725 Microsoft信息保护同步服务
00000012-0000-0000-c000-000000000000 Microsoft 权限管理服务

4.配置索引以启用 Purview 敏感度标签

当需要敏感度标签支持时,请在您的purviewEnabled中将true属性设置为

重要

必须在创建索引时将 purviewEnabled 属性设置为 true。 此设置是永久性的,以后无法修改。

如果 purviewEnabled 设置为 true,则所有文档操作 API 仅支持 RBAC 身份验证。

API 密钥访问仅限于索引架构的检索功能(包括列表和获取)。

PUT https://{service}.search.azure.cn/indexes('{indexName}')?api-version=2026-05-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=2026-05-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 分钟一次。

后续步骤