你当前正在访问 Microsoft Azure Global Edition 技术文档网站。 如果需要访问由世纪互联运营的 Microsoft Azure 中国技术文档网站,请访问 https://docs.azure.cn。

使用SharePoint索引器根据用户访问权限引入权限元数据并筛选搜索结果(预览版)

注意

Azure AI 搜索可通过Azure门户、REST API 和Azure SDK获取。 它也是 Foundry IQ 的基础;Foundry IQ 是一个托管式知识层,可将企业内容转化为供 Microsoft Foundry 门户中的智能体使用的、可复用且具备权限感知能力的知识库。

重要

标记为“预览”的特性、功能或属性不受服务级别协议 (SLA) 保障,不建议用于生产工作负载,并且在正式发布之前可能会更改或受到限制。 Azure AI 搜索预览条款适用于所有预览功能,无论是独立功能还是正式版功能的一部分。

SharePoint权限元数据引入(预览版)使用Azure AI 搜索索引器来保留权限元数据,例如访问控制列表(ACL),以及Microsoft 365中SharePoint的其他内容。 索引器将权限存储为每个索引文档的元数据。 在查询时,用户仅接收他们有权访问的文档。

架构图展示了一个经过安全修剪的RAG解决方案,其中SharePoint索引器从SharePoint网站中提取文档和ACL权限元数据,将其存储在Azure AI 搜索索引中,RAG业务流程协调程序负责筛选查询结果,以便每个用户只检索到他们有权访问的文档。

重要

对于需要完整的 SharePoint 权限模型、敏感度标签和现成的安全修整的方案,请使用远程 SharePoint 知识来源。 此方法直接通过 Copilot 检索 API调用SharePoint。 治理完全保留在SharePoint中,查询结果会自动遵循所有适用的权限和标签。

先决条件

  • 可计费层(任何区域中的“基本”层或更高层)上的 Azure AI 搜索。

  • Microsoft 365 中的 SharePoint 网站、库、文件夹和配置了权限的文件。

  • 完成 SharePoint 索引器文档中的所有配置步骤,并应用本文中所述的特定于 ACL 的要求。

  • 配置 Microsoft Entra 应用程序权限以及适用于你的场景的凭据。 请参阅 ACL 方案的权限。 ACL 引入需要应用程序权限。 不支持委派的权限。 有关应用程序与委托决策,请参阅 “选择权限设置”。

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

限制

  • 增量 ACL 更新需要 2026-05-01-preview REST API 或更高版本。 在早期预览版 API 版本中,系统仅在每个项的第一次引入时捕获 ACL。 后续的权限更改需要显式重新建立索引。 有关迁移步骤,请参阅 “在索引内容和源内容之间同步权限”。

  • 后续索引器运行时,不会自动获取父范围的权限更改。 有关刷新选项,请参阅 索引内容和源内容之间的同步权限。

  • Azure门户不支持此功能。

  • 此预览版不支持以下功能:

    • SharePoint信息管理策略适用于用户访问。 系统不会在查询时评估、引入或遵循这些策略。

    • 范围限定为“任何人”或“组织中的人员”的可共享链接。仅支持范围限定为“特定人员”的链接。

    • 自 2026-05-01-preview REST API 起,支持 SharePoint 组(例如所有者组、成员组和访问者组)。 请参阅 配置SharePoint组支持。 在 API 的早期预览版本中,仅支持可解析为 Microsoft Entra 组的 SharePoint 组。

  • 以下索引器功能不支持源自SharePoint的索引文档中的权限继承。 如果在技能集或索引器中使用这些功能中的任何一项,则索引内容中不包含文档级权限。

支持SharePoint权限模型

此预览版支持文档、列表项和新式 ASPX 网站页面的基本 ACL。

