Partager via


Configurer un service de recherche pour se connecter à l’aide d’une identité managée dans la plateforme Recherche Azure AI

Important

L’affectation des identités gérées affectées par l’utilisateur est en préversion publique dans les conditions d’utilisation supplémentaires. L’API REST de préversion d’administration fournit une affectation d’identité managée affectée par l’utilisateur pour Recherche Azure AI. Le support pour une identité managée affectée par le système est en disponibilité générale.

Vous pouvez utiliser les affectations Microsoft Entra ID et de rôle pour les connexions sortantes de Recherche Azure AI aux ressources fournissant des données, une IA appliquée ou une vectorisation pendant l’indexation ou les requêtes.

Pour utiliser des rôles sur une connexion sortante, configurez d’abord votre service de recherche pour utiliser une identité managée affectée par le système ou affectée par l’utilisateur comme principe de sécurité pour votre service de recherche dans un tenant Microsoft Entra. Une fois que vous avez une identité managée, vous pouvez attribuer des rôles pour l’accès autorisé. Les identités managées et les attributions de rôles éliminent le besoin de transmettre des secrets et des informations d’identification dans une chaîne de connexion ou un code.

Prérequis

  • Un service de recherche au niveau Essentiel ou supérieur, dans n’importe quelle région.

  • Une ressource Azure qui accepte les requêtes entrantes d’un principal de sécurité Microsoft Entra ayant une attribution de rôle valide.

Scénarios pris en charge

La plateforme Recherche Azure AI peut se connecter à d’autres ressources Azure sous son identité managée affectée par le système ou sous une identité managée affectée par l’utilisateur.

  • La configuration du service de recherche d’une identité managée affectée par le système est en disponibilité générale.
  • La configuration du service de recherche d’une identité managée affectée par l’utilisateur est en préversion publique dans les conditions d’utilisation supplémentaires.
  • L’utilisation du plan de données d’une identité managée, qu’elle soit affectée par le système ou l’utilisateur, est en disponibilité générale. Par exemple, si vous souhaitez une identité managée affectée par l’utilisateur sur une connexion de source de données d’indexeur, un coffre de clés, une session de débogage ou un cache d’enrichissement, vous pouvez utiliser une version d’API REST en disponibilité générale pour créer la connexion, en supposant que la fonctionnalité que vous utilisez est également en disponibilité générale.

Une identité managée affectée par le système est indiquée lorsqu’une chaîne de connexion est l’ID de ressource unique d’un service ou d’une application prenant en charge Microsoft Entra ID. Une identité managée affectée par l’utilisateur est spécifiée par le biais d’une propriété « identity ».

Un service de recherche utilise le Stockage Azure en tant que source de données d’indexeur et en tant que récepteur de données pour les sessions de débogage, la mise en cache d’enrichissement et la base de connaissances. Pour les fonctionnalités de recherche qui écrivent dans le stockage, l’identité managée a besoin d’une attribution de rôle Contributeur, comme décrit dans la section « Attribuer un rôle ».

Scénario System Affecté par l’utilisateur
Connexions de l’indexeur aux sources de données Azure prises en charge 1 Oui Oui
Azure Key Vault pour les clés gérées par le client Oui Oui
Sessions de débogage (hébergées dans Stockage Azure)1 Oui Non
Cache d’enrichissement (hébergé dans Stockage Azure) 1, 2 Oui Oui
Base de connaissances (hébergée dans Stockage Azure) 1 Oui Oui
Connexions à Azure OpenAI, Azure AI Studio et Azure Functions via des compétences/vectoriseurs 3 Oui Oui

1 Pour la connectivité entre la recherche et le stockage, votre configuration de sécurité réseau impose des contraintes sur le type d’identité managée que vous pouvez utiliser. Seule une identité managée système peut être utilisée pour une connexion de même région au stockage via l’exception de service approuvé ou la règle d’instance de ressource. Pour plus d’informations, consultez Accès à un compte de stockage protégé par le réseau.

2 Actuellement, le service de recherche IA ne peut pas se connecter à des tables sur un compte de stockage disposant d’un accès à clé partagée désactivé.

3 Les connexions à Azure OpenAI, Azure AI Studio et Azure Functions via des compétences/vectoriseurs incluent ce qui suit : compétence personnalisée, vectoriseur personnalisé, compétence d’incorporation Azure OpenAI, vectoriseur Azure OpenAI, compétence AML et vectoriseur de catalogue de modèles Azure AI Studio.

