Utiliser un indexeur SharePoint pour ingérer les métadonnées d’autorisation et filtrer les résultats de recherche en fonction des droits d’accès utilisateur (préversion)

Note

Recherche Azure AI est disponible via le portail Azure, les API REST et les SDK Azure. Il sous-tend également Foundry IQ, la couche de connaissances managée qui transforme le contenu d’entreprise en bases de connaissances réutilisables et prenant en charge les autorisations pour les agents dans le portail Microsoft Foundry.

Important

Les fonctionnalités, capacités ou propriétés marquées (préversion) ne sont pas couvertes par un accord de niveau de service, ne sont pas recommandées pour les workloads de production et peuvent être modifiées ou faire l’objet de restrictions avant leur mise à disposition générale. Les Recherche Azure AI termes de la préversion s'appliquent à toutes les fonctionnalités d'aperçu, qu'il s'agisse d'une fonctionnalité autonome ou d'une partie d'une fonctionnalité généralement disponible.

L’ingestion des métadonnées d’autorisation de SharePoint (version préliminaire) utilise un indexeur Recherche Azure AI pour conserver les métadonnées d’autorisation, telles que les listes de contrôle d’accès (ACL), en plus des autres contenus provenant de SharePoint dans Microsoft 365. L’indexeur stocke les autorisations sous forme de métadonnées sur chaque document indexé. Au moment de la requête, les utilisateurs reçoivent uniquement les documents auxquels ils sont autorisés à accéder.

Architecture montrant une solution RAG à découpage de sécurité où un indexeur de SharePoint ingère des documents et des métadonnées d’autorisation ACL à partir d’un site SharePoint, les stocke dans un Recherche Azure AI index et un orchestrateur RAG filtre les résultats de requête afin que chaque utilisateur récupère uniquement les documents auxquels il est autorisé à accéder.

Important

Pour les scénarios nécessitant le modèle complet d’autorisations de SharePoint, les étiquettes de sensibilité et le découpage de sécurité prêt à l’emploi, utilisez une source de connaissances SharePoint distante. Cette approche appelle SharePoint directement via l’API de récupération Copilot. La gouvernance reste entièrement en SharePoint et les résultats des requêtes respectent automatiquement toutes les autorisations et étiquettes applicables.

Conditions préalables

  • Recherche Azure AI sur un niveau facturable (De base ou supérieur) dans n’importe quelle région.

  • SharePoint dans Microsoft 365 sites, bibliothèques, dossiers et fichiers avec des autorisations configurées.

  • Effectuez toutes les étapes de configuration de la documentation de l’indexeur SharePoint, en appliquant les exigences spécifiques à la liste de contrôle d’accès décrites dans cet article.

  • Configurez les autorisations d’application Microsoft Entra et les informations d’identification appropriées pour votre scénario. Consultez le scénario des autorisations par ACL. L’ingestion des ACL nécessite des autorisations d’application. Les autorisations déléguées ne sont pas prises en charge. Pour en savoir plus sur le choix entre les autorisations d’application et les autorisations déléguées, consultez Choisir votre configuration d’autorisations.

  • API REST version 2026-08-01-preview ou un package de SDK d’évaluation équivalent.

Limitations

  • Les mises à jour incrémentielles de liste de contrôle d’accès nécessitent l’API REST 2026-05-01-preview ou une version ultérieure. Dans les versions antérieures de l’API en préversion, le système capture uniquement les listes de contrôle d’accès sur la première ingestion de chaque élément. Les modifications d’autorisation ultérieures nécessitent une réindexation explicite. Pour connaître les étapes de migration, consultez Synchroniser les autorisations entre le contenu indexé et le contenu source.

  • Les modifications des autorisations au niveau du parent ne sont pas prises en compte automatiquement lors des exécutions ultérieures de l’indexeur. Pour connaître les options d’actualisation, consultez Synchroniser les autorisations entre le contenu indexé et le contenu source.

  • Le portail Azure ne prend pas en charge cette fonctionnalité.

  • Les fonctionnalités suivantes ne sont pas prises en charge dans cette préversion :

  • Les fonctionnalités d'indexeur suivantes ne prennent pas en charge l'héritage des autorisations dans les documents indexés provenant de SharePoint. Si vous utilisez l’une de ces fonctionnalités dans un ensemble de compétences ou un indexeur, les autorisations au niveau du document ne sont pas incluses dans le contenu indexé.