SharePoint功能 描述 支持 笔记
站点、文档库、列表和页面继承 网站→库/列表→文件夹→文件/项目/页面。 ✔️ 在引入时评估;为每个项计算有效 ACL。
文件夹、文件、列表项和页面唯一 ACL 条目级访问。 ✔️ 首次引入时和后续运行时包含,用于检测具有唯一权限的项的 ACL 更改。
SharePoint 列表项 列表项(allSiteLists 和 allSiteContent 容器)的权限。 ✔️ 预览版,自 2026-05-01-preview REST API 起提供。
ASPX 网站页面 现代网站页面(allSitePages 和 allSiteContent 容器)上的权限。 ✔️ 预览版,自 2026-05-01-preview REST API 起提供。
Microsoft Entra(Microsoft 365和安全)组 基于组的访问。 ✔️ 当可解析为 Microsoft Entra 标识符 (ID) 时,将包含组 ID。
SharePoint网站组 所有者/成员/访问者和自定义网站组。 ✔️ 预览版,自 2026-05-01-preview REST API 起提供。 需要 SharePoint 组配置。 组 ID 以 spg: 前缀输出。
可共享的“任何人”链接或“组织中的人员链接” 全组织或公共访问。 ❌ 预览版不支持。
外部/来宾用户 来宾的访问权限。 ❌ 不支持。
信息管理策略 用于定义特定权限要求的策略。 ❌ 预览版不支持。
Purview 敏感度标签 隐私、分类、权限和加密的文档级安全性 ❌ 通过独立功能支持: 保留和重视敏感度标签。

支持的组关系

Microsoft Entra 组的传递性仅在 Microsoft Entra 内部适用。 它不会扩展属于 SharePoint 组的 Microsoft Entra 组。

权限关系 支持 Guidance
直接分配给 SharePoint 项的用户或 Microsoft Entra 组 是的 索引器将用户或 Microsoft Entra 组对象 ID 存储在该项的权限元数据中。
用户通过可传递的 Microsoft Entra 组嵌套到达分配的 Microsoft Entra 组 是的 在查询时,Microsoft Graph 解析会展开用户的可传递的 Microsoft Entra 组成员身份。
直接分配给有权访问该项的 SharePoint 站点组的用户 是的 配置SharePoint组支持。
嵌套在 SharePoint 组中的 Microsoft Entra 组 No SharePoint 组解析不会展开嵌套的 Microsoft Entra 组。 依赖此关系的结果会被筛除。请直接将用户添加到 SharePoint 组,或通过受支持的 Microsoft Entra 组分配授予权限。
其他混合的 SharePoint 和 Microsoft Entra 嵌套方式 未指定 不要根据 Microsoft Entra 的传递性来认定其受支持。 此预览版限制仅适用于嵌套在 SharePoint 组中的 Microsoft Entra 组。

如何评估分层权限

SharePoint权限继承站点→库→文件夹→文件的层次结构,除非继承中断。

引入期间,索引器在每个级别收集用户和组标识符(ID),并计算每个文件的有效 ACL。

按 ACL 场景划分的权限

ACL 引入所需的 Microsoft Entra 应用程序权限和凭据类型,取决于你要索引的项类型和组类型。 在应用注册中,所有权限均在 API 权限>下添加,并且联合凭据在“证书和机密>”联合凭据下添加。 有关分步说明和屏幕截图,请参阅 Step 3:创建Microsoft Entra应用程序注册和使用托管标识配置已注册的应用程序。

Scenario 要添加的 API 权限 凭证
当访问权限仅通过 Microsoft Entra 用户和标准组(Microsoft Entra 安全组、Microsoft 365 组、启用邮件的安全组)授予时,文档库文件上的 ACL Microsoft Graph:Files.Read.All、Sites.FullControl.All(或用于作用域访问的 Sites.Selected) 客户端机密或联合凭据
当必须遵循 SharePoint 站点组(所有者、成员、访问者或自定义站点组)的权限设置时,文档库文件上的 ACL Microsoft Graph:Files.Read.All、Sites.FullControl.All(或Sites.Selected)
SharePoint:Sites.FullControl.All(或Sites.Selected)
联合身份凭据(必填)
SharePoint 列表项的 ACL Microsoft Graph:Files.Read.All、Sites.FullControl.All(或Sites.Selected),User.Read.All
SharePoint:Sites.FullControl.All(或Sites.Selected)
联合身份凭据(必填)
ASPX 站点页面上的内容和 ACL Microsoft Graph:Sites.FullControl.All (或 Sites.Selected),User.Read.All(如果同时为文档库或列表编制索引,请保留上述行的 Files.Read.All)
SharePoint:Sites.FullControl.All(或Sites.Selected)
联合身份凭据(必填)
通过 sharePointConnectorAppRegistration 的 SharePoint 站点组的查询时解析 将 SharePoint:User.Read.All 添加到索引器使用的同一应用注册项中 联合身份凭据(必填)

