Créer une liaison privée partagée pour une instance managée SQL à partir de la Recherche Azure AI
Cet article explique comment configurer un indexeur dans la Recherche Azure AI pour une connexion privée à une instance managée SQL s’exécutant dans un réseau virtuel. La connexion privée est établie via une liaison privée partagée et Azure Private Link.
Sur une connexion privée à une instance managée, le nom de domaine complet (FQDN) de l’instance doit contenir la zone DNS. Actuellement, seule l’API REST de gestion de la Recherche Azure AI fournit un paramètre dnsZonePrefix
qui accepte la spécification de la zone DNS.
Même si vous pouvez appeler directement l’API REST de gestion, il est plus facile d’utiliser le module Azure CLI az rest
pour envoyer des appels de l’API REST de gestion à partir d’une ligne de commande. Cet article utilise Azure CLI avec REST pour configurer la liaison privée.
Remarque
Cet article utilise le portail Azure pour obtenir des propriétés et confirmer les étapes. Toutefois, quand vous créez la liaison privée partagée pour SQL Managed Instance, vérifiez que vous utilisez l’API REST. Bien que l’onglet Réseau liste Microsoft.Sql/managedInstances
comme une option, le portail Azure ne prend actuellement pas en charge le format d’URL étendu utilisé par SQL Managed Instance.
Prérequis
Recherche Azure AI, niveau de base ou supérieur. Si vous utilisez l’enrichissement par IA et des ensembles de compétences, utilisez le niveau Standard 2 (S2) ou supérieur. Pour plus d’informations, consultez Limites de service.
Azure SQL Managed Instance, configuré pour s’exécuter dans un réseau virtuel.
Vous devez avoir au moins des autorisations de Contributeur sur la Recherche Azure AI et SQL Managed Instance.
Chaîne de connexion SQL Managed Instance. L’identité managée n’est actuellement pas prise en charge avec une liaison privée partagée. Votre chaîne de connexion doit contenir un nom d’utilisateur et un mot de passe.
Remarque
Les liaisons privées partagées sont facturables via la tarification Azure Private Link et les frais sont facturés sur la base de l’utilisation.
1 - Récupérer les informations de connexion
Récupérez le FQDN de l’instance managée, y compris la zone DNS. La zone DNS fait partie du nom de domaine de l’instance managée SQL. Par exemple, si le FQDN de l’instance managée SQL est my-sql-managed-instance.00000000000.database.windows.net
, la zone DNS est 00000000000
.
Dans le portail Azure, recherchez l’objet d’instance managée SQL.
Sous l’onglet Vue d’ensemble, recherchez la propriété Host. Copiez la partie de zone DNS du FQDN pour l’étape suivante.
Sous l’onglet Chaînes de connexion, copiez la chaîne de connexion ADO.NET pour une étape ultérieure. Elle est utilisée pour la connexion de source de données pendant le test de la connexion privée.
Pour plus d’informations sur les propriétés de connexion, consultez Créer une instance managée Azure SQL.
2 - Créer le corps de la demande
Dans un éditeur de texte, créez le JSON pour la liaison privée partagée.
{ "name": "{{shared-private-link-name}}", "properties": { "privateLinkResourceId": "/subscriptions/{{target-resource-subscription-ID}}/resourceGroups/{{target-resource-rg}}/providers/Microsoft.Sql/managedInstances/{{target-resource-name}}", "dnsZonePrefix": "a1b22c333d44", "groupId": "managedInstance", "requestMessage": "please approve", } }
Indiquez un nom explicite pour la liaison privée partagée. La liaison privée partagée s’affiche avec d’autres points de terminaison privés. Un nom comme « shared-private-link-for-search » peut vous aider à vous rappeler comment elle est utilisée.
Collez dans le nom de zone DNS dans « dnsZonePrefix » que vous avez récupéré à une étape antérieure.
Modifiez « privateLinkResourceId » pour refléter le point de terminaison privé de votre instance managée. Indiquez l’ID d’abonnement, le nom du groupe de ressources et le nom d’objet de l’instance managée.
Enregistrez le fichier localement sous create-pe.json (ou utilisez un autre nom, mais n’oubliez pas de mettre à jour la syntaxe Azure CLI à l’étape suivante).
Dans Azure CLI, tapez
dir
pour noter l’emplacement actuel du fichier.
3 - Créer une liaison privée partagée
À partir de la ligne de commande, connectez-vous à Azure avec
az login
.Si vous avez plusieurs abonnements, vérifiez que vous utilisez celui que vous voulez :
az account show
.Pour définir l’abonnement, utilisez
az account set --subscription {{subscription ID}}
Appelez la commande
az rest
pour utiliser l’API REST de gestion de la Recherche Azure AI.Comme la prise en charge de la liaison privée partagée pour les instances managées SQL est toujours en préversion, vous avez besoin d’une préversion de l’API REST. Utilisez
2021-04-01-preview
ou une version ultérieure de l’API en préversion pour cette étape. Nous vous recommandons d’utiliser la dernière version de l’API en préversion.az rest --method put --uri https://management.azure.com/subscriptions/{{search-service-subscription-ID}}/resourceGroups/{{search service-resource-group}}/providers/Microsoft.Search/searchServices/{{search-service-name}}/sharedPrivateLinkResources/{{shared-private-link-name}}?api-version=2024-06-01-preview --body @create-pe.json
Indiquez l’ID d’abonnement, le nom du groupe de ressources et le nom du service de votre ressource de Recherche Azure AI.
Fournissez le même nom de liaison privée partagée que celui que vous avez spécifié dans le corps JSON.
Fournissez le chemin du fichier create-pe.json si vous avez quitté l’emplacement du fichier. Vous pouvez taper
dir
sur la ligne de commande pour confirmer que le fichier se trouve dans le répertoire actuel.Appuyez sur ENTRÉE pour exécuter la commande.
Une fois ces étapes effectuées, vous devez avoir une liaison privée partagée provisionnée dans l’état En attente. La création de la liaison prend plusieurs minutes. Une fois la liaison créée, le propriétaire de la ressource doit approuver la demande pour qu’elle soit opérationnelle.
4 - Approuver la connexion du point de terminaison privé
Du côté de l’instance managée SQL, le propriétaire de la ressource doit approuver la demande de connexion privée que vous avez créée.
Dans le portail Azure, ouvrez l’onglet Connexions de point de terminaison privé de l’instance managée.
Recherchez la section qui répertorie les connexions des points de terminaison privés.
Sélectionnez la connexion, puis Approuver. La mise à jour de l’état dans le portail Azure peut prendre quelques minutes.
Dès que le point de terminaison privé est approuvé, la Recherche Azure AI crée les mappages de zone DNS nécessaires dans la zone DNS créée à cet effet.
5 - Vérifier l’état de la liaison privée partagée
Du côté de la Recherche Azure IA, vous pouvez confirmer l’approbation de la demande en revenant sous l’onglet Accès privé partagé de la page Réseau du service de recherche. L’état de connexion doit être approuvé.
6 - Configurer l’indexeur pour qu’il s’exécute dans l’environnement privé
Vous pouvez maintenant configurer un indexeur et sa source de données pour utiliser une connexion privée sortante sur votre instance managée.
Vous pouvez utiliser l’Assistant Importation de données pour cette étape, mais l’indexeur généré n’est pas valide pour ce scénario. Vous devez modifier la propriété JSON de l’indexeur comme décrit dans cette étape pour qu’elle soit compatible avec ce scénario. Vous devez ensuite réinitialiser et réexécuter l’indexeur pour tester entièrement le pipeline en utilisant l’indexeur mis à jour.
Cet article suppose un client REST et utilise les API REST pour faciliter la vue de toutes les propriétés. Rappelez-vous que les appels d’API REST pour les indexeurs et les sources de données utilisent les API REST de recherche, et non les API REST de gestion utilisées pour créer la liaison privée partagée. La syntaxe et les versions d’API sont différentes entre les deux API REST.
Créer la définition de source de données comme avec Azure SQL. Le format de la chaîne de connexion est légèrement différent pour une instance managée, mais les autres propriétés sont les mêmes que lorsque vous configurez une connexion de source de données à Azure SQL Database.
Indiquez la chaîne de connexion que vous avez copiée précédemment avec un catalogue initial spécifié.
POST https://myservice.search.windows.net/datasources?api-version=2024-07-01 Content-Type: application/json api-key: admin-key { "name" : "my-sql-datasource", "description" : "A database for testing Azure AI Search indexes.", "type" : "azuresql", "credentials" : { "connectionString" : "Server=tcp:contoso.public.0000000000.database.windows.net,1433;Persist Security Info=false; User ID=<your user name>; Password=<your password>;MultipleActiveResultsSets=False; Encrypt=True;Connection Timeout=30;Initial Catalog=<your database name>" }, "container" : { "name" : "Name of table or view to index", "query" : null (not supported in the Azure SQL indexer) }, "dataChangeDetectionPolicy": null, "dataDeletionDetectionPolicy": null, "encryptionKey": null }
Créez la définition d’indexeur, en définissant le
executionEnvironment
de l’indexeur sur « privé ».L’exécution de l’indexeur se produit dans un environnement privé qui est spécifique à votre service de recherche, ou dans un environnement multilocataire hébergé par Microsoft et qui est utilisé pour décharger le traitement des ensembles de compétences d’un coût élevé pour plusieurs clients. Quand vous vous connectez sur un point de terminaison privé, l’exécution de l’indexeur doit être privée.
POST https://myservice.search.windows.net/indexers?api-version=2024-07-01 Content-Type: application/json api-key: admin-key { "name": "indexer", "dataSourceName": "my-sql-datasource", "targetIndexName": "my-search-index", "parameters": { "configuration": { "executionEnvironment": "private" } }, "fieldMappings": [] }
Exécutez l’indexeur. Si l’exécution de l’indexeur réussit et que l’index de recherche est renseigné, la liaison privée partagée fonctionne.
Vous pouvez monitorer l’état de l’indexeur dans le portail Azure ou en utilisant l’API d’état de l’indexeur.
Vous pouvez utiliser l’Explorateur de recherche dans le portail Azure pour vérifier le contenu de l’index.
7 - Tester la liaison privée partagée
Si vous avez exécuté l’indexeur à l’étape précédente et que vous avez pu indexer le contenu de votre instance managée, le test a réussi. Toutefois, si l’indexeur échoue ou s’il n’y a pas de contenu dans l’index, vous pouvez modifier vos objets et répéter les tests en choisissant n’importe quel client pouvant appeler une demande sortante à partir d’un indexeur.
Un choix de facilité est d’exécuter un indexeur dans le portail Azure, mais vous pouvez également essayer un client REST et les API REST pour plus de précision. En supposant que votre service de recherche n’est pas configuré pour une connexion privée, la connexion du client REST à la recherche peut se faire sur l’Internet public.
Voici quelques rappels pour les tests :
Si vous utilisez un client REST, utilisez l’API REST de gestion et la version de l’API Préversion-01-04-2021 pour créer la liaison privée partagée. Utilisez l’API REST de recherche et une version d’API stable pour créer et appeler des indexeurs et des sources de données.
Vous pouvez utiliser l’Assistant Importation de données pour créer un indexeur, une source de données et un index. Toutefois, l’indexeur généré n’a pas le bon paramètre d’environnement d’exécution.
Vous pouvez modifier la source de données et l’indexeur JSON dans le portail Azure pour changer les propriétés, notamment l’environnement d’exécution et la chaîne de connexion.
Vous pouvez réinitialiser et réexécuter l’indexeur dans le portail Azure. La réinitialisation est importante pour ce scénario, car elle force un retraitement complet de tous les documents.
Vous pouvez utiliser l’Explorateur de recherche pour vérifier le contenu de l’index.