Prise en charge du modèle d’autorisation SharePoint

Cette préversion prend en charge les listes de contrôle d’accès de base pour les documents, les éléments de liste et les pages de site ASPX modernes.

Fonctionnalité SharePoint Description Soutenu Notes
Héritage au niveau du site, de la bibliothèque, de la liste et de la page Site → bibliothèque/liste → dossier → fichier/élément/page. ✔️ Évalué à l’ingestion ; ACL effectives calculées par élément.
ACL uniques des dossiers, fichiers, éléments de liste et pages Accès au niveau de l’élément. ✔️ Inclus lorsqu’ils sont présents lors de la première ingestion et lors des exécutions ultérieures qui détectent des modifications des ACL pour les éléments dotés d’autorisations uniques.
Éléments de liste SharePoint Autorisations sur les éléments de liste (allSiteLists) et sur les conteneurs (allSiteContent). ✔️ Disponible en préversion à compter de la version 2026-05-01-preview de l’API REST.
Pages de site ASPX Autorisations sur les pages de site modernes (allSitePages et allSiteContent conteneurs). ✔️ Disponible en préversion à compter de la version 2026-05-01-preview de l’API REST.
groupes Microsoft Entra (Microsoft 365 et sécurité) Accès basé sur un groupe. ✔️ Les ID de groupe sont inclus lorsqu’ils peuvent être résolus en un ID Microsoft Entra.
groupes de sites SharePoint Propriétaires/Membres/Visiteurs et groupes de sites personnalisés. ✔️ Disponible en préversion à compter de la version 2026-05-01-preview de l’API REST. Nécessite la configuration des groupes SharePoint. Les ID de groupe sont émis avec le spg: préfixe.
Partageable « Liens pour tous » ou « Liens pour les membres de votre organisation » Accès public ou à l’échelle de l’organisation. ❌ Non pris en charge dans la version préliminaire.
Utilisateurs externes/invités Accès pour les invités. ❌ Non pris en charge.
Stratégies de gestion des informations Stratégies pour définir des exigences d’autorisations spécifiques. ❌ Non pris en charge dans la version préliminaire.
Étiquettes de sensibilité Purview Sécurité au niveau du document pour la confidentialité, la catégorisation, les autorisations et le chiffrement ❌ Prise en charge par le biais d’une fonctionnalité distincte : conservation et respect des étiquettes de confidentialité.

Relations de groupe prises en charge

La transitivité des groupes Microsoft Entra s’applique au sein de Microsoft Entra. Elle ne développe pas les groupes Microsoft Entra qui sont membres de groupes SharePoint.

Relation entre autorisations Soutenu Conseils
Utilisateur ou groupe Microsoft Entra affecté directement à l’élément SharePoint Oui L’indexeur stocke l’ID d’objet de l’utilisateur ou du groupe Microsoft Entra dans les métadonnées d’autorisation de l’élément.
L’utilisateur accède à un groupe Microsoft Entra attribué via l’imbrication transitive de groupes Microsoft Entra Oui La résolution via Microsoft Graph à l’exécution de la requête inclut les appartenances transitives de l’utilisateur à des groupes Microsoft Entra.
Utilisateur affecté directement à un groupe de sites SharePoint qui a accès à l’élément Oui Configurez la prise en charge des groupes SharePoint.
groupe Microsoft Entra imbriqué dans un groupe SharePoint No La résolution du groupe SharePoint n’étend pas le groupe Microsoft Entra imbriqué. Les résultats qui dépendent de cette relation sont filtrés. Ajoutez des utilisateurs directement au groupe SharePoint ou accordez l’autorisation via une attribution de groupe Microsoft Entra prise en charge.
Autres sens d’imbrication mixtes de SharePoint et de Microsoft Entra Non spécifié(e) Ne déduisez pas la prise en charge de la transitivité de Microsoft Entra. Cette limitation de l’aperçu s’applique aux groupes Microsoft Entra imbriqués dans des groupes SharePoint.

