Share via


Se connecter à Azure AI Search à l’aide de contrôles d’accès en fonction du rôle

Azure fournit un système d’autorisation global de contrôle d’accès basé sur les rôles pour tous les services exécutés sur la plateforme. Dans la recherche Azure AI, vous pouvez utiliser des rôles Azure pour :

  • Les opérations de plan de contrôle (tâches d’administration de service via Azure Resource Manager).

  • Les opérations de plan de données, telles que la création, le chargement et l’interrogation d’index.

L’accès par utilisateur aux résultats de la recherche (parfois appelé sécurité au niveau des lignes ou sécurité au niveau du document) n’est pas pris en charge. En guise de solution de contournement, créez des filtres de sécurité qui ajustent les résultats par identité utilisateur, en supprimant les documents auxquels le demandeur ne doit pas avoir accès.

Remarque

Un petit mot concernant la terminologie. Le plan de contrôle fait référence aux opérations prises en charge dans l’API REST de gestion ou dans les bibliothèques de client équivalentes. Le plan de données fait référence aux opérations sur le point de terminaison du service de recherche, telles que l’indexation ou les requêtes, ou à toute autre opération spécifiée dans l’API REST de recherche ou dans les bibliothèques de client équivalentes.

Les rôles suivants sont intégrés. Si ces rôles sont insuffisants, créez un rôle personnalisé.

Rôle Plane Description
Propriétaire Contrôle et données Accès complet au plan de contrôle de la ressource de recherche, y compris la possibilité d’affecter des rôles Azure. Seul le rôle Propriétaire peut activer ou désactiver les options d’authentification ou gérer des rôles pour d’autres utilisateurs. Les administrateurs d’abonnements sont membres par défaut.

Sur le plan de données, ce rôle a le même accès que le rôle Contributeur de service de recherche. Il inclut l’accès à toutes les actions de plan de données, à l’exception de la possibilité d’interroger les documents d’index.
Contributeur Contrôle et données Même niveau d’accès au plan de contrôle que le Propriétaire, moins la possibilité d’affecter des rôles ou de modifier les options d’authentification.