Créer une identité managée par le système

Quand vous activez une identité managée affectée par le système, Microsoft Entra ID crée une identité pour votre service de recherche qui vous permet de vous authentifier auprès d’autres services Azure au sein du même tenant. Vous pouvez ensuite utiliser cette identité dans les attributions de rôles pour accéder aux données et aux modèles.

Une identité managée affectée par le système est unique à votre service de recherche et liée au service pendant sa durée de vie. Un service de recherche ne peut avoir qu’une seule identité managée attribuée par le système.

  1. Connectez-vous au Portail Azure, puis trouvez votre service de recherche.

  2. Sous Paramètres, sélectionnez Identité.

  3. Dans l’onglet Affecté(e) par le système, sous État, sélectionnez Activé.

  4. Sélectionnez Enregistrer.

    Capture d’écran de la page Identité dans le Portail Azure.

    Après que vous avez enregistré les paramètres, la page se met à jour pour afficher un OID affecté à votre service de recherche.

    Capture d’écran d’un identificateur d’objet d’identité du système.

Créer une identité managée attribuée par l’utilisateur

Important

Une partie de ce scénario est en préversion publique et soumise à des conditions d’utilisation supplémentaires. L’API REST de préversion d’administration fournit une configuration d’identité managée affectée par l’utilisateur pour Recherche Azure AI.

Une identité managée affectée par l’utilisateur est une ressource Azure. Vous pouvez créer plusieurs identités managées affectées par l’utilisateur si vous recherchez une plus grande granularité dans les attributions de rôles. Par exemple, vous souhaiterez peut-être des identités séparées en fonction des applications et des scénarios.

Les étapes sont les suivantes :

  • Dans votre abonnement Azure, créez une identité managée affectée par l’utilisateur.
  • Sur votre service de recherche, mettez à jour la définition de service pour activer l’identité managée affectée par l’utilisateur (cette étape est en préversion).
  • Sur d’autres services Azure auxquels vous souhaitez vous connecter, créez une attribution de rôle pour l’identité.
  • Dans les connexions de source de données sur Recherche Azure AI, telles qu’une source de données d’indexeur, référencez l’identité managée par l’utilisateur dans les détails de la connexion (cette étape est en disponibilité générale si la prise en charge de la fonctionnalité est en disponibilité générale).

Une identité managée affectée par l’utilisateur peut être étendue aux abonnements, aux groupes de ressources ou aux types de ressources.

L’association d’une identité managée affectée par l’utilisateur est prise en charge dans le Portail Azure, dans les préversions des API REST de gestion et dans les packages de Kit de développement logiciel (SDK) bêta qui fournissent la fonctionnalité.

  1. Connectez-vous au portail Azure

  2. Sélectionnez Créer une ressource.

  3. Dans la barre de recherche « Services de recherche et marketplace », recherchez « Identité managée affectée par l’utilisateur », puis sélectionnez Créer.

    Capture d’écran de la mosaïque d’identité managée attribuée par l’utilisateur dans la place de marché Azure.

  4. Sélectionnez l’abonnement, le groupe de ressources et la région. Donnez à l’identité un nom descriptif.

  5. Sélectionnez Créer et attendez que la fin du déploiement de la ressource.

    Vous devez prévoir plusieurs minutes avant de pouvoir utiliser l’identité.

  6. Dans la page de votre service de recherche, sous Paramètres, sélectionnez Identité.

  7. Dans l’onglet Attribuée par l’utilisateur, sélectionnez Ajouter.

  8. Choisissez l’abonnement, puis sélectionnez la ressource managée affectée par l’utilisateur que vous avez créée à l’étape précédente.

Attribuer un rôle

Une fois que vous avez une identité managée, attribuez des rôles qui déterminent les autorisations du service de recherche sur la ressource Azure.

  • Des autorisations de lecture sont nécessaires pour les connexions de données d’indexeur et pour accéder à une clé gérée par le client dans Azure Key Vault.

  • Des autorisations d’écriture sont nécessaires pour les fonctionnalités d’enrichissement par IA qui utilisent le Stockage Azure pour l’hébergement des données de session de débogage, la mise en cache d’enrichissement et le stockage de contenu à long terme dans une base de connaissances.