Évaluation des autorisations hiérarchiques

Les permissions de SharePoint héritent de la hiérarchie du Site → Bibliothèque → Dossier → Fichier, sauf si l’héritage est rompu.

Pendant l’ingestion, l’indexeur rassemble les identificateurs d’utilisateur et de groupe (ID) à chaque niveau et calcule la liste de contrôle d’accès effective pour chaque fichier.

Autorisations par scénario ACL

Les Microsoft Entra autorisations d’application et le type d’informations d’identification requis pour l’ingestion de liste de contrôle d’accès dépendent des types d’éléments et des types de groupes que vous indexez. Dans l’enregistrement de l’application, toutes les autorisations sont ajoutées sous Autorisations de l’API>Ajouter une autorisation, et les informations d’identification fédérées sont ajoutées sous Certificats & secrets>Informations d’identification fédérées. Pour obtenir des instructions détaillées et des captures d’écran, consultez Step 3 : Créer une inscription d’application Microsoft Entra et Configurer l’application inscrite avec une identité managée.

Scénario Autorisations d’API à ajouter Informations d’identification
Listes de contrôle d’accès sur les fichiers de bibliothèque de documents, lorsque l’accès est accordé uniquement par le biais d’utilisateurs Microsoft Entra et de groupes standard (groupes de sécurité Microsoft Entra, groupes de sécurité Microsoft 365, groupes de sécurité avec extension messagerie) Microsoft Graph : Files.Read.All, Sites.FullControl.All (ou Sites.Selected pour l’accès étendu) Secret client ou information d’identification fédérée
Les listes de contrôle d’accès sur les fichiers d’une bibliothèque de documents doivent également être respectées lorsque les groupes de sites SharePoint (Propriétaires, Membres, Visiteurs ou groupes de sites personnalisés) Microsoft Graph : Files.Read.All, Sites.FullControl.All (ou Sites.Selected)
SharePoint : Sites.FullControl.All (ou Sites.Selected)
Identifiant fédéré (obligatoire)
Listes de contrôle d’accès sur les éléments de liste SharePoint Microsoft Graph : Files.Read.All, Sites.FullControl.All (ou Sites.Selected), User.Read.All
SharePoint : Sites.FullControl.All (ou Sites.Selected)
Identifiant fédéré (obligatoire)
Contenu et listes de contrôle d’accès sur les pages de site ASPX Microsoft Graph : Sites.FullControl.All (ou Sites.Selected), User.Read.All (conservez Files.Read.All à partir des lignes ci-dessus si vous indexez également des bibliothèques de documents ou des listes)
SharePoint : Sites.FullControl.All (ou Sites.Selected)
Identifiant fédéré (obligatoire)
Résolution des groupes de site SharePoint au moment de la requête via sharePointConnectorAppRegistration Ajouter SharePoint : User.Read.All au même enregistrement d’application utilisé par l’indexeur Identifiant fédéré (obligatoire)

Note

  • Lorsque vous ajoutez une autorisation, vous choisissez entre deux surfaces d’API : Microsoft Graph et SharePoint. Les deux présentent des autorisations portant des noms similaires. Par exemple, Sites.FullControl.All existe sous les deux. Ajoutez chaque autorisation sous l’aire d’API indiquée dans la table.

  • Utilisez des informations d’identification fédérées chaque fois que le scénario ajoute des autorisations d’API SharePoint. Les secrets de client fonctionnent uniquement pour la ligne de bibliothèque de documents Microsoft Graph.

  • User.Read.All est nécessaire pour les éléments de liste et les pages de site ASPX, car l'indexeur lit ces autorisations via l'API REST SharePoint, qui retourne uniquement l'e-mail de l'utilisateur. L’indexeur appelle ensuite Microsoft Graph pour faire correspondre chaque adresse e-mail à son ID d’objet Microsoft Entra, et cette recherche nécessite User.Read.All.

  • Lorsque vous utilisez Sites.Selected, accordez à l’application un accès explicite à chaque site SharePoint cible avant l’indexation.