Sur le plan de données, ce rôle a le même accès que le rôle Contributeur de service de recherche. Il inclut l’accès à toutes les actions de plan de données, à l’exception de la possibilité d’interroger les documents d’index.
Lecteur Contrôle et données L’accès en lecture dans le service entier, ce qui inclut les métriques de recherche, les métriques de contenu (stockage consommé, nombre d’objets) et les définitions d’objet des ressources de plan de données (index, indexeurs, etc.). Toutefois, il ne peut pas lire les clés API ni le contenu dans les index.
Contributeur du service de recherche Contrôle et données Accès en lecture-écriture aux définitions d’objets (index, alias, mappages de synonymes, indexeurs, sources de données et ensembles de compétences). Ce rôle est destiné aux développeurs qui créent des objets et aux administrateurs qui gèrent un service de recherche et ses objets, mais sans accès au contenu de l’index. Utilisez ce rôle pour créer, supprimer et répertorier des index, obtenir des définitions d’index et des informations sur le service (statistiques et quotas), tester des analyseurs, créer et gérer des mappages de synonymes, des indexeurs, des sources de données et des ensembles de compétences. Consultez Microsoft.Search/searchServices/* pour obtenir la liste des autorisations.
Contributeur de données d’index de la Recherche Données Accès en lecture-écriture au contenu dans des index. Ce rôle est destiné aux développeurs ou aux propriétaires d’index qui ont besoin d’importer, d’actualiser ou d’interroger la collection de documents d’un index. Ce rôle ne prend pas en charge la création ou la gestion d’index. Par défaut, ce rôle est destiné à tous les index d’un service de recherche. Pour réduire l’étendue, consultez Accorder l’accès à un seul index.
Lecteur de données d’index de la Recherche Données Accès en lecture seule pour interroger des index de recherche. Ce rôle est destiné aux applications et utilisateurs qui exécutent des requêtes. Ce rôle ne prend pas en charge l’accès en lecture aux définitions d’objets. Par exemple, vous ne pouvez pas lire une définition d’index de recherche ou obtenir des statistiques du service de recherche. Par défaut, ce rôle est destiné à tous les index d’un service de recherche. Pour réduire l’étendue, consultez Accorder l’accès à un seul index.

Remarque

Si vous désactivez l’accès en fonction du rôle Azure, les rôles intégrés pour le plan de contrôle (Propriétaire, Contributeur, Lecteur) continuent d’être disponibles. La désactivation de l’accès en fonction du rôle supprime uniquement les autorisations liées aux données associées à ces rôles. Si les rôles du plan de données sont désactivés, le contributeur du service de recherche équivaut au contributeur du plan de contrôle.

Limites

  • L’adoption du contrôle d’accès en fonction du rôle risque d’augmenter la latence de certaines requêtes. Chaque combinaison unique de ressource de service (index, indexeur, etc.) et de principal du service utilisé sur une requête déclenche une vérification d’autorisation. Ces vérifications d’autorisation peuvent ajouter jusqu’à 200 millisecondes de latence à une demande.

  • Dans de rares cas où les demandes proviennent d’un grand nombre de principaux de service différents, ciblant différentes ressources de service (index, indexeurs, etc.), il est possible que les vérifications d’autorisation entraînent une limitation. La limitation se produit uniquement si des centaines de combinaisons uniques de chaque ressource du service de recherche et du principal de service ont été utilisées en une seconde.

Configurer l’accès en fonction du rôle pour le plan de données

S’applique à : Recherche dans l’index de données Contributeur, Lecteur de données d’index de recherche, Contributeur du Service de recherche

Dans cette étape, configurez votre service de recherche afin qu’il reconnaisse un en-tête d’autorisation sur les demandes de données qui fournissent un jeton d’accès OAuth2.

  1. Connectez-vous au portail Azure et ouvrez la page du service de recherche.

  2. Sélectionnez Clés dans le volet de navigation de gauche.

    Capture d’écran de la page des clés avec les options d’authentification.

  3. Choisissez une option de contrôle d’accès à l’API. Nous vous recommandons de choisir l’option Les deux si vous souhaitez une flexibilité ou si vous avez besoin de migrer des applications.

    Option Description
    Clé API (Valeur par défaut.) Requiert un administrateur ou des clés API de requête dans l'en-tête de la demande pour l'autorisation. Aucun rôle n’est utilisé.
    Contrôle d’accès en fonction du rôle Nécessite l’appartenance à une attribution de rôle pour terminer la tâche, décrite dans l’étape suivante. Chaque requête nécessite un en-tête d’autorisation.
    Les deux Les requêtes sont valides à l’aide d’une clé API ou du contrôle d’accès en fonction du rôle (RBAC).

La modification est effective immédiatement, mais attendez quelques secondes avant de tester.

Tous les appels réseau pour les opérations de service de recherche et le contenu respectent l’option que vous sélectionnez : clés API, jeton du porteur ou les deux si vous sélectionnez Les deux.

Lorsque vous activez le contrôle d’accès en fonction du rôle dans le portail, le mode d’échec est « http401WithBearerChallenge » si l’autorisation échoue.

Attribuer des rôles

Les attributions de rôles sont cumulatives et généralisées pour tous les outils et bibliothèques de client. Vous pouvez attribuer des rôles à l’aide de l’une des approches prises en charge décrites dans la documentation sur le contrôle d’accès basé sur les rôles d’Azure.

Vous devez être un Propriétaire ou avoir des autorisationsMicrosoft.Authorization/roleAssignments/write pour gérer les attributions de rôles.

Les attributions de rôles dans le portail s’appliquent à l’ensemble du service. Si vous souhaitez accorder des autorisations à un seul index, utilisez plutôt PowerShell ou Azure CLI.

  1. Connectez-vous au portail Azure.

  2. Accéder à votre service de recherche.

  3. Sélectionnez Contrôle d’accès (IAM) dans le menu de navigation de gauche.

  4. Sélectionnez + Ajouter>Ajouter une attribution de rôle.

    Page Contrôle d’accès (IAM) avec le menu Ajouter une attribution de rôle ouvert.

  5. Sélectionnez un rôle applicable :

    • Propriétaire
    • Contributeur
    • Lecteur
    • Contributeur du service de recherche
    • Contributeur de données d’index de la Recherche
    • Lecteur de données d’index de la Recherche
  6. Sous l’onglet Membres, sélectionnez l’identité de l’utilisateur ou du groupe Microsoft Entra.

  7. Dans l’onglet Passer en revue + affecter, sélectionnez Passer en revue + affecter pour affecter le rôle.

Tester les attributions de rôles

Utilisez un client pour tester les attributions de rôles. N’oubliez pas que les rôles sont des rôles cumulatifs et hérités qui sont délimités à l’abonnement ou au groupe de ressources et donc qui ne peuvent pas être supprimés ou refusés au niveau de la ressource (service de recherche).

Assurez-vous d’inscrire votre application cliente avec Microsoft Entra ID et d’avoir des attributions de rôles en place avant de tester l’accès.

  1. Connectez-vous au portail Azure.

  2. Accéder à votre service de recherche.

  3. Dans la page de la vue d’ensemble, sélectionnez l’onglet Index :

    • Les contributeurs du service de recherche peuvent afficher et créer n’importe quel objet, mais ils ne peuvent pas charger de documents ni interroger un index. Pour vérifier les autorisations, créez un index de recherche.

    • Les contributeurs de données d’index de recherche peuvent charger et interroger des documents. Pour vérifier les autorisations, utilisez l’Explorateur de recherche pour interroger des documents. Il n’existe aucune option de chargement de documents dans le portail en dehors de l’Assistant Importation de données. Étant donné que l’Assistant crée également des objets, vous avez besoin du rôle Contributeur du service de recherche et du rôle Contributeur de données d’index de recherche.

    • Les personnes avec le rôle Lecteur de données de l’index de recherche peuvent interroger l’index. Pour vérifier les autorisations, utilisez l’Explorateur de recherche. Vous devez être en mesure d’envoyer des requêtes et d’afficher les résultats, mais vous ne devriez pas être en mesure d’afficher la définition de l’index.

Tester en tant qu’utilisateur actuel

Si vous êtes déjà contributeur ou propriétaire de votre service de recherche, vous pouvez présenter un jeton de porteur pour votre identité utilisateur pour l’authentification auprès de la recherche Azure AI.

  1. Obtenez un jeton du porteur pour l’utilisateur actuel à l’aide d’Azure CLI :

    az account get-access-token --scope https://search.azure.com/.default
    

    Ou à l’aide de PowerShell :

    Get-AzAccessToken -ResourceUrl https://search.azure.com
    
  2. Dans un nouveau fichier texte dans Visual Studio Code, collez ces variables :

    @baseUrl = PASTE-YOUR-SEARCH-SERVICE-URL-HERE
    @index-name = PASTE-YOUR-INDEX-NAME-HERE
    @token = PASTE-YOUR-TOKEN-HERE
    
  3. Collez puis envoyez une requête pour vérifier l’accès. En voici une qui interroge l’index hotels-quickstart :

    POST https://{{baseUrl}}/indexes/{{index-name}}/docs/search?api-version=2023-11-01 HTTP/1.1
      Content-type: application/json
      Authorization: Bearer {{token}}
    
        {
             "queryType": "simple",
             "search": "motel",
             "filter": "",
             "select": "HotelName,Description,Category,Tags",
             "count": true
         }
    

Accorder l’accès à un index unique

Dans certains scénarios, il est possible que vous souhaitiez limiter l’accès d’une application à une seule ressource, comme un index.

Le portail ne prend actuellement pas en charge les attributions de rôles à ce niveau de précision, mais vous pouvez le faire avec PowerShell ou Azure CLI.

Dans PowerShell, utilisez New-AzRoleAssignment, en indiquant le nom de l’utilisateur ou du groupe Azure et l’étendue de l’attribution.

  1. Chargez les modules Azure et AzureAD, puis connectez-vous à votre compte Azure :

    Import-Module -Name Az
    Import-Module -Name AzureAD
    Connect-AzAccount
    
  2. Ajoutez une attribution de rôle étendue à un index individuel :

    New-AzRoleAssignment -ObjectId <objectId> `
        -RoleDefinitionName "Search Index Data Contributor" `
        -Scope  "/subscriptions/<subscription>/resourceGroups/<resource-group>/providers/Microsoft.Search/searchServices/<search-service>/indexes/<index-name>"
    

Créer un rôle personnalisé

Si les rôles intégrés ne fournissent pas la bonne combinaison d’autorisations, vous pouvez créer un rôle personnalisé pour prendre en charge les opérations requises.

Cet exemple clone le lecteur de données d’index de recherche, puis ajoute la possibilité de répertorier les index par nom. Normalement, la liste des index sur un service de recherche est considérée comme un droit administratif.

Ces étapes sont dérivées de Créer ou de mettre à jour des rôles personnalisés Azure à l’aide du Portail Azure. Le clonage à partir d’un rôle existant est pris en charge dans une page de service de recherche.

Ces étapes créent un rôle personnalisé qui augmente les droits de requête de recherche pour inclure des index de liste par nom. En règle générale, la liste des index est considérée comme une fonction d’administrateur.

  1. Dans le portail Azure, accédez à votre service de recherche.

  2. Sélectionnez Contrôle d’accès (IAM) dans le menu de navigation de gauche.

  3. Dans la barre d’action, sélectionnez Rôles.

  4. Cliquez avec le bouton droit sur Lecteur de données d’index de recherche (ou un autre rôle) et sélectionnez Cloner pour ouvrir l’Assistant Créer un rôle personnalisé.

  5. Sous l’onglet Informations de base, indiquez un nom pour le rôle personnalisé, comme "Explorateur de données d’index de recherche", puis sélectionnez Suivant.

  6. Sous l’onglet Autorisations, cliquez sur Ajouter des autorisations.

  7. Sous l’onglet Ajouter des autorisations, recherchez, puis sélectionnez la vignette Recherche Microsoft.

  8. Définissez les autorisations pour votre rôle personnalisé. En haut de la page, à l’aide de la sélection Actions par défaut :

    • Sous Microsoft.Search/operations, sélectionnez Lecture : Répertorier toutes les opérations disponibles.
    • Sous Microsoft.Search/searchServices/index, sélectionnez Lecture : Index de lecture.
  9. Dans la même page, basculez vers Actions de données et sous Microsoft.Search/searchServices/index/documents, sélectionnez Lecture : Lire des documents.

    La définition JSON ressemble à l’exemple qui suit :

    {
     "properties": {
         "roleName": "search index data explorer",
         "description": "",
         "assignableScopes": [
             "/subscriptions/0000000000000000000000000000000/resourceGroups/free-search-svc/providers/Microsoft.Search/searchServices/demo-search-svc"
         ],
         "permissions": [
             {
                 "actions": [
                     "Microsoft.Search/operations/read",
                     "Microsoft.Search/searchServices/indexes/read"
                 ],
                 "notActions": [],
                 "dataActions": [
                     "Microsoft.Search/searchServices/indexes/documents/read"
                 ],
                 "notDataActions": []
             }
         ]
       }
     }
    
  10. Sélectionnez Vérifier + créer pour créer le rôle. Vous pouvez maintenant affecter des utilisateurs et des groupes au rôle.

Désactiver l'authentification par clé API

Vous pouvez désactiver l’accès à la clé, ou l’authentification locale, sur votre service si vous utilisez les rôles Contributeur du service de recherche, Contributeur aux données d’index de recherche et Lecteur de données d’index de recherche, ainsi que l’authentification Microsoft Entra. La désactivation des clés API entraîne le refus par le service de recherche de toutes les requêtes liées aux données qui passent une clé API dans l’en-tête.

Remarque

Les clés API d’administrateur peuvent uniquement être désactivées, et non supprimées. Vous pouvez supprimer des clés API de requête.

Des autorisations de Propriétaire ou de Contributeur sont requises pour désactiver les fonctionnalités.

Pour désactiver l’authentification basée sur les clés, utilisez le portail Azure ou l’API REST de gestion.

  1. Dans le portail Azure, accédez à votre service de recherche.

  2. Dans le volet de navigation gauche, sélectionnez Clés.

  3. Sélectionnez Contrôle d’accès en fonction du rôle.

La modification est effective immédiatement, mais attendez quelques secondes avant de tester. En supposant que vous êtes autorisé à attribuer des rôles en tant que membre du propriétaire, administrateur de service ou coadministrateur, vous pouvez utiliser les fonctionnalités du portail pour tester l’accès en fonction du rôle.

Accès conditionnel

Nous recommandons l’accès conditionnel Microsoft Entra si vous devez appliquer des stratégies organisationnelles, notamment l’authentification multifacteur.

Pour activer une stratégie d’accès conditionnel pour Recherche Azure AI, effectuez les étapes suivantes :

  1. Connectez-vous au portail Azure.

  2. Recherchez l’accès conditionnel Microsoft Entra.

  3. Sélectionnez Stratégies.

  4. Sélectionnez Nouvelle stratégie.

  5. Dans la section Applications cloud ou actions de la stratégie, ajoutez Recherche Azure AI en tant qu’application cloud selon la manière dont vous souhaitez configurer votre stratégie.

  6. Mettez à jour les paramètres restants de la stratégie. Par exemple, spécifiez les utilisateurs et les groupes auxquels cette stratégie s’applique.

  7. Enregistrez la stratégie.

Important

Si une identité managée est attribuée à votre service de recherche, celui-ci apparaîtra comme une application cloud qui peut être incluse ou exclue dans le cadre de la stratégie d’accès conditionnel. Les stratégies d’accès conditionnel ne peuvent pas être appliquées à un service de recherche spécifique. Veillez plutôt à sélectionner l’application cloud générale Recherche Azure AI.

Résolution des problèmes de contrôle d’accès en fonction du rôle

Lorsque vous développez des applications qui utilisent le contrôle d’accès en fonction du rôle pour l’authentification, il est possible que certains problèmes courants se produisent :

  • Si le jeton d’autorisation provient d’une identité managée et que les autorisations appropriées ont été récemment attribuées, il est possible que la prise d’effet de celles-ci prenne plusieurs heures.
  • La configuration par défaut d’un service de recherche est une authentification en fonction d’une clé uniquement. Si vous n’avez pas modifié le paramètre de clé par défaut sur Les deux ou Contrôle d’accès en fonction du rôle, toutes les requêtes utilisant l’authentification en fonction du rôle sont automatiquement refusées, quelles que soient les autorisations sous-jacentes.