Partager via


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

  • Azure CLI

  • 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.

  1. Dans le portail Azure, recherchez l’objet d’instance managée SQL.

  2. Sous l’onglet Vue d’ensemble, recherchez la propriété Host. Copiez la partie de zone DNS du FQDN pour l’étape suivante.

  3. 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

  1. 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",
        }
    }
    
  2. 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.

  3. Collez dans le nom de zone DNS dans « dnsZonePrefix » que vous avez récupéré à une étape antérieure.

  4. 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.

  5. 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).

  6. Dans Azure CLI, tapez dir pour noter l’emplacement actuel du fichier.

  1. À partir de la ligne de commande, connectez-vous à Azure avec az login.

  2. 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}}

  3. 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.

  4. 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.

  1. Dans le portail Azure, ouvrez l’onglet Connexions de point de terminaison privé de l’instance managée.

  2. Recherchez la section qui répertorie les connexions des points de terminaison privés.

  3. 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.

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é.

Capture d’écran du portail Azure, montrant une ressource de liaison privée partagée « Approuvée ».

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.

  1. 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
     }
    
  2. 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": []
         }
    
  3. 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.

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.

Voir aussi