Les informations d’identification fédérées authentifient l’application à l’aide d’une identité managée approuvée au lieu d’une clé secrète client. Les mêmes informations d’identification fédérées couvrent à la fois l’ingestion (indexeur) et l’évaluation au moment de la requête des groupes de sites SharePoint. Pour connaître les étapes de configuration, consultez Configuration de l’application inscrite avec une identité managée.

Avant d’activer l’ingestion de liste de contrôle d’accès

Effectuez ces étapes sur votre application de Microsoft Entra inscrite :

  1. Identifiez votre scénario dans le tableau précédent en fonction de ce que vous prévoyez d’indexer (fichiers de bibliothèque de documents, éléments de liste, pages de site ASPX) et selon que les groupes de sites SharePoint doivent être respectés.
  2. Ouvrez l’enregistrement de votre application dans le centre d’administration Microsoft Entra et accédez à Autorisations d’API>Ajouter une autorisation.
  3. Ajoutez les autorisations Microsoft Graph répertoriées pour votre scénario. Accordez le consentement de l’administrateur.
  4. Si votre scénario nécessite également des autorisations SharePoint, sélectionnez Add une autorisation à nouveau, choisissez l’API SharePoint et ajoutez Sites.FullControl.All (ou Sites.Selected). Accordez le consentement de l’administrateur.
  5. Configurez les informations d’identification :
    • Pour les scénarios utilisant uniquement Microsoft Graph, vous pouvez utiliser soit un secret client (Certificates & secrets>Client secrets), soit des informations d’identification fédérées.
    • Pour tout scénario qui inclut des autorisations SharePoint, ajoutez des informations d’identification fédérées sous Certificates & secrets Informations d’identification fédérées. Consultez Configuration de l’application enregistrée avec une identité managée.
  6. Accordez à l’application l’accès aux sites SharePoint cibles (particulièrement important lorsque vous utilisez Sites.Selected pour l’accès étendu) afin qu’il puisse lire le contenu et les autorisations que vous souhaitez indexer.

Rechercher les identificateurs de Microsoft Entra corrects

Chaque identificateur apparaît à un emplacement différent dans le portail Azure et correspond à un champ de configuration spécifique. Utilisez cette section comme référence lors de la configuration de l’ingestion des ACL SharePoint avec des informations d’identification fédérées. Ces identificateurs sont mentionnés dans Configurer la prise en charge des groupes SharePoint et dans la chaîne de connexion de la source de données.

Identificateur Emplacement du portail Utilisé dans les cas suivants Notes
Identifiant d’application d’ingestion (client) Inscriptions d’applications><your-app>>Vue d’ensemble ApplicationId dans la chaîne de connexion de la source de données ; applicationId dans sharePointConnectorAppRegistration Cet ID est correct pour la plupart des champs de configuration. Également appelé « ID client ».
ID d’objet d’application > <your-app> > inscriptions d'applications Overview (ID d’application (client) ci-dessous) Non utilisé dans la configuration de Recherche Azure AI Ne confondez pas cela avec l’ID d’application (client). Il apparaît dans le même panneau, directement sous l’ID client.
ID d’objet du principal de service > Applications d’entreprise><your-app>>Gérer>Propriétés Non utilisé dans la configuration de Recherche Azure AI Il s’agit de la représentation principale du service de l’application. Il s’agit d’un GUID différent de l’identifiant d’objet de l’enregistrement d’application.
Identifiant principal d’identité managée Ressource d’identité managée > ou le volet Identité du service de recherche N’est pas utilisé directement dans la source de données ou la configuration de l’index d’Recherche Azure AI. Utilisé en interne lorsque vous configurez les informations d’identification d’identité fédérée sur l’inscription de l’application. L’identifiant que vous créez fait confiance à cette identité.
ID de l’objet d’informations d’identification fédérées Inscriptions d’applicationsGérerCertificats et secretsInformations d’identification fédérées Non utilisé dans la configuration de Recherche Azure AI N’utilisez pas le GUID de l’entrée d’informations d’identification d’identité fédérée pour federatedCredentialId.
ID de l’application d’informations d’identification fédérées Affecté par le système : Microsoft Entra ID><search-service>>>Propriétés ; Affecté par l’utilisateur : <managed-identity-resource>>Propriétés FederatedCredentialApplicationId dans la chaîne de connexion de la source de données ; federatedCredentialId dans sharePointConnectorAppRegistration Consultez l’ID d’application d’informations d’identification fédérées pour la recherche d’identité gérée.

