Partager via


Tutoriel : Indexer et enrichir des objets blob chiffrés pour la recherche en texte intégral dans Azure AI Recherche

Ce tutoriel vous montre comment utiliser Azure AI Recherche pour indexer des documents qui ont été précédemment chiffrés avec une clé gérée par le client dans Stockage Blob Azure.

Normalement, un indexeur ne peut pas extraire le contenu des objets blob qui ont été chiffrés à l’aide du chiffrement côté client de la bibliothèque cliente Stockage Blob Azure, car l’indexeur n’a pas accès à la clé de chiffrement gérée par le client dans Azure Key Vault. Cependant, en tirant parti de la compétence personnalisée DecryptBlobFile suivie de la compétence Document Extraction, vous pouvez fournir un accès contrôlé à la clé pour déchiffrer les fichiers, puis en extraire le contenu. Cela permet l’indexation et l’enrichissement de ces documents sans compromettre le statut de chiffrement de vos documents stockés.

En commençant avec des documents entiers précédemment chiffrés (du texte non structuré) à des formats tels que PDF, HTML, DOCX et PPTX dans Stockage Blob Azure, ce tutoriel utilise un client REST et les API REST de recherche pour effectuer les tâches suivantes :

  • Définissez un pipeline qui déchiffre les documents et en extrait le texte.
  • Définissez un index pour stocker la sortie.
  • Exécutez le pipeline pour créer et charger l’index.
  • Explorez les résultats à l’aide de la recherche en texte intégral et d’une syntaxe de requête enrichie.

Si vous n’avez pas d’abonnement Azure, ouvrez un compte gratuit avant de commencer.

Prérequis

Le déploiement de compétences personnalisées crée une application de fonction Azure et un compte Stockage Azure. Étant donné que ces ressources sont créées pour vous, elles ne sont pas répertoriées comme condition préalable. Lorsque vous avez terminé ce didacticiel, n’oubliez pas de nettoyer les ressources afin de ne pas être facturé pour les services que vous n’utilisez pas.

Notes

Les ensembles de compétences nécessitent souvent l’attachement d’une ressource multiservice Azure AI. Comme indiqué, ces compétences n’ont aucune dépendance vis-à-vis d’Azure AI services et donc aucune clé n’est requise. Si, par la suite, vous ajoutez des enrichissements qui appellent des compétences intégrées, n’oubliez pas de mettre à jour vos compétences en conséquence.

Déployer la compétence personnalisée

Cet exemple utilise l'exemple de projet DecryptBlobFile du référentiel GitHub Super compétences de la Recherche Azure. Dans cette section, vous déployez la compétence sur une instance d’Azure Function afin qu'elle puisse être utilisée dans un ensemble de compétences. Un script de déploiement intégré crée une ressource Azure Function avec un préfixe psdbf-function-app- et charge la compétence. Vous êtes ensuite invité à fournir un abonnement et un groupe de ressources. Veillez à choisir le même abonnement que celui auquel votre instance d'Azure Key Vault est associée.

De manière opérationnelle, la compétence DecryptBlobFile accepte l’URL et le jeton SAS pour chaque objet blob en tant qu’entrées, et génère le fichier téléchargé et déchiffré à l’aide du contrat de référence de fichier attendu par Azure AI Recherche. Pour rappel, DecryptBlobFile a besoin de la clé de chiffrement afin de procéder au déchiffrement. Dans le cadre de la configuration, vous créez également une stratégie d’accès qui accorde à la fonction DecryptBlobFile l’accès à la clé de chiffrement dans Azure Key Vault.

  1. Cliquez sur le bouton Déployer sur Azure situé sur la page de destination de DecryptBlobFile pour ouvrir le modèle Resource Manager fourni sur le portail Azure.

  2. Choisissez le même abonnement que celui où se trouve votre instance Azure Key Vault (ce didacticiel ne fonctionne pas si vous sélectionnez un autre abonnement).

  3. Sélectionnez un groupe de ressources existant ou créez-en un. Un groupe de ressources dédié facilite le nettoyage ultérieurement.

  4. Sélectionnez Vérifier + créer, acceptez les conditions, puis sélectionnez Créer pour déployer l'instance d'Azure Function.

    Capture d’écran de la page des modèles ARM dans le portail Azure.

  5. Attendez que le déploiement se termine.