Les étapes suivantes illustrent le flux de travail d’attribution de rôle. Cet exemple concerne Azure OpenAI. Pour d’autres ressources Azure, veuillez consulter la rubrique Se connecter au Stockage Azure, Se connecter à Azure Cosmos DB ou Se connecter à Azure SQL.

  1. Connectez-vous au portail Azure avec votre compte Azure, puis accédez à votre ressource Azure OpenAI.

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

  3. Sélectionnez Ajouter, puis sélectionnez Ajouter une attribution de rôle.

  4. Sous Rôles de fonction de travail, sélectionnez Utilisateur Cognitive Services OpenAI, puis Suivant.

  5. Sous Membres, sélectionnez Identité managée, puis Membres.

  6. Filtrez par abonnement et type de ressource (services de recherche), puis sélectionnez l’identité managée de votre service de recherche.

  7. Sélectionnez Vérifier + attribuer.

Exemples de chaîne de connexion

Une fois qu’une identité gérée est définie pour le service de recherche et une attribution de rôle donnée, les connexions sortantes peuvent être modifiées pour utiliser l’ID de ressource unique de l’autre ressource Azure. Voici quelques exemples de chaînes de connexion pour différents scénarios.

Vous pouvez utiliser des versions d’API REST en disponibilité générale et des packages du Kit de développement logiciel (SDK) Azure pour ces connexions.

Conseil

Vous pouvez créer la plupart de ces objets dans le Portail Azure, en spécifiant une identité managée affectée par le système ou par l’utilisateur, puis afficher la définition JSON pour obtenir la chaîne de connexion.

Source de données blob (système) :

Une source de données d’indexeur inclut une propriété « credentials » qui détermine la façon dont la connexion est établie à la source de données. L’exemple suivant montre une chaîne de connexion qui spécifie l’ID de ressource unique d’un compte de stockage.

Microsoft Entra ID authentifie la requête à l’aide de l’identité managée affectée par le système du service de recherche. Notez que la chaîne de connexion n’inclut pas de conteneur. Dans une définition de source de données, un nom de conteneur est spécifié dans la propriété « container » (non illustrée), et non dans la chaîne de connexion.

"credentials": {
    "connectionString": "ResourceId=/subscriptions/{subscription-ID}/resourceGroups/{resource-group-name}/providers/Microsoft.Storage/storageAccounts/{storage-account-name};"
    }

Source de données blob (utilisateur) :

Une requête de recherche adressée au Stockage Azure peut également être effectuée sous une identité managée affectée par l’utilisateur. L’identité de l’utilisateur du service de recherche est spécifiée dans la propriété « identity ».

"credentials": {
    "connectionString": "ResourceId=/subscriptions/{subscription-ID}/resourceGroups/{resource-group-name}/providers/Microsoft.Storage/storageAccounts/{storage-account-name};"
    },
  . . .
"identity": {
    "@odata.type": "#Microsoft.Azure.Search.DataUserAssignedIdentity",
    "userAssignedIdentity": "/subscriptions/{subscription-ID}/resourceGroups/{resource-group-name}/providers/Microsoft.ManagedIdentity/userAssignedIdentities/{user-assigned-managed-identity-name}"
  }

Base de connaissances :

Une définition de base de connaissances contient une chaîne de connexion à Stockage Azure. La chaîne de connexion est l’ID de ressource unique de votre compte de stockage. Notez que la chaîne n’inclut pas de conteneurs ou de tables dans le chemin d’accès. Ceux-ci sont définis dans la définition de projection incorporée, et non dans la chaîne de connexion.

"knowledgeStore": {
  "storageConnectionString": "ResourceId=/subscriptions/{subscription-ID}/resourceGroups/{resource-group-name}/providers/Microsoft.Storage/storageAccounts/storage-account-name};"
}

Cache d’enrichissement :

Un indexeur crée, utilise et mémorise le conteneur utilisé pour les enrichissements mis en cache. Il n’est pas nécessaire d’inclure le conteneur dans la chaîne de connexion du cache. Vous pouvez trouver l’ID d’objet sur la page Identité de votre service de recherche dans le portail.

"cache": {
  "enableReprocessing": true,
  "storageConnectionString": "ResourceId=/subscriptions/{subscription-ID}/resourceGroups/{resource-group-name}/providers/Microsoft.Storage/storageAccounts/{storage-account-name};"
}

Session de débogage :

