Freigeben über


Tutorial: Indizieren und Anreichern verschlüsselter Blobs für die Volltextsuche in Azure KI Search

In diesem Tutorial wird beschrieben, wie Sie Azure KI Search verwenden, um Dokumente zu indizieren, die zuvor mit einem kundenseitig verwalteten Schlüssel in Azure Blob Storage verschlüsselt wurden.

Normalerweise kann ein Indexer keine Inhalte aus Blobs extrahieren, die mithilfe der clientseitigen Verschlüsselung der Azure Blob Storage-Clientbibliothek verschlüsselt wurden, da er keinen Zugriff auf den kundenseitig verwalteten Verschlüsselungsschlüssel in Azure Key Vault hat. Wenn Sie jedoch den benutzerdefinierten Skill DecryptBlobFile und anschließend den Skill DocumentExtraction verwenden, können Sie kontrollierten Zugriff auf den Schlüssel bieten, um die Dateien zu entschlüsseln und anschließend Inhalte aus ihnen zu extrahieren. Dadurch erhalten Sie die Möglichkeit, diese Dokumente zu indizieren und anzureichern, ohne den Verschlüsselungsstatus Ihrer gespeicherten Dokumente zu kompromittieren.

Ausgehend von zuvor verschlüsselten ganzen Dokumenten (unstrukturierter Text) wie PDF, HTML, DOCX und PPTX in Azure Blob Storage werden in diesem Leitfaden einen REST-Client und die REST-APIs der Suche verwendet, um die folgenden Aufgaben auszuführen:

  • Definieren Sie eine Pipeline, mit der die Dokumente entschlüsselt und Text aus den Dokumenten extrahiert wird.
  • Definieren Sie einen Index zum Speichern der Ausgabe.
  • Führen Sie die Pipeline aus, um den Index zu erstellen und zu laden.
  • Erkunden Sie Ergebnisse per Volltextsuche und umfangreicher Abfragesyntax.

Sollten Sie über kein Azure-Abonnement verfügen, können Sie ein kostenloses Konto erstellen, bevor Sie beginnen.

Voraussetzungen

Bei der Bereitstellung benutzerdefinierter Skills werden eine Azure-Functions-App und ein Azure Storage-Konto erstellt. Da diese Ressourcen für Sie erstellt werden, werden sie nicht als Voraussetzung aufgeführt. Wenn Sie dieses Tutorial abgeschlossen haben, denken Sie daran, die Ressourcen so zu bereinigen, dass Ihnen keine Dienste in Rechnung gestellt werden, die Sie nicht verwenden.

Hinweis

Skillsets erfordern häufig, dass eine Azure KI-Ressource mit mehreren Diensten angefügt wird. Wie bereits ausgeführt, hat dieses Skillset keine Abhängigkeit von Azure KI Services, und daher ist kein Schlüssel erforderlich. Wenn Sie später Anreicherungen hinzufügen, die integrierte Skills aufrufen, denken Sie daran, Ihr Skillset entsprechend zu aktualisieren.

Bereitstellen des benutzerdefinierten Skills

In diesem Beispiel wird das Beispielprojekt DecryptBlobFile aus dem GitHub-Repository Azure Search Power Skills verwendet. In diesem Abschnitt stellen Sie den Skill in einer Azure-Funktion bereit, damit er in einem Skillset verwendet werden kann. Ein integriertes Bereitstellungsskript erstellt eine Azure-Funktionsressource mit dem Präfix psdbf-function-app- und lädt den Skill. Sie werden aufgefordert, ein Abonnement und eine Ressourcengruppe anzugeben. Geben Sie das Abonnement an, in dem sich Ihre Azure Key Vault-Instanz befindet.

Der DecryptBlobFile-Skill verwendet die URL und das SAS-Token für die einzelnen Blobs als Eingaben und gibt die heruntergeladene, entschlüsselte Datei mithilfe des von Azure KI Search erwarteten Dateiverweisvertrags aus. „DecryptBlobFile“ benötigt zum Entschlüsseln den Verschlüsselungsschlüssel. Im Rahmen der Einrichtung erstellen Sie zudem eine Zugriffsrichtlinie, mit der DecryptBlobFile Funktionszugriff auf den Verschlüsselungsschlüssel in Azure Key Vault erteilt wird.

  1. Klicken Sie auf die Schaltfläche In Azure bereitstellen auf der Landing Page von „DecryptBlobFile“. Daraufhin wird die bereitgestellte Resource Manager-Vorlage im Azure-Portal geöffnet.

  2. Wählen Sie dasselbe Abonnement aus, das Ihre Azure Key Vault-Instanz enthält (die Schritte in diesem Tutorial funktionieren nicht, wenn Sie ein anderes Abonnement auswählen).

  3. Wählen Sie eine vorhandene Ressourcengruppe aus, oder erstellen Sie eine neue. Eine dedizierte Ressourcengruppe erleichtert später die Bereinigung.

  4. Wählen Sie Überprüfen und erstellen aus, stimmen Sie den Bedingungen zu, und klicken Sie dann auf Erstellen, um die Azure-Funktion bereitzustellen.

    Screenshot der Seite mit der ARM-Vorlage im Azure-Portal

  5. Warten Sie, bis die Bereitstellung abgeschlossen ist.