Vous devez disposer d’une application de fonction Azure qui contient la logique de déchiffrement et d’une ressource Stockage Azure qui stocke les données d’application. Dans les étapes suivantes, vous allez accorder à l’application des autorisations d’accès au coffre de clés et collecter les informations dont vous avez besoin pour les appels REST.

Accorder des autorisations dans Azure Key Vault

  1. Accédez à votre service Azure Key Vault dans le Portail Azure. Dans Azure Key Vault, créez une stratégie d'accès qui accorde un accès à la clé de la compétence personnalisée.

  2. Dans le volet de navigation gauche, sélectionnez Stratégies d’accès, puis sélectionnez + Créer pour démarrer l’Assistant Créer une stratégie d’accès.

    Capture d’écran de la commande Stratégie d’accès dans le volet de navigation gauche.

  3. Sur la page Autorisations, sous Configurer à partir du modèle, sélectionnez Azure Data Lake Storage ou Stockage Azure.

  4. Sélectionnez Suivant.

  5. Sur la page Principal, sélectionnez l’instance de fonction Azure que vous avez déployée. Vous pouvez la rechercher à l'aide du préfixe de ressource utilisé pour la créer à l'étape 2. La valeur par défaut du préfixe est psdbf-function-app.

  6. Sélectionnez Suivant.

  7. Dans Vérifier + créer, sélectionnez Créer.

Collecter les informations sur l’application

  1. Sur le Portail Azure, accédez à la fonction psdbf-function-app et notez les propriétés suivantes dont vous avez besoin pour les appels REST :

  2. Obtenez l’URL de la fonction, qui se trouve sous Essentials sur la page principale de la fonction.

    Capture d’écran de la page de vue d’ensemble et de la section Bases de l’application de fonction Azure.

  3. Obtenez le code de la clé hôte, que vous pourrez vous procurer en accédant à Clés d'application, en cliquant pour afficher la clé par défaut et en copiant la valeur.

    Capture d’écran de la page Clés d’application de l’application de fonction Azure.

  1. Connectez-vous au Portail Azure, puis dans la page Vue d’ensemble du service de recherche, récupérez le nom de votre service de recherche. Vous pouvez confirmer le nom de votre service en passant en revue l’URL du point de terminaison. Si votre URL de point de terminaison est https://mydemo.search.windows.net, le nom du service doit être mydemo.

  2. Dans Paramètres>Clés, obtenez une clé d’administration pour avoir des droits d’accès complets sur le service. Il existe deux clés d’administration interchangeables, fournies pour assurer la continuité de l’activité au cas où vous deviez en remplacer une. Vous pouvez utiliser la clé primaire ou secondaire sur les demandes d’ajout, de modification et de suppression d’objets.

    Obtenir le nom du service, les clés d’administration et les clés de requête

Une clé API est nécessaire dans l’en-tête de chaque requête envoyée à votre service. Une clé valide permet d’établir, en fonction de chaque demande, une relation de confiance entre l’application qui envoie la demande et le service qui en assure le traitement.

Configurer un client REST

Créez des variables pour les points de terminaison et les clés :

Variable Comment les obtenir
admin-key Dans la page Clés du service Azure AI Recherche.
search-service-name Nom du service Azure AI Recherche. L’URL est https://{{search-service-name}}.search.windows.net.
storage-connection-string Dans le compte de stockage, sous l’onglet Clés d’accès, sélectionnez key1>Chaîne de connexion.
storage-container-name Nom du conteneur d'objets blob qui contient les fichiers chiffrés à indexer.
function-uri Dans Azure Function, sous Essentials sur la page principale.
function-code Dans Azure Function, en accédant à Clés d'application, en cliquant pour afficher la clé par défaut et en copiant la valeur.
api-version Laisser 2020-06-30.
datasource-name Laisser encrypted-blobs-ds.
index-name Laisser encrypted-blobs-idx.
skillset-name Laisser encrypted-blobs-ss.
indexer-name Laisser encrypted-blobs-ixr.