注意

  • 添加权限时,可在两个 API 图面之间进行选择:Microsoft Graph 和 SharePoint。 两者都提供了名称相似的权限。 例如, Sites.FullControl.All 存在于两者下。 在表所示的 API 图面下添加每个权限。

  • 在场景中添加 SharePoint API 权限时,请使用联合凭据。 客户端机密仅适用于 Microsoft Graph(仅限文档库行)。

  • User.Read.All 是列表项和 ASPX 网站页面所必需的,因为索引器通过 SharePoint REST API 读取这些权限,而该 API 仅返回用户的电子邮件地址。 然后,索引器调用 Microsoft Graph,将每个电子邮件地址解析为其对应的 Microsoft Entra 对象 ID,而该查找需要 User.Read.All。

  • 使用 Sites.Selected 时,在编制索引之前,向应用授予对每个目标SharePoint网站的显式访问权限。

联合凭据使用受信任的托管标识而不是客户端密码对应用进行身份验证。 同一联合凭据同时适用于引入(索引器)以及在查询时对 SharePoint 网站组进行评估。 有关设置步骤,请参阅 使用托管标识配置已注册的应用程序。

在启用 ACL 引入之前

在已注册Microsoft Entra应用程序上完成以下步骤:

  1. 根据计划建立索引的内容(文档库文件、列表项、ASPX 站点页面)以及是否需要遵从 SharePoint 站点组权限,在上表中确定你所属的场景。
  2. 在 Microsoft Entra 管理中心 中打开应用注册,转到 API 权限>添加权限。
  3. 添加针对你的场景列出的 Microsoft Graph 权限。 授予管理员同意权限。
  4. 如果你的方案还需要SharePoint权限,请选择再次添加权限,选择 SharePoint API,并添加 Sites.FullControl.All (或 Sites.Selected)。 授予管理员同意权限。
  5. 配置凭据:
    • 对于仅使用 Microsoft Graph 的场景,可以使用客户端密码(证书和密码>客户端密码)或联合凭据。
    • 对于任何包含 SharePoint 权限的场景,请在 Certificates & secrets>联合凭据 下添加联合凭据。 请参阅 使用托管标识配置已注册的应用程序。
  6. 向应用程序授予对目标SharePoint网站的访问权限(在使用 Sites.Selected 进行作用域访问时尤其重要),以便它可以读取要编制索引的内容和权限。

查找正确的Microsoft Entra标识符

每个标识符显示在Azure门户的不同位置,并映射到特定的配置字段。 使用联合凭据配置 SharePoint ACL 摄取时,请将本节用作参考。 这些标识符在 配置 SharePoint 组支持 和数据源连接字符串中被引用。

