Remarque
L’accès à cette page nécessite une autorisation. Vous pouvez essayer de vous connecter ou de modifier des répertoires.
L’accès à cette page nécessite une autorisation. Vous pouvez essayer de modifier des répertoires.
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.
Cet article explique comment configurer une connexion d’indexeur pour Azure SQL Database à l’aide d’une identité managée au lieu de fournir des informations d’identification dans le chaîne de connexion.
Vous pouvez utiliser une identité managée affectée par le système ou une identité managée affectée par l’utilisateur. Les identités managées sont des identifiants Microsoft Entra et nécessitent des attributions de rôles dans Azure pour accéder aux données dans Azure SQL.
Conditions préalables
Créez une identité managée pour votre service de recherche.
Assigner un rôle d’administrateur Azure sur SQL. L’identité utilisée sur la connexion de l’indexeur a besoin d’autorisations de lecture. Vous devez être administrateur Microsoft Entra avec un serveur dans SQL Database ou SQL Managed Instance pour accorder des autorisations de lecture sur une base de données.
Vous devez être familiarisé avec les concepts et la configurationde l’indexeur.
1 - Attribuer des autorisations pour lire la base de données
Suivez les étapes ci-dessous pour affecter le service de recherche ou l’autorisation d’identité managée affectée par l’utilisateur pour lire la base de données.
Connectez-vous à Visual Studio.
Authentifiez-vous auprès de votre compte Microsoft Entra.
Exécutez les commandes suivantes :
Incluez les crochets autour du nom de votre service de recherche ou du nom d’identité managée affectée par l’utilisateur.
CREATE USER [insert your search service name here or user-assigned managed identity name] FROM EXTERNAL PROVIDER; EXEC sp_addrolemember 'db_datareader', [insert your search service name here or user-assigned managed identity name];
Si vous modifiez ultérieurement l’identité du service de recherche ou l’identité affectée par l’utilisateur après l’attribution d’autorisations, vous devez supprimer l’appartenance au rôle et supprimer l’utilisateur dans la base de données SQL, puis répéter l’attribution d’autorisation. La suppression de l’appartenance au rôle et de l’utilisateur peut être effectuée en exécutant les commandes suivantes :
sp_droprolemember 'db_datareader', [insert your search service name or user-assigned managed identity name];
DROP USER IF EXISTS [insert your search service name or user-assigned managed identity name];
2 - Ajouter une attribution de rôle
Dans cette section, vous allez accorder à votre service Recherche Azure AI l'autorisation de lire des données à partir de votre SQL Server. Pour obtenir des instructions détaillées, consultez Assigner des rôles Azure à l’aide du portail Azure.
Dans le portail Azure, accédez à votre page de Azure SQL Server.
Sélectionnez Contrôle d’accès (IAM).
Sélectionnez Ajouter une > attribution de rôle.
Sous l’onglet Rôle , sélectionnez le rôle Lecteur approprié.
Sous l’onglet Membres , sélectionnez Identité managée, puis sélectionnez Sélectionner des membres.
Sélectionnez votre abonnement Azure.
Si vous utilisez une identité managée affectée par le système, sélectionnez Identité managée affectée par le système, recherchez votre service de recherche, puis sélectionnez-le.
Sinon, si vous utilisez une identité managée affectée par l’utilisateur, sélectionnez Identité managée affectée par l’utilisateur, recherchez le nom de l’identité managée affectée par l’utilisateur, puis sélectionnez-la.
Sous l’onglet Révision + affectation , sélectionnez Vérifier + affecter le rôle.
3 - Créer la source de données
Créez la source de données et fournissez une identité managée affectée par le système ou une identité managée affectée par l’utilisateur.
Identité managée affectée par le système
L'API REST, le portail Azure et les SDK Azure prennent en charge l'identité managée attribuée par le système.
Lorsque vous vous connectez avec une identité managée affectée par le système, la seule modification apportée à la définition de la source de données est le format de la propriété « credentials ». Vous fournirez un nom initial de catalogue ou de base de données et un ResourceId sans clé de compte ni mot de passe. ResourceId doit inclure l’ID d’abonnement de Azure SQL Database, le groupe de ressources de SQL Database et le nom de la base de données SQL.
Voici un exemple de création d'une source de données pour indexer des données à partir d'un compte de stockage à l'aide de l'API REST Create Data Source et d'une chaîne de connexion d'identité managée. Le format de chaîne de connexion d’identité managée est le même pour l'API REST, le SDK .NET, et le portail Azure.
POST https://[service name].search.windows.net/datasources?api-version=2026-04-01
Content-Type: application/json
api-key: [admin key]
{
"name" : "sql-datasource",
"type" : "azuresql",
"credentials" : {
"connectionString" : "Database=[SQL database name];ResourceId=/subscriptions/[subscription ID]/resourceGroups/[resource group name]/providers/Microsoft.Sql/servers/[SQL Server name];Connection Timeout=30;"
},
"container" : {
"name" : "my-table"
}
}
Identité gérée assignée par l'utilisateur
L’API REST version 2026-04-01 et ultérieure prend en charge les connexions basées sur une identité managée affectée par l’utilisateur. Lorsque vous vous connectez avec une identité managée affectée par l’utilisateur, il existe deux modifications apportées à la définition de la source de données :
Tout d’abord, le format de la propriété « credentials » est un nom initial de catalogue ou de base de données et un ResourceId qui n’a ni clé de compte ni mot de passe. ResourceId doit inclure l’ID d’abonnement de Azure SQL Database, le groupe de ressources de SQL Database et le nom de la base de données SQL. Il s’agit du même format que l’identité managée affectée par le système.
Ensuite, ajoutez une propriété « identity » qui contient la collection d’identités gérées attribuées par l'utilisateur. Une seule identité managée affectée par l’utilisateur doit être fournie lors de la création de la source de données. Définissez-le sur le type « userAssignedIdentities ».
Voici un exemple de création d’un objet source de données indexeur à l’aide de sources de données - Créer ou mettre à jour :
POST https://[service name].search.windows.net/datasources?api-version=2026-04-01
Content-Type: application/json
api-key: [admin key]
{
"name" : "sql-datasource",
"type" : "azuresql",
"credentials" : {
"connectionString" : "Database=[SQL database name];ResourceId=/subscriptions/[subscription ID]/resourceGroups/[resource group name]/providers/Microsoft.Sql/servers/[SQL Server name];Connection Timeout=30;"
},
"container" : {
"name" : "my-table"
},
"identity" : {
"@odata.type": "#Microsoft.Azure.Search.DataUserAssignedIdentity",
"userAssignedIdentity" : "/subscriptions/[subscription ID]/resourcegroups/[resource group name]/providers/Microsoft.ManagedIdentity/userAssignedIdentities/[managed identity name]"
}
}
4 - Créer l’index
L’index spécifie les champs d’un document, d’attributs et d’autres constructions qui forment l’expérience de recherche.
Voici un appel d’API REST Create Index avec un champ pouvant booktitle faire l’objet d’une recherche :
POST https://[service name].search.windows.net/indexes?api-version=2026-04-01
Content-Type: application/json
api-key: [admin key]
{
"name" : "my-target-index",
"fields": [
{ "name": "id", "type": "Edm.String", "key": true, "searchable": false },
{ "name": "booktitle", "type": "Edm.String", "searchable": true, "filterable": false, "sortable": false, "facetable": false }
]
}
5 - Créer l’indexeur
Un indexeur connecte une source de données avec un index de recherche cible et fournit une planification pour automatiser l’actualisation des données. Une fois l’index et la source de données créés, vous êtes prêt à créer l’indexeur. Si l’indexeur réussit, la syntaxe de connexion et les attributions de rôles sont valides.
Voici un appel d'API REST Create Indexer avec une définition d'indexeur Azure SQL. L’indexeur s’exécute lorsque vous envoyez la demande.
POST https://[service name].search.windows.net/indexers?api-version=2026-04-01
Content-Type: application/json
api-key: [admin key]
{
"name" : "sql-indexer",
"dataSourceName" : "sql-datasource",
"targetIndexName" : "my-target-index"
}
Si vous obtenez une erreur lorsque l’indexeur tente de se connecter à la source de données qui indique que le client n’est pas autorisé à accéder au serveur, examinez les erreurs courantes de l’indexeur.
Voir aussi
Indexeur Azure SQL