ID de l’application d’informations d’identification fédérées

Dans la chaîne de connexion de la source de données FederatedCredentialApplicationId et dans la définition de l’index federatedCredentialId, utilisez le propre ID d’application (client) de l’identité managée, et non l’ID de l’application d’ingestion.

Identité managée affectée par le système :

  1. Accédez à votre service Recherche Azure AI.
  2. Sélectionnez Sécurité + mise en réseau>Identité.
  3. Sous l’onglet Affecté par le système, notez l’ID d’objet (principal).
  4. Accédez à Microsoft Entra ID>Gérer>Applications d’entreprise.
  5. Recherchez le nom de votre service de recherche ou collez l’ID d’objet (principal) dans la zone de recherche.
  6. Sélectionnez le résultat et ouvrez Propriétés. Copiez l’ID d’application indiqué ici, qui est la valeur de FederatedCredentialApplicationId la source de données et federatedCredentialId de l’index.

Identité managée affectée par l’utilisateur :

  1. Accédez à la ressource d’identité managée affectée par l’utilisateur.
  2. Sélectionnez Paramètres>Propriétés.
  3. Copiez l’ID client, qui est la valeur de FederatedCredentialApplicationId la source de données et federatedCredentialId de l’index.

Configurez votre service de recherche pour l’ingestion des listes de contrôle d’accès (ACL) et leur application au moment de la requête

Ces étapes configurent votre service de recherche pour l'ingestion d'ACL et activent le respect des ACL au moment de la requête.

Choisir où renseigner les champs ACL

L’emplacement où vous mappez les champs de métadonnées ACL dépend du fait que l’indexeur écrit un document par élément source ou plusieurs blocs par élément source.

Scénario Remplir les champs de liste de contrôle d’accès via Pourquoi
Aucun ensemble de compétences ni ensemble de compétences sans segmentation ; un document de recherche par élément source Mappages de champs de l’indexeur uniquement (metadata_user_ids → UserIds, metadata_group_ids → GroupIds, et pour les groupes SharePoint metadata_spo_site_url → SharePointSiteUrl). L’indexeur écrit un document unique dans l’index cible et les mappages de champs portent les métadonnées sources dans les champs d’index.
Ensemble de compétences avec segmentation (par exemple, compétence Fractionnement de texte pour la vectorisation intégrée), index unique avec des champs parents répétés sur chaque bloc (projectionMode: skipIndexingParentDocuments) Projections d’index dans le jeu de compétences (mappings à partir de /document/metadata_user_ids, /document/metadata_group_ids et, pour les groupes SharePoint, /document/metadata_spo_site_url). Le document parent n’est pas indexé ; seuls les blocs sont. Les valeurs d’ACL doivent être répercutées sur chaque fragment afin que les filtres appliqués à l’exécution de la requête s’appliquent au fragment renvoyé dans les résultats. Les mappages de champs de l’indexeur pour ces champs sont ignorés dans ce mode.
Ensemble de compétences avec segmentation, modèle à deux index (index parent + index de segments enfant) Tous deux : les mappages de champs de l’indexeur renseignent les champs de liste de contrôle d’accès dans l’index parent, les projections d’index renseignent les champs de liste de contrôle d’accès dans l’index de segments enfant. Les deux index sont interrogeables et chacun a besoin des métadonnées sur laquelle il filtre.

Dans tous les scénarios de fragmentation, chaque fragment doit contenir les champs ACL. Les filtres d’autorisation s’appliquent par document, de sorte qu’un bloc manquant de champs ACL ne peut pas être retourné à l’appelant droit.