标识符 门户位置 使用位置 笔记
引入应用应用程序 (客户端) ID 应用注册><your-app>>概述 ApplicationId在数据源连接字符串中;applicationId在sharePointConnectorAppRegistration中 对于大多数配置字段,此 ID 是正确的。 也称为“客户端 ID”。
应用程序对象 ID 应用注册><your-app>>概述(位于“应用程序(客户端)ID”下方) Azure AI 搜索配置中未使用 不要将此 ID 与应用程序(客户端)ID 混淆。 它显示在同一边栏选项卡中,紧邻客户端 ID 下方。
服务主体对象 ID Microsoft Entra ID>企业应用程序><your-app>>管理>属性 Azure AI 搜索配置中未使用 这是该应用的服务主体表示形式。 这是一个不同于应用注册对象 ID 的 GUID。
托管标识主体 ID 托管标识资源的>属性或搜索服务的标识边栏选项卡 Azure AI 搜索数据源或索引配置中不直接使用 在应用注册中设置联合身份凭据时供内部使用。 您创建的凭据会信任此身份。
联合凭据对象 ID 应用注册><your-app>>管理>证书和机密>联合身份凭据><credential-name> Azure AI 搜索配置中未使用 请勿使用联合标识凭据条目的 GUID 作为 federatedCredentialId。
联合凭据应用程序 ID 系统分配:Microsoft Entra ID>企业应用程序><search-service>>属性; 用户分配:<managed-identity-resource>>属性 FederatedCredentialApplicationId在数据源连接字符串中;federatedCredentialId在sharePointConnectorAppRegistration中 要查找托管标识,请参阅联合凭据应用程序 ID。

联合凭据应用程序 ID

对于数据源连接字符串中的 FederatedCredentialApplicationId 和索引定义中的 federatedCredentialId,请使用托管标识自身的应用程序(客户端)ID,而不是引入应用程序的 ID。

系统分配的托管标识:

  1. 转到你的 Azure AI 搜索 服务。
  2. 选择 安全和网络>身份。
  3. 在 “系统分配 ”选项卡上,记下 “对象”(主体)ID。
  4. 转到 Microsoft Entra ID>管理>企业应用程序。
  5. 搜索搜索服务名称或将 对象(主体)ID 粘贴到搜索框中。
  6. 选择结果并打开 “属性”。 复制此处显示的应用程序 ID,它是数据源中 federatedCredentialId 和索引中 FederatedCredentialApplicationId 的值。

用户分配的托管标识:

  1. 转到用户分配的托管标识资源。
  2. 选择设置>属性。
  3. 复制客户端 ID,它是数据源中 federatedCredentialId 的值,也是索引中 FederatedCredentialApplicationId 的值。

为 ACL 引入和查询时强制实施配置搜索服务

这些步骤为搜索服务配置 ACL 引入并启用查询时 ACL 遵守。

选择填充 ACL 字段的位置

在何处映射 ACL 元数据字段取决于索引器是为每个源项写入一个文档还是每个源项的多个区块。

Scenario 通过以下方式填充 ACL 字段 为什么
无技能集或未分块的技能集;每个源项对应一个搜索文档 仅支持索引器字段映射(metadata_user_ids → UserIds、metadata_group_ids → GroupIds,以及对于 SharePoint 组,metadata_spo_site_url → SharePointSiteUrl)。 索引器将单个文档写入目标索引,字段映射会将源元数据传送到索引字段。
采用分块的技能集(例如,用于集成向量化的文本拆分技能),单一索引,其中每个块中都会重复父级字段(projectionMode: skipIndexingParentDocuments) 技能组中的索引投影(mappings 来自 /document/metadata_user_ids、/document/metadata_group_ids,以及针对 SharePoint 组的 /document/metadata_spo_site_url)。 父级文档未建立索引;只有分块建立了索引。 ACL 值必须投影到每个区块上,以便查询时筛选器应用于结果中返回的区块。 在此模式下,会绕过这些字段的索引器字段映射。
具有分块、双索引模式的技能集(父索引 + 子区块索引) 两者:索引器字段映射在父索引上填充 ACL 字段,索引投影在子区块索引上填充 ACL 字段。 这两个索引都是可查询的,每个索引都需要它筛选的元数据。

在所有分块场景中,每个块都必须包含 ACL 字段。 权限筛选器适用于每个文档,因此无法将缺少 ACL 字段的区块返回到正确的调用方。

1. 数据源配置

本部分是对基础步骤 4:创建数据源演练说明的增量补充。 在 indexerPermissionOptions 中设置 以允许为 SharePoint 文档中的 userIds 和 groupIds 编制索引。

