Esercitazione: Indicizzare e arricchire i BLOB crittografati per la ricerca full-text in Azure AI Search
Questa esercitazione illustra come usare Azure AI Search per indicizzare i documenti precedentemente crittografati con una chiave gestita dal cliente in Archiviazione BLOB di Azure.
In genere, un indicizzatore non può estrarre contenuto da BLOB crittografati usando la crittografia lato client della libreria client Archiviazione BLOB di Azure perché l'indicizzatore non ha accesso alla chiave di crittografia gestita dal cliente in Azure Key Vault. Tuttavia, sfruttando la competenza personalizzata di DecryptBlobFile, seguita dalla competenza estrazione di documenti, è possibile fornire accesso controllato alla chiave per decrittografare i file e quindi estrarre il contenuto da essi. In questo modo è possibile indicizzare e arricchire questi documenti senza compromettere lo stato di crittografia dei documenti archiviati.
A partire da documenti interi crittografati in precedenza (testo non strutturato), ad esempio PDF, HTML, DOCX e PPTX in Archiviazione BLOB di Azure, questa esercitazione usa un client REST e le API REST di ricerca per eseguire le attività seguenti:
- Definire una pipeline che decrittografa i documenti ed estrae il testo da tali documenti.
- Definire un indice per archiviare l'output.
- Eseguire la pipeline per creare e caricare l'indice.
- Esplorare i risultati tramite un ricerca full-text e una sintassi di query avanzata.
Se non si ha una sottoscrizione di Azure, aprire un account gratuito prima di iniziare.
Prerequisiti
Azure AI Search in qualsiasi livello o area.
Archiviazione di Azure, prestazioni Standard (utilizzo generico v2).
BLOB crittografati con una chiave gestita dal cliente. Vedere Esercitazione: Crittografare e decrittografare i BLOB con Azure Key Vault in caso sia necessario creare dati di esempio.
Azure Key Vault nella stessa sottoscrizione di Azure AI Search. L'eliminazione temporanea e la protezione dall'eliminazione devono essere abilitate per l'insieme di credenziali delle chiavi.
La distribuzione di competenze personalizzate crea un'app per le funzioni di Azure e un account di archiviazione di Azure. Poiché queste risorse vengono create automaticamente, non sono elencate come prerequisiti. Al termine di questa esercitazione, ricordarsi di pulire le risorse in modo che non vengano fatturati i servizi in uso.
Nota
I set di competenze richiedono spesso di collegare una risorsa multiservizio di Azure per intelligenza artificiale. Come scritto, questo set di competenze non ha alcuna dipendenza dai servizi di intelligenza artificiale di Azure e pertanto non è necessaria alcuna chiave. Se in seguito si aggiungono arricchimenti che richiamano competenze predefinite, è necessario ricordarsi di aggiornare il set di competenze di conseguenza.
Distribuire la competenza personalizzata
Questo esempio usa il progetto di esempio DecryptBlobFile dal repository di GitHub Azure Search Power Skills. In questa sezione si distribuisce la competenza in una funzione di Azure in modo che possa essere usata in un set di competenze. Uno script di distribuzione predefinito crea una risorsa funzione di Azure con un prefisso psdbf-function-app- e carica la competenza. Viene richiesto di specificare una sottoscrizione e un gruppo di risorse. Assicurarsi di scegliere la stessa sottoscrizione in cui risiede l'istanza di Azure Key Vault.
In modo operativo, la competenza DecryptBlobFile accetta l'URL e il token di firma di accesso condiviso per ogni BLOB come input e restituisce il file scaricato e decrittografato usando il contratto di riferimento file previsto da Azure AI Search. Tenere presente che DecryptBlobFile richiede la chiave di crittografia per eseguire la decrittografia. Come parte della configurazione, si creano anche criteri di accesso che concedono la funzione DecryptBlobFile all'accesso alla chiave di crittografia in Azure Key Vault.
Fare clic sul pulsante Distribuisci in Azure disponibile nella pagina di destinazione DecryptBlobFile, che aprirà il modello di Resource Manager fornito nel portale di Azure.
Scegliere la stessa sottoscrizione in cui è presente l'istanza di Azure Key Vault (questa esercitazione non funzionerà se si seleziona una sottoscrizione diversa).
Selezionare un gruppo di risorse esistente oppure creane uno nuovo. Un gruppo di risorse dedicato semplifica la pulizia in un secondo momento.
Selezionare Rivedi e crea, assicurarsi di accettare le condizioni e quindi selezionare Crea per distribuire la funzione di Azure.
Attendere il completamento della distribuzione.
È necessario disporre di un'app per le funzioni di Azure che contiene la logica di decrittografia e una risorsa di Archiviazione di Azure che archivierà i dati dell'applicazione. Nei passaggi successivi si concedono all'app le autorizzazioni per accedere all'insieme di credenziali delle chiavi e raccogliere le informazioni necessarie per le chiamate REST.
Concedere autorizzazioni in Azure Key Vault
Passare al servizio Azure Key Vault nel portale di Azure. Creare un criterio di accesso in Azure Key Vault che conceda l'accesso alla chiave alla competenza personalizzata.
Nel pannello di navigazione a sinistra selezionare Criteri di accesso e quindi selezionare + Crea per avviare la procedura guidata Creare un criterio di accesso.
Nella pagina Autorizzazioni in Configura da modello selezionare Azure Data Lake Storage o Archiviazione di Azure.
Selezionare Avanti.
Nella pagina entità di sicurezza selezionare l'istanza di Funzione di Azure distribuita. È possibile cercarlo usando il prefisso della risorsa usato per crearlo nel passaggio 2, che ha un valore di prefisso predefinito di psdbf-function-app.
Selezionare Avanti.
In Rivedi e crea selezionare Crea.
Raccogliere informazioni sull'app
Passare alla funzione psdbf-function-app nel portale di Azure e prendere nota delle proprietà seguenti necessarie per le chiamate REST:
Ottenere l'URL della funzione, disponibile in Essentials nella pagina principale della funzione.
Ottenere il codice della chiave host, disponibile passando a Chiavi dell'app, facendo clic per visualizzare la chiave predefinita e copiando il valore.
Ottenere un URL e una chiave API di amministrazione per Azure AI Search
Accedere al portale di Azure e ottenere il nome del servizio di ricerca nella relativa pagina Panoramica. È possibile verificare il nome del servizio esaminando l'URL dell'endpoint. Se l'URL dell'endpoint fosse
https://mydemo.search.windows.net
, il nome del servizio sarebbemydemo
.In Impostazioni>Chiavi ottenere una chiave amministratore per diritti completi sul servizio. Sono disponibili due chiavi amministratore interscambiabili, fornite per continuità aziendale nel caso in cui sia necessario eseguire il rollover di una di esse. È possibile usare la chiave primaria o secondaria nelle richieste per l'aggiunta, la modifica e l'eliminazione di oggetti.
Nell'intestazione di ogni richiesta inviata al servizio è necessario specificare una chiave API (api-key). La presenza di una chiave valida stabilisce una relazione di trust, in base a singole richieste, tra l'applicazione che invia la richiesta e il servizio che la gestisce.
Configurare un client REST
Creare variabili per endpoint e chiavi:
Variabile | Informazioni sulla collocazione |
---|---|
admin-key |
Nella pagina Chiavi del servizio Azure AI Search. |
search-service-name |
Nome del servizio Azure AI Search. L'URL è https://{{search-service-name}}.search.windows.net . |
storage-connection-string |
Nell'account di archiviazione, selezionare la scheda Chiavi di accesso, selezionare key1>Stringa di connessione. |
storage-container-name |
Nome del contenitore BLOB con i file crittografati da indicizzare. |
function-uri |
Nella funzione di Azure in Essentials nella pagina principale. |
function-code |
Nella funzione di Azure passare a Chiavi dell'app, fare clic per visualizzare la chiave predefinita e copiare il valore. |
api-version |
Lasciare 2020-06-30. |
datasource-name |
Lasciare come encrypted-blobs-ds. |
index-name |
Lasciare come encrypted-blobs-idx. |
skillset-name |
Lasciare come encrypted-blobs-ss. |
indexer-name |
Lasciare come encrypted-blobs-ixr. |
Esaminare ed eseguire ogni richiesta
Usare le richieste HTTP per creare gli oggetti di una pipeline di arricchimento:
Richiesta PUT per creare l'indice: questo indice di ricerca contiene i dati usati e restituiti da Ricerca di intelligenza artificiale di Azure.
Richiesta POST per creare l'origine dati: questa origine dati specifica la connessione all'account di archiviazione contenente i file BLOB crittografati.
Richiesta PUT per creare il set di competenze: il set di competenze specifica la definizione di competenza personalizzata per la funzione di Azure che decrittograferà i dati del file BLOB e un DocumentExtractionSkill per estrarre il testo da ogni documento dopo la decrittografia.
Richiesta PUT per creare l'indicizzatore: l'esecuzione dell'indicizzatore recupera i BLOB, applica il set di competenze e indici e archivia i risultati. È necessario eseguire questa richiesta per ultima. La competenza personalizzata nel set di competenze richiama la logica di decrittografia.
Monitorare l'indicizzazione
L'indicizzazione e l'arricchimento iniziano non appena si invia la richiesta Crea l'indicizzatore. A seconda del numero di documenti presenti nell'account di archiviazione, l'indicizzazione può richiedere del tempo. Per verificare se l'indicizzatore è ancora in esecuzione, inviare un richiesta per Ottenere lo stato dell'indicizzatore ed esaminare la risposta per sapere se l'indicizzatore è in esecuzione o per visualizzare informazioni sugli errori e sugli avvisi.
Se si usa il livello Gratuito, è previsto il messaggio seguente: "Could not extract content or metadata from your document. Truncated extracted text to '32768' characters"
. Questo messaggio viene visualizzato perché l'indicizzazione BLOB nel livello gratuito prevede un limite di 32K per l'estrazione dei caratteri. Con livelli superiori questo messaggio non verrà visualizzato per il set di dati.
Eseguire ricerche nel contenuto
Al termine dell'esecuzione dell'indicizzatore, è possibile eseguire alcune query per verificare che i dati siano stati decrittografati e indicizzati correttamente. Passare al servizio di ricerca di Intelligenza artificiale di Azure nella portale di Azure e usare Esplora ricerche per eseguire query sui dati indicizzati.
Pulire le risorse
Quando si lavora nella propria sottoscrizione, alla fine di un progetto è opportuno rimuovere le risorse che non sono più necessarie. Le risorse che rimangono in esecuzione hanno un costo. È possibile eliminare risorse singole oppure gruppi di risorse per eliminare l'intero set di risorse.
È possibile trovare e gestire le risorse nella portale di Azure, usando il collegamento Tutte le risorse o Gruppi di risorse nel riquadro di spostamento a sinistra.
Passaggi successivi
Ora che i file crittografati sono stati indicizzati correttamente, è possibile eseguire l'iterazione in questa pipeline aggiungendo altre competenze. In questo modo sarà possibile arricchire e ottenere informazioni aggiuntive sui dati.
Se si lavora con dati crittografati doubly, è possibile esaminare le funzionalità di crittografia degli indici disponibili in Ricerca di intelligenza artificiale di Azure. Anche se l'indicizzatore necessita di dati decrittografati a scopo di indicizzazione, una volta che l'indice esiste, può essere crittografato in un indice di ricerca usando una chiave gestita dal cliente. In questo modo si garantisce che i dati siano sempre crittografati quando sono inattivi. Per altre informazioni, vedere Configurare le chiavi gestite dal cliente per la crittografia dei dati in Azure AI Search.