1. Configuration de la source de données

Cette section constitue un complément au guide de base Étape 4 : Créer une source de données. Définissez indexerPermissionOptions dans la définition de source data pour permettre l’indexation de userIds et groupIds à partir de documents SharePoint.

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

2. Ajouter des champs d’autorisation à la définition d’index

Ajoutez des champs à votre définition de schéma d’index pour stocker les listes de contrôle d’accès et prendre en charge le filtrage au moment des requêtes.

{
  "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"
}

Définissez l’attribut retrievable à true uniquement pendant le développement pour vérifier les valeurs. Vous pouvez modifier le paramètre de capacité de récupération (retrievable) de true à false sans nécessiter de reconstruction d'index.

3. Configurer les projections d’index dans votre ensemble de compétences (le cas échéant)

Lorsque la segmentation est activée, le document parent n’est pas écrit dans l’index lorsque projectionMode c’est skipIndexingParentDocuments. Reportez les métadonnées de liste de contrôle d’accès sur chaque segment via indexProjections.selectors[].mappings.

Si votre indexeur utilise un ensemble de compétences avec un segment de données, tel que la compétence Fractionnement de texte lors de l’activation de la vectorisation intégrée, veillez à mapper les propriétés ACL à chaque bloc à l’aide de projections d’index. Les // lignes de l’exemple suivant sont des annotations illustrantes et ne sont pas valides JSON. Supprimez-les avant de soumettre la demande.

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"
    }
  }
}

Les mappages UserIds, GroupIds et SharePointSiteUrl lisent les métadonnées de niveau source émises par l’indexeur SharePoint (/document/metadata_*) et écrivent les valeurs sur chaque segment.

4. Configurer les mappages de champs de l’indexeur pour les ACL (listes de contrôle d’accès)

Utilisez des mappages de champs d’indexeur lorsque l’indexeur écrit un document par élément source (aucune segmentation) ou lorsque vous conservez un index parent distinct en même temps qu’un index de bloc. Si votre ensemble de compétences fractionne les documents dans un index cible unique avec projectionMode: skipIndexingParentDocuments, les mappages de champs indiqués ici sont remplacés par le indexProjections.mappings de l’étape précédente pour l’index de segments.

Outre votre configuration de indexer requise, mappez les champs ACL de métadonnées brutes de SharePoint à vos champs d’index.

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

5. Exécuter l’indexeur

Les métadonnées ACL sont ingérées lorsque l’indexeur s’exécute. Après avoir créé ou mis à jour l’indexeur (voir l’étape 6 : Créer un indexeur), déclenchez une exécution afin que l’indexeur ingère des ACL en même temps que le contenu.

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

Si vous avez activé l’ingestion des listes de contrôle d’accès sur un indexeur existant qui a déjà indexé des éléments, appelez /resync avec options: ["permissions"] pour renseigner les listes de contrôle d’accès de ces éléments, ou /resetdocs pour réextraire des éléments spécifiques.

6. Vérifiez l’ingestion des ACL

Pour confirmer que les valeurs ACL sont correctement renseignées :

  1. Définissez temporairement retrievable sur true pour UserIds et GroupIds dans la définition de votre index. La modification retrievable ne nécessite pas de reconstruction d’index.
  2. Exécutez une requête de lecture privilégiée qui sélectionne UserIds et GroupIds, puis vérifiez que les collections ne sont pas vides. Pour les scénarios segmentés, vérifiez que chaque bloc comporte les deux champs.
  3. Retournez retrievable à false après vérification.

Configurer la prise en charge des groupes SharePoint

À partir de l’API REST 2026-05-01-preview, l’indexeur SharePoint peut indexer les appartenances aux groupes de sites SharePoint (propriétaires, membres, visiteurs et groupes de sites personnalisés). Ces groupes sont pris en compte au moment de la requête. Les ID de groupe SharePoint sont renvoyés dans le champ metadata_group_ids avec le préfixe spg: afin de les distinguer des ID d’objet des groupes Microsoft Entra.