{
  "name": "my-sharepoint-acl-datasource",
  "type": "sharepoint",
  "indexerPermissionOptions": ["userIds", "groupIds"],
  "credentials": {
    "connectionString": "<connection-string>;"
  },
  "container": {
    "name": "<library-name>",
    "query": "<optional-folder-path>"
  }
}

2. 向索引定义添加权限字段

将字段添加到 索引架构定义 ,以存储 ACL 并支持查询时间筛选。

{
  "fields": [
    { "name": "UserIds",  "type": "Collection(Edm.String)", "permissionFilter": "userIds",  "filterable": true, "retrievable": false },
    { "name": "GroupIds", "type": "Collection(Edm.String)", "permissionFilter": "groupIds", "filterable": true, "retrievable": false }
  ],
  "permissionFilterOption": "enabled"
}

仅在开发阶段将retrievable属性设置为true以验证值。 可以将可检索属性从 true 更改为 false,而无需重新生成索引。

3.在技能组中配置索引投影(如果适用)

启用分块时,当 projectionMode 为 skipIndexingParentDocuments 时,父文档不会写入索引。 通过 indexProjections.selectors[].mappings 将 ACL 元数据附加到每个块上。

如果索引器使用具有数据分块的技能集,例如启用集成向量化时的文本拆分技能,请确保使用索引投影将 ACL 属性映射到每个区块。 //以下示例中的行是说明性批注,不是有效的 JSON。 在提交请求之前删除它们。

PUT https://{service}.search.windows.net/skillsets/{skillset}?api-version=2026-08-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": "UserIds",  "source": "/document/metadata_user_ids" },
          { "name": "GroupIds",  "source": "/document/metadata_group_ids" },
          { "name": "SharePointSiteUrl", "source": "/document/metadata_spo_site_url" } // include when the index has sharePointConnectorAppRegistration (SharePoint groups support)
        ]
      }
    ],
    "parameters": {
      "projectionMode": "skipIndexingParentDocuments"
    }
  }
}

UserIds、GroupIds 和 SharePointSiteUrl 映射将读取SharePoint索引器(/document/metadata_*)发出的源级元数据,并将值写入每个区块。

4. 为 ACL 配置索引器字段映射

当索引器为每个源项写入一个文档(无分块)或将单独的父索引与区块索引一起维护时,请使用索引器字段映射。 如果你的技能组将文档拆分为块并写入单个目标索引 projectionMode: skipIndexingParentDocuments,则此处显示的字段映射将由上一步中块索引的 indexProjections.mappings 取代。

除了需要的 索引器配置,请将 SharePoint 中的原始元数据 ACL 字段映射到您的索引字段。

{
  "fieldMappings": [
    { "sourceFieldName": "metadata_user_ids",  "targetFieldName": "UserIds" },
    { "sourceFieldName": "metadata_group_ids", "targetFieldName": "GroupIds" }
  ]
}

5. 运行索引器

索引器运行时会引入 ACL 元数据。 创建或更新索引器(请参阅 步骤 6:创建索引器)后,触发运行,使索引器与内容一起引入 ACL。

POST https://[service name].search.windows.net/indexers/[indexer-name]/run?api-version=2026-08-01-preview
api-key: [admin key]

如果你在已为某些项编制索引的现有索引器上启用了 ACL 引入功能,请调用 /resync 并使用 options: ["permissions"] 为这些项回填 ACL,或者调用 /resetdocs 以重新提取特定项。

6. 验证 ACL 引入

要确认 ACL 值是否已正确填充,请按以下步骤操作:

  1. 在索引定义中,将 retrievable 和 true 上的 UserIds 暂时设置为 GroupIds。 更改 retrievable 不需要重新生成索引。
  2. 运行一个提升读取权限的查询,选择UserIds和GroupIds,并确认这些集合不为空。 对于分块方案,请确认每个区块都包含这两个字段。
  3. 验证后将retrievable返回给false。

配置SharePoint组支持

从 2026-05-01 预览版 REST API 开始,SharePoint索引器可以引入SharePoint网站组成员身份(所有者、成员、访问者和自定义网站组)。 它在查询时遵循这些组。 SharePoint 组 ID 会在 metadata_group_ids 字段中输出,并带有 spg: 前缀,以区别于 Microsoft Entra 组对象 ID。