Sie sollten über eine Azure-Funktions-App verfügen, die die Entschlüsselungslogik enthält, und über eine Azure Storage-Ressource, in der Anwendungsdaten gespeichert werden. In den nächsten Schritten erteilen Sie der App Berechtigungen für den Zugriff auf den Schlüsseltresor und für das Sammeln von Informationen, die Sie für die REST-Aufrufe benötigen.

Erteilen von Berechtigungen in Azure Key Vault

  1. Navigieren Sie im Portal zu Ihrer Azure Key Vault-Instanz. Erstellen Sie in Azure Key Vault eine Zugriffsrichtlinie, mit der dem benutzerdefinierten Skill Schlüsselzugriff erteilt wird.

  2. Wählen Sie im linken Navigationsbereich Zugriffsrichtlinien und dann + Erstellen aus, um den Assistenten zum Erstellen einer Zugriffsrichtlinie zu starten.

    Screenshot: Befehl „Zugriffsrichtlinie“ im linken Navigationsbereich

  3. Wählen Sie auf der Seite Berechtigungen unter Anhand einer Vorlage konfigurieren die Option Azure Data Lake Storage oder Azure Storage aus.

  4. Wählen Sie Weiter aus.

  5. Wählen Sie für den Prinzipal die Azure Functions-Instanz aus, die Sie bereitgestellt haben. Sie können anhand des Ressourcenpräfixes nach ihr suchen, das zum Erstellen der Instanz in Schritt 2 verwendet wurde und standardmäßig den Wert psdbf-function-app aufweist.

  6. Wählen Sie Weiter aus.

  7. Wählen Sie unter Überprüfen + erstellen die Option Erstellen aus.

Sammeln von App-Informationen

  1. Navigieren Sie zur Funktion psdbf-function-app im Portal, und notieren Sie sich die folgenden Eigenschaften, die Sie später für die REST-Aufrufe benötigen:

  2. Rufen Sie die URL der Funktion ab, die Sie unter Zusammenfassung auf der Hauptseite für die Funktion finden.

    Screenshot: Übersichtsseite und Abschnitt „Essentials“ der Azure-Funktions-App

  3. Rufen Sie den Schlüsselcode des Hosts ab, den Sie finden, indem Sie zu App-Schlüssel navigieren, klicken, um den Standardschlüssel anzuzeigen, und den Wert kopieren.

    Screenshot: Seite „App-Schlüssel“ der Azure-Funktions-App

  1. Melden Sie sich beim Azure-Portal an, und rufen Sie auf der Seite Übersicht Ihres Suchdiensts den Namen Ihres Suchdiensts ab. Sie können den Dienstnamen anhand der Endpunkt-URL überprüfen. Wenn Ihre Endpunkt-URL z.B. https://mydemo.search.windows.net lautet, ist der Name des Diensts mydemo.

  2. Rufen Sie unter Einstellungen>Schlüssel einen Administratorschlüssel ab, um Vollzugriff auf den Dienst zu erhalten. Es gibt zwei austauschbare Administratorschlüssel – diese wurden zum Zweck der Geschäftskontinuität bereitgestellt, falls Sie einen Rollover für einen Schlüssel durchführen müssen. Für Anforderungen zum Hinzufügen, Ändern und Löschen von Objekten können Sie den primären oder den sekundären Schlüssel verwenden.

    Abrufen des Dienstnamens sowie der Administrator- und Abfrageschlüssel

Für alle an Ihren Dienst gesendeten Anforderungen ist ein API-Schlüssel im Header erforderlich. Ein gültiger Schlüssel stellt anforderungsbasiert eine Vertrauensstellung her zwischen der Anwendung, die die Anforderung sendet, und dem Dienst, der sie verarbeitet.

Einrichten eines REST-Clients

Erstellen von Variablen für Endpunkte und Schlüssel:

Variable Ursprung
admin-key Auf der Seite Schlüssel des Azure KI Search-Diensts.
search-service-name Der Name des Azure KI Search-Diensts. Die URL ist https://{{search-service-name}}.search.windows.net.
storage-connection-string Wählen Sie im Speicherkonto auf der Registerkarte Zugriffsschlüsselkey1>Verbindungszeichenfolge aus.
storage-container-name Der Name des Blobcontainers, der die verschlüsselten Dateien enthält, die indiziert werden sollen.
function-uri In der Azure-Funktion unter Zusammenfassung auf der Hauptseite
function-code In der Azure-Funktion, indem Sie zu App-Schlüssel navigieren, klicken, um den Standardschlüssel anzuzeigen, und den Wert kopieren
api-version Übernehmen Sie 2020-06-30.
datasource-name Übernehmen Sie encrypted-blobs-ds.
index-name Übernehmen Sie encrypted-blobs-idx.
skillset-name Übernehmen Sie encrypted-blobs-ss.
indexer-name Übernehmen Sie encrypted-blobs-ixr.

Überprüfen und Ausführen der einzelnen Anforderungen

Verwenden Sie HTTP-Anforderungen, um die Objekte einer Anreicherungspipeline zu erstellen:

  • PUT-Anforderung zum Erstellen des Index: Dieser Suchindex enthält die Daten, die Azure KI Search verwendet und zurückgibt.

  • POST-Anforderung zum Erstellen der Datenquelle: Diese Datenquelle gibt die Verbindung mit Ihrem Speicherkonto an, das die verschlüsselten Blobdateien enthält.

  • PUT-Anforderung zum Erstellen des Skillsets: Das Skillset gibt die benutzerdefinierte Skilldefinition für die Azure-Funktion an, die die Blobdateidaten entschlüsselt, und ein DocumentExtractionSkill zum Extrahieren des Texts aus den einzelnen Dokumenten nach der Entschlüsselung.

  • PUT-Anforderung zum Erstellen des Indexers: Beim Ausführen des Indexers werden die Blobs abgerufen, das Skillset angewendet und die Ergebnisse indiziert und gespeichert. Diese Anforderung muss zuletzt ausgeführt werden. Der benutzerdefinierte Skill im Skillset ruft die Entschlüsselungslogik auf.

Überwachen der Indizierung

Indizierung und Anreicherung beginnen, sobald Sie die Anforderung für die Indexererstellung übermitteln. Die Indizierung kann je nach der Anzahl der Dokumente in Ihrem Speicherkonto einige Zeit in Anspruch nehmen. Um herauszufinden, ob der Indexer noch läuft, senden Sie die Abfrage Indexerstatus abrufen und überprüfen Sie die Antwort, um zu erfahren, ob der Indexer läuft, oder um Fehler- und Warninformationen anzuzeigen.

Wenn Sie den Free-Tarif verwenden, sollte folgende Meldung angezeigt werden: "Could not extract content or metadata from your document. Truncated extracted text to '32768' characters". Diese Meldung wird angezeigt, da die Blobindizierung im Free-Tarif auf 32.000 extrahierbare Zeichen beschränkt ist. Bei höheren Tarifen wird diese Meldung für das Dataset nicht angezeigt.

Durchsuchen Ihrer Inhalte

Nachdem Sie den Indexer ausgeführt haben, können Sie einige Abfragen ausführen, um zu überprüfen, ob die Daten erfolgreich entschlüsselt und indiziert wurden. Navigieren Sie im Portal zu Ihrem Azure KI-Suche-Dienst, und verwenden Sie den Suchexplorer, um Abfragen für die indizierten Daten auszuführen.

Bereinigen von Ressourcen

Wenn Sie in Ihrem eigenen Abonnement arbeiten, ist es ratsam, nach Abschluss eines Projekts die nicht mehr benötigten Ressourcen zu entfernen. Ressourcen, die weiterhin ausgeführt werden, können Sie Geld kosten. Sie können entweder einzelne Ressourcen oder aber die Ressourcengruppe löschen, um den gesamten Ressourcensatz zu entfernen.

Ressourcen können im Portal über den Link Alle Ressourcen oder Ressourcengruppen im linken Navigationsbereich gesucht und verwaltet werden.

Nächste Schritte

Nachdem Sie die verschlüsselten Dateien nun erfolgreich indiziert haben, können Sie diese Pipeline durchlaufen, indem Sie weitere kognitive Skills hinzufügen. Dadurch können Sie Ihre Daten anreichern und zusätzliche Einblicke in Ihre Daten gewinnen.

Wenn Sie mit doppelt verschlüsselten Daten arbeiten, sollten Sie sich über die in Azure KI-Suche verfügbaren Indexverschlüsselungsfunktionen informieren. Der Indexer benötigt für die Indizierung zwar entschlüsselte Daten. Sobald der Index vorhanden ist, können diese jedoch in einem Suchindex mit einem kundenseitig verwalteten Schlüssel verschlüsselt werden. Dadurch wird sichergestellt, dass ruhende Daten immer verschlüsselt sind. Weitere Informationen finden Sie unter Configure customer-managed keys for data encryption in Azure AI Search (Konfigurieren von kundenseitig verwalteten Schlüsseln für die Datenverschlüsselung in Azure KI Search).