Cette procédure pas à pas est autonome : effectuez les étapes dans l’ordre pour configurer l’index, les mappages des champs de l’indexeur et interroger l’index avec l’application des groupes de sites SharePoint.

Les composants suivants fonctionnent ensemble pour permettre la résolution des groupes de sites SharePoint :

Composant Where Purpose
sharePointConnectorAppRegistration (avec applicationId, tenantId, federatedCredentialId) Définition d’index Fournit la configuration d’authentification requise pour le service de recherche afin d’appeler l’API REST SharePoint en tant qu’utilisateur appelant et résoudre l’appartenance au groupe de sites au moment de la requête.
SharePointSiteUrl champ (avec sharepointSiteUrl: true) Schéma d’index + mappage des champs de l’indexeur à partir de metadata_spo_site_url Identifie le site SharePoint auquel appartient un document, afin que la résolution des groupes SP s’effectue dans le bon périmètre.
valeurs préfixées par spg: dans GroupIds Métadonnées d’autorisation des documents Distinguez les ID de groupe de sites SharePoint des ID d’objet des groupes Microsoft Entra.

1. Prérequis

Note

FederatedCredentialApplicationId dans la chaîne de connexion de la source de données et federatedCredentialId dans sharePointConnectorAppRegistration utilisent l’ID d’application de l’identité gérée. La propriété applicationId dans sharePointConnectorAppRegistration utilise l’ID client de l’application d’ingestion. Pour rechercher les valeurs correctes, consultez Rechercher les identificateurs de Microsoft Entra corrects.

2. Configurer l’index

Ajoutez la sharePointConnectorAppRegistration configuration et le SharePointSiteUrl champ en même temps que les UserIdsGroupIds champs de filtre d’autorisation, de sorte que la forme d’index complète se trouve à un seul endroit. Conservez 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. Configurer les mappages de champs de l’indexeur

Mappez les champs de métadonnées SharePoint aux champs d’index dans un seul bloc de mappage combiné. Les deux premiers mappages sont les mêmes que ceux utilisés pour l’ingestion ACL standard ; le troisième mappage active la résolution des groupes SharePoint.

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

Si votre jeu de compétences fractionne les documents (par exemple, avec la compétence Fractionnement de texte pour la vectorisation intégrée), projetez SharePointSiteUrl sur chaque segment via indexProjections.mappings à la place. Consultez Choisir où renseigner les champs ACL.

4. Interroger l’index

Aucune modification côté client n’est requise. Le même jeton x-ms-query-source-authorization applique à la fois le contrôle des groupes de sites Microsoft Entra et de SharePoint. Le service de recherche résout côté serveur les appartenances aux groupes SharePoint à l’aide de sharePointConnectorAppRegistration dans l’index.

Pour la structure de la requête, consultez l’exemple de requête générale et l’exemple spécifique à SharePoint avec application du groupe de sites SharePoint.

5. Vérifier

Pour confirmer que les ID de groupe SharePoint ont bien été ajoutés à l’index, exécutez une requête elevated-read qui sélectionne GroupIds et recherchez dans la réponse les valeurs préfixées par spg:.

Synchroniser les autorisations entre le contenu indexé et le contenu source

À compter de l’API REST 2026-05-01-preview, les modifications de liste de contrôle d’accès pour les éléments disposant d’autorisations uniques sont détectées et actualisées sur chaque exécution réussie de l’indexeur. L’indexeur utilise les jetons de modification de SharePoint pour prendre en compte, de manière incrémentielle, les ajouts et les suppressions d’attributions de rôles, de la même façon qu’il prend en compte les modifications de contenu.

Certains scénarios nécessitent toujours une actualisation explicite :