本演练是独立完整的:请按顺序完成这些步骤,以配置索引、索引器字段映射,并在启用 SharePoint 站点组强制实施的情况下查询索引。

以下组件协同工作以启用SharePoint站点组解析:

组件 Where Purpose
sharePointConnectorAppRegistration(包含 applicationId、tenantId、federatedCredentialId) 索引定义 提供搜索服务调用 SharePoint REST API 作为调用用户并在查询时解析网站组成员身份所需的身份验证配置。
SharePointSiteUrl 字段(带有 sharepointSiteUrl: true) 来自 metadata_spo_site_url 的索引架构 + 索引器字段映射 标识文档所属的SharePoint网站,以便正确确定 SP 组解析的范围。
在 spg: 中以 GroupIds 为前缀的值 文档权限元数据 将SharePoint站点组 ID 与Microsoft Entra组对象 ID 区分开来。

1.先决条件

注意

数据源连接字符串中的 FederatedCredentialApplicationId 和 sharePointConnectorAppRegistration 中的 federatedCredentialId 使用托管标识的应用程序 ID。 sharePointConnectorAppRegistration 中的 applicationId 属性使用引入应用程序的客户端 ID。 若要查找正确的值,请参阅查找正确的Microsoft Entra标识符。

2.配置索引

将sharePointConnectorAppRegistration配置和SharePointSiteUrl字段添加到UserIds和GroupIds权限筛选字段旁边,以便将完整的索引结构集中在一处。 保留 permissionFilterOption: "enabled"。

PUT https://{service}.search.windows.net/indexes/{index}?api-version=2026-08-01-preview
{
  "name": "my-sharepoint-acl-index",
  "sharePointConnectorAppRegistration": {
      "applicationId": "<ingestion-app-client-id>",
      "federatedCredentialId": "<managed-identity-application-id>",
     "tenantId": "<sharepoint-tenant-id>"
  },
  "fields": [
    { "name": "UserIds",           "type": "Collection(Edm.String)", "permissionFilter": "userIds",  "filterable": true, "retrievable": false },
    { "name": "GroupIds",          "type": "Collection(Edm.String)", "permissionFilter": "groupIds", "filterable": true, "retrievable": false },
    { "name": "SharePointSiteUrl", "type": "Edm.String", "sharepointSiteUrl": true, "filterable": false, "retrievable": false }
  ],
  "permissionFilterOption": "enabled"
}

3.配置索引器字段映射

将SharePoint元数据字段映射到单个组合映射块中的索引字段。 前两个映射是用于标准 ACL 引入的映射;第三个映射激活SharePoint组解析。

{
  "fieldMappings": [
    { "sourceFieldName": "metadata_user_ids",             "targetFieldName": "UserIds" },
    { "sourceFieldName": "metadata_group_ids",            "targetFieldName": "GroupIds" },
    { "sourceFieldName": "metadata_spo_site_url",  "targetFieldName": "SharePointSiteUrl" }
  ]
}

如果技能组会将文档拆分成多个区块(例如,使用用于集成向量化的“文本拆分”技能),请改为通过 SharePointSiteUrl 将 indexProjections.mappings 投影到每个区块上。 请参阅 “选择填充 ACL 字段的位置”。

4.查询索引

不需要客户端更改。 同一 x-ms-query-source-authorization 令牌会同时激活 Microsoft Entra 和 SharePoint 站点组强制执行。 搜索服务使用索引上的 sharePointConnectorAppRegistration 解析服务器端SharePoint 组成员身份。

有关请求结构,请参阅 常规查询示例 以及特定于 SharePoint 的包含 SharePoint 站点组强制实施的示例。

5. 验证

若要确认 SharePoint 组 ID 已进入索引,请运行一个选择 的 GroupIds,并在响应中查找带有 spg: 前缀的值。

在索引内容和源内容之间同步权限