Examiner et exécuter chaque requête

Utilisez des requêtes HTTP pour créer les objets d’un pipeline d’enrichissement :

  • Demande PUT pour créer l’index : cet index de recherche contient les données qu’Azure AI Recherche utilise et retourne.

  • Une requête POST pour créer la source de données : cette source de données spécifie la connexion à votre compte de stockage contenant les fichiers d’objets blob chiffrés.

  • Une requête PUT pour créer l’ensemble de compétences : L'ensemble de compétences spécifie la définition de compétence personnalisée relative à l'instance d'Azure Function qui déchiffrera les données des fichiers blob, et une fonction DocumentExtractionSkill pour extraire le texte de chaque document une fois celui-ci déchiffré.

  • Une requête PUT pour créer l’indexeur : l’exécution de l’indexeur récupère les objets blob, applique les compétences et les index et stocke les résultats. Vous devez exécuter cette requête en dernier. La compétence personnalisée dans les compétences appelle la logique de déchiffrement.

Surveiller l’indexation

L’indexation et l’enrichissement commencent dès que vous envoyez la demande de création d’indexeur. Selon le nombre de documents présents sur votre compte de stockage, l'indexation peut prendre un certain temps. Pour savoir si l’indexeur est toujours en cours d’exécution, envoyez une requête Get Indexer Status, puis examinez la réponse pour savoir si l’indexeur est en cours d’exécution, ou pour voir les erreurs et les avertissements.

Si vous utilisez le niveau Gratuit, le message suivant doit s'afficher : "Could not extract content or metadata from your document. Truncated extracted text to '32768' characters". Ce message s'affiche car l'indexation d'objets blob au niveau Gratuit présente une limite d'extraction de caractères de 32 000. Vous ne verrez pas ce message pour ce jeu de données sur des niveaux supérieurs.

Rechercher dans votre contenu

Au terme de l'exécution de l'indexeur, vous pouvez lancer quelques requêtes pour vérifier que les données ont été correctement déchiffrées et indexées. Accédez à votre service Recherche Azure AI dans le Portail Azure et utilisez l’explorateur de recherche pour exécuter des requêtes sur les données indexées.

Nettoyer les ressources

Lorsque vous travaillez dans votre propre abonnement, il est judicieux à la fin d’un projet de supprimer les ressources dont vous n’avez plus besoin. Les ressources laissées en cours d’exécution peuvent vous coûter de l’argent. Vous pouvez supprimer les ressources individuellement, ou supprimer le groupe de ressources pour supprimer l’ensemble des ressources.

Vous pouvez rechercher et gérer des ressources dans le Portail Azure dans le volet de navigation de gauche, en cliquant sur le lien Toutes les ressources ou Groupes de ressources.

Étapes suivantes

Maintenant que vous avez correctement indexé les fichiers chiffrés, vous pouvez effectuer une itération sur ce pipeline en ajoutant des compétences. Cela vous permettra d'enrichir vos données et de bénéficier d'insights supplémentaires sur celles-ci.

Si vous utilisez des données doublement chiffrées, vous souhaiterez peut-être examiner les fonctionnalités de chiffrement d’index disponibles dans Recherche Azure AI. Bien que l'indexeur ait besoin de données déchiffrées pour l'indexation, une fois que l'index existe, il peut être chiffré dans un index de recherche à l'aide d'une clé gérée par le client. Ainsi, vos données seront toujours chiffrées lorsqu'elles sont au repos. Pour plus d’informations, consultez Configurer des clés gérées par le client pour le chiffrement des données dans Azure AI Recherche.