Modifier l’étendue Détecté automatiquement Action recommandée
Autorisations sur un élément spécifique avec des autorisations uniques (fichier, élément de liste ou page) Oui Aucune action requise. La modification est prise en compte lors de la prochaine exécution réussie de l’indexeur.
Modification du contenu sur un élément spécifique (qui réévalue également les listes de contrôle d’accès effectives pour cet élément) Oui Aucune action requise.
Les autorisations changent au niveau parent (site, bibliothèque, liste ou dossier) et sont héritées par les éléments enfants No Appelez /resync avec options: ["permissions"] pour actualiser les listes de contrôle d’accès sur la source de données ou appelez /resetdocs avec les clés de document affectées pour actualiser le contenu et les listes de contrôle d’accès.
Ingestion ACL activée sur un indexeur existant No Appelez /resync avec options: ["permissions"] pour renseigner les ACL des éléments précédemment indexés.

Réinitialiser des documents spécifiques

Vous pouvez réinitialiser des documents spécifiques pour ingérer entièrement du contenu et des listes de contrôle d’accès.

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

Resynchroniser les listes de contrôle d’accès sur la source de données complète

Vous pouvez resynchroniser le contenu ACL du jeu de données complet après l’ingestion initiale. Pour réussir pleinement, cette opération nécessite une exécution d’indexeur après l’achèvement.

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

Important

Si vous modifiez SharePoint autorisations sans déclencher de mécanisme de mise à jour, l’index fournit des données ACL obsolètes pour les fichiers précédemment ingérés.

Après avoir indexé vos données et listes de contrôle d’accès, vous pouvez interroger l’index.

Résolution des problèmes

Symptôme Cause et résolution
UserIds ou GroupIds sont vides dans les documents indexés Si votre ensemble de compétences utilise projectionMode: skipIndexingParentDocuments, les mappages de champs d’indexeur pour les champs ACL sont ignorés. Définissez à la place les champs ACL via indexProjections.mappings pour chaque bloc.
SharePoint ID de groupe de sites sont manquants ou les valeurs GroupIds n'ont pas le préfixe spg: Vérifiez que l’index possède la configuration sharePointConnectorAppRegistration, que le champ SharePointSiteUrl existe avec sharepointSiteUrl: true, et que le mappage metadata_spo_site_url est présent dans les mappages de champs de l’indexeur ou dans les projections d’index.
SharePointSiteUrl est vide ou null après l’indexation, même si les listes de contrôle d’accès sont sinon renseignées correctement L’indexeur émet ces métadonnées sous metadata_spo_site_url, et non metadata_sharepoint_site_url. Vérifiez que le mappage de champs de votre indexeur utilise "sourceFieldName": "metadata_spo_site_url". Si votre ensemble de compétences utilise des projections d’index pour les documents segmentés, vérifiez que la source de mappage de projection est /document/metadata_spo_site_url.
L’indexeur retourne 401 ou 403 Accordez le consentement de l’administrateur sur les autorisations d’API Microsoft Graph et de SharePoint pour votre scénario. Utilisez des informations d’identification fédérées (et non une clé secrète client) lorsque le scénario l’exige. Consultez le scénario des autorisations par ACL.
Les autorisations sont obsolètes après avoir modifié une liste ACL de site, de bibliothèque, de liste ou de dossier Appeler /resync avec options: ["permissions"]. Consultez Synchroniser les autorisations entre le contenu indexé et source pour le contexte.
federatedCredentialId est rejeté lors de la configuration sharePointConnectorAppRegistration Utilisez l’ID d’application de l’identité managée, et non l’ID d’objet de l’identité fédérée ou l’ID principal de l’identité managée. Consultez ID d’application d’informations d’identification fédérées
L’indexeur retourne 401 Unauthorized et FederatedCredentialApplicationId est défini Vérifiez que vous avez utilisé l’ID d’application de l’identité managée (trouvé dans les applications d’entreprise), et non l’ID d’application d’ingestion (client) ouApplicationId n’importe quel ID d’objet. Pour une identité managée affectée par l’utilisateur, utilisez l’ID client à partir de la page Propriétés de la ressource d’identité managée. Consultez Rechercher les identificateurs de Microsoft Entra corrects.

Pour les résultats manquants, inattendus ou ayant échoué au moment de la requête après l’indexation des métadonnées de liste de contrôle d’accès, consultez Résoudre les problèmes de filtrage des autorisations SharePoint.