从 2026-05-01 预览版 REST API 开始,在每次成功运行索引器时,都会检测和刷新具有唯一权限的项目的 ACL 更改。 索引器使用 SharePoint 更改令牌,以增量方式检测角色分配的新增和删除,就像它检测内容更改一样。

某些场景仍然需要显式刷新:

更改范围 自动检测 建议的操作
具有唯一权限的特定项的权限(文件、列表项或页面) 是的 无需采取措施。 该更改将在索引器下一次成功运行时被检测到。
特定项目的内容更改(它还重新评估该项目的有效 ACL) 是的 无需采取措施。
子项继承的父级范围(网站、库、列表或文件夹)中的权限更改 No 调用 /resync 和 options: ["permissions"] 以刷新整个数据源中的 ACL,或者使用受影响文档的键调用 /resetdocs,以同时刷新内容和 ACL。
在现有索引器上启用 ACL 引入功能 No 调用 /resync 使用 options: ["permissions"] 以回填先前索引项的 ACL。

重置特定文档

可以将 特定文档重置 以重新完全引入内容和 ACL。

POST https://{service}.search.windows.net/indexers/{indexer}/resetdocs?api-version=2026-08-01-preview
{
  "documentKeys": ["doc123", "doc456"]
}

重新同步整个数据源的 ACL

可以在初始引入后 重新同步完整的数据集 ACL 内容 。 若要完全成功,此操作需要在完成后 运行索引器 。

POST https://{service}.search.windows.net/indexers/{indexer}/resync?api-version=2026-08-01-preview
{
  "options": ["permissions"]
}

重要

如果在不触发更新机制的情况下更改SharePoint权限,索引将为以前引入的文件提供过时的 ACL 数据。

为数据和 ACL 编制索引后,可以 查询索引。

故障排除

症状 原因和解决方法
UserIds 或 GroupIds 索引文档中为空 如果技能组使用 projectionMode: skipIndexingParentDocuments,则针对 ACL 字段的索引器字段映射将被绕过。 改为在每个块上通过 indexProjections.mappings 设置 ACL 字段。
SharePoint网站组 ID 缺失,或者GroupIds值没有 spg: 前缀 确认索引已具有 sharePointConnectorAppRegistration 配置,SharePointSiteUrl 字段具有 sharepointSiteUrl: true,并且索引器字段映射或索引投影中存在 metadata_spo_site_url 映射。
SharePointSiteUrl索引后,相应值为空或 null,但 ACL 的其他内容均已正确填充 索引器在 metadata_spo_site_url 下输出此元数据,而不是在 metadata_sharepoint_site_url 下。 验证索引器字段映射是否使用 "sourceFieldName": "metadata_spo_site_url"。 如果技能组对分块文档使用索引投影,请验证投影映射源是否为 /document/metadata_spo_site_url。
索引器返回 401 或 403 根据你的方案,对 Microsoft Graph 和 SharePoint API 的权限授予管理员同意。 当方案需要时,请使用联合凭据(而不是客户端密码)。 请参阅 ACL 方案的权限。
更改网站、库、列表或文件夹 ACL 后,权限已过时 调用 /resync 使用 options: ["permissions"]。 有关上下文,请参阅 索引内容和源内容之间的同步权限 。
配置 federatedCredentialId 时,sharePointConnectorAppRegistration 被拒绝 使用托管标识的应用程序 ID,而不是联合标识凭据的对象 ID 或托管标识的主体 ID。 请参阅 联合身份凭据应用程序 ID。
索引器返回 401 Unauthorized,并且 FederatedCredentialApplicationId 已设置 确认你使用的是托管标识的应用程序 ID(可在企业应用程序中找到),而不是引入应用的应用程序(客户端)ID (ApplicationId) 或任何对象 ID。 对于用户分配的托管标识,请使用托管标识资源的“属性”页中的客户端 ID。 请参阅“查找正确的Microsoft Entra标识符。

有关在为 ACL 元数据编制索引后缺失、意外或失败的查询时间结果,请参阅 SharePoint 权限筛选疑难解答。