Une session de débogage s’exécute dans le portail et prend une chaîne de connexion lorsque vous démarrez la session. Vous pouvez coller une chaîne semblable à l’exemple suivant.

"ResourceId=/subscriptions/{subscription-ID}/resourceGroups/{resource-group-name}/providers/Microsoft.Storage/storageAccounts/{storage-account-name}/{container-name};",

Compétence personnalisée :

Une compétence personnalisée cible le point de terminaison d’une fonction ou d’une application Azure qui héberge du code personnalisé. Le point de terminaison est spécifié dans la définition de compétence personnalisée. La présence de « authResourceId » indique au service de recherche qu’il doit se connecter en utilisant une identité managée, en transmettant l’ID de l’application de la fonction ou de l’application cible dans la propriété.

{
  "@odata.type": "#Microsoft.Skills.Custom.WebApiSkill",
  "description": "A custom skill that can identify positions of different phrases in the source text",
  "uri": "https://contoso.count-things.com",
  "authResourceId": "<Azure-AD-registered-application-ID>",
  "batchSize": 4,
  "context": "/document",
  "inputs": [ ... ],
  "outputs": [ ...]
}

Compétence d’incorporation Azure OpenAI et vectoriseur Azure OpenAI :

Une compétence et un vectoriseur d’incorporation Azure OpenAI dans AI Search ciblent le point de terminaison d’un service Azure OpenAI hébergeant un modèle d’incorporation. Le point de terminaison est spécifié dans la définition de compétence d’incorporation Azure OpenAI et/ou dans la définition de vectoriseur Azure OpenAI. L’identité managée par le système est utilisée si configurée et si l’apikey et « authIdentity » sont vides. La propriété « authIdentity » est utilisée uniquement pour l’identité managée affectée par l’utilisateur.

Exemple d’identité managée par le système :

{
  "@odata.type": "#Microsoft.Skills.Text.AzureOpenAIEmbeddingSkill",
  "description": "Connects a deployed embedding model.",
  "resourceUri": "https://url.openai.azure.com/",
  "deploymentId": "text-embedding-ada-002",
  "modelName": "text-embedding-ada-002",
  "inputs": [
    {
      "name": "text",
      "source": "/document/content"
    }
  ],
  "outputs": [
    {
      "name": "embedding"
    }
  ]
}
 "vectorizers": [
    {
      "name": "my_azure_open_ai_vectorizer",
      "kind": "azureOpenAI",
      "azureOpenAIParameters": {
        "resourceUri": "https://url.openai.azure.com",
        "deploymentId": "text-embedding-ada-002",
        "modelName": "text-embedding-ada-002"
      }
    }
  ]

Exemple d’identité managée affectée par l’utilisateur :

{
  "@odata.type": "#Microsoft.Skills.Text.AzureOpenAIEmbeddingSkill",
  "description": "Connects a deployed embedding model.",
  "resourceUri": "https://url.openai.azure.com/",
  "deploymentId": "text-embedding-ada-002",
  "modelName": "text-embedding-ada-002",
  "inputs": [
    {
      "name": "text",
      "source": "/document/content"
    }
  ],
  "outputs": [
    {
      "name": "embedding"
    }
  ],
  "authIdentity": {
    "@odata.type": "#Microsoft.Azure.Search.DataUserAssignedIdentity",
    "userAssignedIdentity": "/subscriptions/<subscription_id>/resourcegroups/<resource_group>/providers/Microsoft.ManagedIdentity/userAssignedIdentities/<user-assigned-managed-identity-name>"
   }
}
 "vectorizers": [
    {
      "name": "my_azure_open_ai_vectorizer",
      "kind": "azureOpenAI",
      "azureOpenAIParameters": {
        "resourceUri": "https://url.openai.azure.com",
        "deploymentId": "text-embedding-ada-002",
        "modelName": "text-embedding-ada-002"
        "authIdentity": {
            "@odata.type": "#Microsoft.Azure.Search.DataUserAssignedIdentity",
            "userAssignedIdentity": "/subscriptions/<subscription_id>/resourcegroups/<resource_group>/providers/Microsoft.ManagedIdentity/userAssignedIdentities/<user-assigned-managed-identity-name>"
          }
      }
    }
  ]

Vérifier l’accès au pare-feu

Si votre ressource Azure se trouve derrière un pare-feu, assurez-vous qu’il existe une règle de trafic entrant qui admet les demandes de votre service de recherche.

Voir aussi