Konfigurieren von kundenseitig verwalteten Schlüsseln für die Datenverschlüsselung in Azure AI Search

In Azure AI Search werden ruhende Daten automatisch mit dienstseitig verwalteten Schlüsseln verschlüsselt. Wenn ein weiterer Schutz erforderlich ist, können Sie die Standardverschlüsselung durch eine weitere Verschlüsselungsebene ergänzen, indem Sie Schlüssel verwenden, die Sie in Azure Key Vault erstellen und verwalten.

In diesem Artikel finden Sie die Schritte zum Einrichten der Verschlüsselung mit kundenseitig verwalteten Schlüsseln (Customer-Managed Keys, CMKs) oder BYOK. Die folgenden Punkte müssen Sie beachten:

  • Die CMK-Verschlüsselung wird für einzelne Objekte durchgesetzt. Wenn Sie CMK für Ihren Suchdienst benötigen, legen Sie eine Erzwingungsrichtlinie fest.

  • Die CMK-Verschlüsselung weist eine Abhängigkeit zu Azure Key Vault auf. Sie können Ihre eigenen Verschlüsselungsschlüssel erstellen und in einem Schlüsseltresor speichern oder mit Azure Key Vault-APIs Verschlüsselungsschlüssel generieren.

  • Die CMK-Verschlüsselung kommt bei der Erstellung eines Objekts zum Einsatz. Bereits vorhandene Objekte können nicht verschlüsselt werden. Die CMK-Verschlüsselung tritt immer dann auf, wenn ein Objekt auf dem Datenträger gespeichert wird, entweder ruhende Daten für die langfristige Speicherung oder temporäre Daten für die kurzfristige Speicherung. Mit CMK werden nie unverschlüsselte Daten auf dem Datenträger gespeichert.

Hinweis

Wenn ein Index CMK-verschlüsselt ist, kann nur darauf zugegriffen werden, wenn der Suchdienst Zugriff auf den Schlüssel hat. Wenn der Zugriff auf den Schlüssel widerrufen wird, kann der Index nicht verwendet und der Dienst nicht skaliert werden, bis der Index gelöscht oder der Zugriff auf den Schlüssel wiederhergestellt ist.

CMK-verschlüsselte Objekte

Zu den Objekten, die verschlüsselt werden können, gehören Indizes, Synonymlisten, Indexer, Datenquellen und Skillsets. Weil das Entschlüsseln der Verschlüsselung sehr rechenintensiv ist, werden nur sensible Inhalte verschlüsselt.

Die Verschlüsselung wird für die folgenden Inhalte ausgeführt:

  • Alle Inhalte innerhalb von Indizes und Synonymlisten, einschließlich Beschreibungen

  • Für Indexer, Datenquellen und Skillsets werden nur die Felder verschlüsselt, in denen Verbindungszeichenfolgen, Beschreibungen, Schlüssel und Benutzereingaben gespeichert sind. Skillsets verfügen beispielsweise über Azure KI Services-Schlüssel, und einige Skills akzeptieren Benutzereingaben, z. B. benutzerdefinierte Entitäten. In beiden Fällen werden Schlüssel und Benutzereingaben in Skills verschlüsselt.

Vollständige Mehrfachverschlüsselung

Wenn Sie CMK-Verschlüsselung einführen, verschlüsseln Sie Inhalte zweimal. Für die im vorherigen Abschnitt aufgeführten Objekte und Felder wird der Inhalt zuerst mit Ihrem CMK und dann als Zweites mit dem von Microsoft verwalteten Schlüssel verschlüsselt. Inhalte werden doppelt verschlüsselt auf Datenträgern für die langfristige Speicherung sowie auf temporären Datenträgern, die für die kurzfristige Speicherung verwendet werden.

Durch aktivieren der CMK-Verschlüsselung wird die Indexgröße erhöht und die Abfrageleistung beeinträchtigt. Basierend auf den bisherigen Beobachtungen können Sie mit einem Anstieg der Abfragezeiten um 30–60 Prozent rechnen, wobei die tatsächliche Leistung je nach Indexdefinition und Art der Abfragen variiert. Aufgrund dieser Auswirkungen auf die Leistung wird empfohlen, diese Funktion nur für Indizes zu aktivieren, für die sie wirklich erforderlich ist.

Obwohl die Mehrfachverschlüsselung jetzt in allen Regionen verfügbar ist, wurde die Unterstützung in zwei Phasen eingeführt:

  • Das erste Rollout erfolgte am 1. August 2020 und umfasste die fünf unten aufgeführten Regionen. In den folgenden Regionen erstellte Suchdienste haben CMK für Datenträger unterstützt, aber nicht für temporären Datenträger:

    • USA, Westen 2
    • East US
    • USA Süd Mitte
    • US Government, Virginia
    • US Gov Arizona
  • Beim zweiten Rollout am 13. Mai 2021 wurde die Verschlüsselung für temporäre Datenträger und die erweiterte CMK-Verschlüsselung für alle unterstützten Regionen hinzugefügt.

    Wenn Sie CMK aus einem Dienst verwenden, der während des ersten Rollouts erstellt wurde und sie auch CMK-Verschlüsselung für temporäre Datenträger wünschen, müssen Sie einen neuen Suchdienst in der Region Ihrer Wahl erstellen und Ihre Inhalte erneut bereitstellen.

Voraussetzungen

In diesem Szenario werden die folgenden Tools und Dienste verwendet.

Sie sollten über einen Suchclient verfügen, mit dem das verschlüsselte Objekt erstellt werden kann. In diesem Code verweisen Sie auf einen Key Vault-Schlüssel und Anwendungsregistrierungsinformationen. Bei diesem Code kann es sich um eine funktionierende App oder einen Prototypcode wie das C#-Codebeispiel „DotNetHowToEncryptionUsingCMK“ handeln.

Tipp

Sie können einen REST-Client oder Azure PowerShell verwenden, um Indizes und Synonymzuordnungen zu erstellen, die einen Verschlüsselungsschlüsselparameter enthalten. Sie können auch Azure SDKs verwenden. Das Hinzufügen eines Schlüssels zu Indizes oder Synonymzuordnungen über das Portal wird nicht unterstützt.

Tipps zu Key Vault

Wenn Sie noch nicht mit Azure Key Vault arbeiten, finden Sie in dieser Schnellstartanleitung Informationen zu grundlegenden Aufgaben: Festlegen eines Geheimnisses und Abrufen des Geheimnisses aus Azure Key Vault mithilfe von PowerShell. Im Folgenden finden Sie einige Tipps zur Verwendung von Key Vault:

  • Verwenden Sie beliebig viele Schlüsseltresore. Verwaltete Schlüssel können in verschiedenen Schlüsseltresoren gespeichert werden. Ein Suchdienst kann mehrere verschlüsselte Objekte haben, die jeweils mit anderen kundenseitig verwalteten Verschlüsselungsschlüsseln verschlüsselt werden, die in verschiedenen Schlüsseltresoren gespeichert sind.

  • Aktivieren Sie die Protokollierung in Key Vault, damit Sie die Schlüsselverwendung überwachen können.

  • Halten Sie bei der Routinerotation von Schlüsseltresorschlüsseln und Active Directory-Anwendungsgeheimnissen und der Registrierung unbedingt strikte Verfahren ein. Aktualisieren Sie immer den gesamten verschlüsselten Inhalt, um neue Geheimnisse und Schlüssel zu verwenden, bevor Sie die alten löschen. Wenn Sie diesen Schritt nicht ausführen, können Ihre Inhalte nicht entschlüsselt werden.

1: Aktivieren des Löschschutzes

Vergewissern Sie sich zunächst, dass vorläufiges Löschen und Löschschutz auf dem Schlüsseltresor aktiviert sind. Aufgrund der Art der Verschlüsselung mit kundenseitig verwalteten Schlüsseln können Ihre Daten nicht abgerufen werden, wenn der Azure Key Vault-Schlüssel gelöscht wird.

Um Datenverluste aufgrund versehentlich gelöschter Key Vault-Schlüssel zu vermeiden, müssen im Schlüsseltresor die Optionen „Vorläufiges Löschen“ und „Löschschutz“ aktiviert werden. Vorläufiges Löschen ist standardmäßig aktiviert, sodass nur dann Probleme auftreten, wenn Sie das Feature absichtlich deaktiviert haben. Der Löschschutz ist nicht standardmäßig aktiviert, er ist aber für die Verschlüsselung mit kundenseitig verwalteten Schlüsseln in Azure AI Search erforderlich.

Sie können beide Eigenschaften mithilfe von Azure-Portal-, PowerShell- oder Azure CLI-Befehlen festlegen.

  1. Melden Sie sich beim Azure-Portal an, und öffnen Sie die Übersichtsseite Ihrer Key Vault-Instanz.

  2. Aktivieren Sie auf der Seite Übersicht unter Zusammenfassung die Optionen Vorläufiges Löschen und Purge protection (Löschschutz).

2: Erstellen eines Schlüssels in Key Vault

Überspringen Sie die Schlüsselgenerierung, wenn Sie bereits über einen Schlüssel in Azure Key Vault verfügen, den Sie verwenden möchten, aber notieren Sie den Schlüsselbezeichner. Sie benötigen diese Informationen, wenn Sie ein verschlüsseltes Objekt erstellen.

  1. Melden Sie sich beim Azure-Portal an, und öffnen Sie die Übersichtsseite Ihrer Key Vault-Instanz.

  2. Klicken Sie auf der linken Seite auf Schlüssel und dann auf + Generate/Import (Generieren/Importieren).

  3. Wählen Sie im Bereich Schlüssel erstellen in der Liste mit den Optionen die gewünschte Schlüsselerstellungsmethode aus. Sie können einen neuen Schlüssel generieren, einen vorhandenen Schlüssel hochladen oder Sicherung wiederherstellen verwenden, um eine Sicherung eines Schlüssels auszuwählen.

  4. Geben Sie einen Namen für den Schlüssel ein, und wählen Sie optional andere Schlüsseleigenschaften aus.

  5. Wählen Sie Erstellen aus, um die Bereitstellung zu starten.

  6. Wählen Sie den Schlüssel aus, wählen Sie die aktuelle Version aus, und notieren Sie sich den Schlüsselbezeichner. Er besteht aus dem Schlüsselwert-URI, dem Schlüsselnamen und der Schlüsselversion. Sie benötigen den Bezeichner, um einen verschlüsselten Index in Azure AI Search zu definieren.

    Create a new key vault key

3 – Erstellen eines Sicherheitsprinzipals

Für den Zugriff auf den Verschlüsselungsschlüssel zur Laufzeit haben Sie mehrere Optionen. Der einfachste Ansatz besteht im Abrufen des Schlüssels mithilfe der verwalteten Identität und der Berechtigungen Ihres Suchdiensts. Sie können eine system- oder benutzerverwaltete Identität verwenden. Dies gibt Ihnen die Möglichkeit, die Schritte zur Anwendungsregistrierung und Anwendungsgeheimnisse wegzulassen und die Definition des Verschlüsselungsschlüssels zu vereinfachen.

Alternativ können Sie eine Microsoft Entra-Anwendung erstellen und registrieren. Der Suchdienst stellt die Anwendungs-ID bei Anforderungen bereit.

Der Suchdienst kann über eine verwaltete Identität bei Azure Key Vault authentifiziert werden, ohne dass Anmeldeinformationen (ApplicationID oder ApplicationSecret) im Code gespeichert werden. Der Lebenszyklus dieses Typs einer verwalteten Identität ist an den Lebenszyklus des Suchdiensts gebunden, der nur eine verwaltete Identität enthalten kann. Weitere Informationen zur Funktion verwalteter Identitäten finden Sie unter Was sind verwaltete Identitäten für Azure-Ressourcen?.

  1. Machen Sie Ihren Suchdienst zu einem vertrauenswürdigen Dienst.

    Turn on system assigned managed identity

Folgende Bedingungen hindern Sie am Anwenden dieses Ansatzes:

  • Sie können für Ihren Suchdienst nicht direkt Zugriffsberechtigungen für die Key Vault-Instanz erteilen (z. B. wenn der Suchdienst sich in einem anderen Microsoft Entra ID-Mandanten befindet als die Azure Key Vault-Instanz).

  • Ein einzelner Suchdienst ist erforderlich, um mehrere verschlüsselte Indizes oder Synonymzuordnungen zu hosten, die jeweils einen anderen Schlüssel aus einem anderen Schlüsselspeicher verwenden, wobei jeder Schlüsselspeicher eine andere Identität zur Authentifizierung verwenden muss. Da ein Suchdienst nur eine verwaltete Identität haben kann, schließt eine Anforderung für mehrere Identitäten den vereinfachten Ansatz für Ihr Szenario aus.

4: Erteilen von Berechtigungen

In diesem Schritt erstellen Sie eine Zugriffsrichtlinie in Key Vault. Diese Richtlinie gewährt der registrierten Anwendung die Microsoft Entra ID-Berechtigung zur Verwendung Ihres kundenseitig verwalteten Schlüssels.

Die Zugriffsberechtigungen können jederzeit aufgehoben werden. Nach dem Aufheben können alle Indizes oder Synonymzuordnungen des Suchdiensts, die diese Key Vault-Instanz verwenden, nicht mehr verwendet werden. Wenn Sie die Zugriffsrechte für den Schlüsseltresor zu einem späteren Zeitpunkt wiederherstellen, wird der Zugriff auf Index und Synonym-Map wiederhergestellt. Weitere Informationen finden Sie unter Sicherer Zugriff auf einen Schlüsseltresor.

  1. Öffnen Sie dann im Azure-Portal die Seite Übersicht Ihrer Key Vault-Instanz.

  2. Klicken Sie auf der linken Seite auf die Option Zugriffsrichtlinien. Klicken Sie anschließend auf Erstellen, um den Assistenten zum Erstellen einer Zugriffsrichtlinie zu starten.

    Create an access policy.

  3. Wählen Sie auf der Seite Berechtigungen die Option Abrufen für Schlüsselberechtigungen, Berechtigungen für geheime Schlüssel und Zertifikatberechtigungen aus. Wählen Sie Schlüssel entpacken und Schlüssel umschließen für ** kryptografische Vorgänge für den Schlüssel aus.

    Select permissions in the Permissions page.

  4. Wählen Sie Weiter aus.

  5. Suchen Sie auf der Seite Prinzip das Sicherheitsprinzip, das vom Suchdienst für den Zugriff auf den Verschlüsselungsschlüssel verwendet wird, und wählen Sie es aus. Dabei handelt es sich entweder um die system- oder benutzerverwaltete Identität des Suchdiensts oder um die registrierte Anwendung.

  6. Wählen Sie Weiter und Erstellen aus.

Wichtig

Verschlüsselte Inhalte in Azure AI Search sind zur Verwendung eines bestimmten Azure Key Vault-Schlüssels mit einer bestimmten Version konfiguriert. Wenn Sie den Schlüssel oder die Version ändern, muss der Index oder die Synonymzuordnung zu seiner Verwendung aktualisiert werden, bevor Sie den vorherigen löschen. Andernfalls wird der Index oder die Synonymzuordnung unbrauchbar. Sie können den Inhalt nicht entschlüsseln, wenn der Schlüssel verloren geht.

5: Verschlüsseln von Inhalten

Verschlüsselungsschlüssel werden hinzugefügt, wenn Sie ein Objekt erstellen. Um einen kundenseitig verwalteten Schlüssel einem Index, einer Synonymzuordnung, einem Indexer, einer Datenquelle oder einem Skillset hinzuzufügen, verwenden Sie die Search-REST-API oder ein Azure SDK, um ein Objekt zu erstellen, für das die Verschlüsselung aktiviert ist. Das Portal lässt keine Verschlüsselungseigenschaften bei der Objekterstellung zu.

  1. Rufen Sie die Create-APIs auf, um die Eigenschaft encryptionKey anzugeben:

  2. Fügen Sie das encryptionKey-Konstrukt in die Objektdefinition ein. Diese Eigenschaft ist eine Eigenschaft der ersten Ebene auf der gleichen Ebene wie Name und Beschreibung. Die folgenden REST-Beispiele zeigen die Eigenschaftsplatzierung. Wenn Sie denselben Tresor, Schlüssel und dieselbe Version verwenden, können Sie in jede Objektdefinition dasselbe „encryptionKey“-Konstrukt einfügen.

    Das erste Beispiel zeigt einen „encryptionKey“ für einen Suchdienst, der eine Verbindung mithilfe einer verwalteten Identität herstellt:

    {
      "encryptionKey": {
        "keyVaultUri": "https://demokeyvault.vault.azure.net",
        "keyVaultKeyName": "myEncryptionKey",
        "keyVaultKeyVersion": "eaab6a663d59439ebb95ce2fe7d5f660"
      }
    }
    

    Das zweite Beispiel enthält „accessCredentials“, die erforderlich sind, wenn Sie eine Anwendung in Microsoft Entra ID registriert haben:

    {
      "encryptionKey": {
        "keyVaultUri": "https://demokeyvault.vault.azure.net",
        "keyVaultKeyName": "myEncryptionKey",
        "keyVaultKeyVersion": "eaab6a663d59439ebb95ce2fe7d5f660",
        "accessCredentials": {
          "applicationId": "00000000-0000-0000-0000-000000000000",
          "applicationSecret": "myApplicationSecret"
        }
      }
    }
    

Nachdem Sie das verschlüsselte Objekt im Suchdienst erstellt haben, können Sie es wie jedes andere Objekt seines Typs verwenden. Die Verschlüsselung ist für Benutzer und Entwickler transparent.

Hinweis

Keine dieser Key Vault-Details gelten als geheim. Diese Angaben können durch Navigieren zu der entsprechenden Azure Key Vault-Seite im Azure-Portal einfach abgerufen werden.

6. Einrichten einer Richtlinie

Azure-Richtlinien unterstützen Sie bei der Durchsetzung von Organisationsstandards und der Bewertung der Compliance im großen Stil. Azure AI Search verfügt über eine optionale integrierte Richtlinie für die dienstweite CMK-Erzwingung.

In diesem Abschnitt legen Sie die Richtlinie fest, die einen CMK-Standard für Ihren Suchdienst definiert. Anschließend richten Sie Ihren Suchdienst ein, um diese Richtlinie zu erzwingen.

  1. Navigieren Sie zur integrierten Richtlinie in Ihrem Webbrowser. Wählen Sie Zuweisen aus.

    Screenshot of assigning built-in CMK policy.

  2. Richten Sie den Richtlinienbereich ein. Deaktivieren Sie im Abschnitt Parameter die Option Nur Parameter anzeigen, und legen Sie Effekt auf Verweigern fest.

    Bei der Bewertung der Anfrage wird eine Anfrage, die einer Verweigerungsdefinition entspricht, als nicht konform gekennzeichnet. Wenn der Standard für Ihren Dienst die CMK-Verschlüsselung ist, bedeutet „deny“, dass Anforderungen, die nicht die CMK-Verschlüsselung angeben, nicht konform sind.

    Screenshot of changing built-in CMK policy effect to deny.

  3. Schließen Sie die Erstellung der Richtlinie ab.

  4. Rufen Sie Dienste – API aktivieren auf, um die Durchsetzung von CMK-Richtlinien auf der Dienstebene zu aktivieren.

PATCH https://management.azure.com/subscriptions/[subscriptionId]/resourceGroups/[resourceGroupName]/providers/Microsoft.Search/searchServices/[serviceName]?api-version=2022-11-01

{
    "properties": {
        "encryptionWithCmk": {
            "enforcement": "Enabled",
            "encryptionComplianceStatus": "Compliant"
        }
    }
}

REST-Beispiele

In diesem Abschnitt wird der JSON-Code für mehrere Objekte angezeigt, damit Sie sehen können, wo „encryptionKey“ in einer Objektdefinition zu finden ist.

Indexverschlüsselung

Die Angaben zum Erstellen eines neuen Index über die REST-API finden Sie unter Erstellen eines Index (REST-API). Der einzige Unterschied besteht darin, dass die Angaben des Verschlüsselungsschlüssels als Teil der Indexdefinition angegeben werden:

{
 "name": "hotels",
 "fields": [
  {"name": "HotelId", "type": "Edm.String", "key": true, "filterable": true},
  {"name": "HotelName", "type": "Edm.String", "searchable": true, "filterable": false, "sortable": true, "facetable": false},
  {"name": "Description", "type": "Edm.String", "searchable": true, "filterable": false, "sortable": false, "facetable": false, "analyzer": "en.lucene"},
  {"name": "Description_fr", "type": "Edm.String", "searchable": true, "filterable": false, "sortable": false, "facetable": false, "analyzer": "fr.lucene"},
  {"name": "Category", "type": "Edm.String", "searchable": true, "filterable": true, "sortable": true, "facetable": true},
  {"name": "Tags", "type": "Collection(Edm.String)", "searchable": true, "filterable": true, "sortable": false, "facetable": true},
  {"name": "ParkingIncluded", "type": "Edm.Boolean", "filterable": true, "sortable": true, "facetable": true},
  {"name": "LastRenovationDate", "type": "Edm.DateTimeOffset", "filterable": true, "sortable": true, "facetable": true},
  {"name": "Rating", "type": "Edm.Double", "filterable": true, "sortable": true, "facetable": true},
  {"name": "Location", "type": "Edm.GeographyPoint", "filterable": true, "sortable": true}
 ],
  "encryptionKey": {
    "keyVaultUri": "https://demokeyvault.vault.azure.net",
    "keyVaultKeyName": "myEncryptionKey",
    "keyVaultKeyVersion": "eaab6a663d59439ebb95ce2fe7d5f660",
    "accessCredentials": {
      "applicationId": "00000000-0000-0000-0000-000000000000",
      "applicationSecret": "myApplicationSecret"
    }
  }
}

Dann können Sie die Anforderung zur Indexerstellung senden und anschließend den Index normal verwenden.

Verschlüsselung einer Synonymzuordnung

Erstellen Sie eine verschlüsselte Synonymzuordnung mit der Azure AI Search-REST-API „Synonymzuordnung“. Verwenden Sie die „encryptionKey“-Eigenschaft, um den zu verwendenden Verschlüsselungsschlüssel anzugeben.

{
  "name" : "synonymmap1",
  "format" : "solr",
  "synonyms" : "United States, United States of America, USA\n
  Washington, Wash. => WA",
  "encryptionKey": {
    "keyVaultUri": "https://demokeyvault.vault.azure.net",
    "keyVaultKeyName": "myEncryptionKey",
    "keyVaultKeyVersion": "eaab6a663d59439ebb95ce2fe7d5f660",
    "accessCredentials": {
      "applicationId": "00000000-0000-0000-0000-000000000000",
      "applicationSecret": "myApplicationSecret"
    }
  }
}

Dann können Sie die Anforderung zum Erstellen der Synonymzuordnung senden und anschließend die Synonymzuordnung normal verwenden.

Datenquellenverschlüsselung

Erstellen Sie eine verschlüsselte Datenquelle mit der Azure Cognitive Search-REST-API zum Erstellen einer Datenquelle. Verwenden Sie die „encryptionKey“-Eigenschaft, um den zu verwendenden Verschlüsselungsschlüssel anzugeben.

{
  "name" : "datasource1",
  "type" : "azureblob",
  "credentials" :
  { "connectionString" : "DefaultEndpointsProtocol=https;AccountName=datasource;AccountKey=accountkey;EndpointSuffix=core.windows.net"
  },
  "container" : { "name" : "containername" },
  "encryptionKey": {
    "keyVaultUri": "https://demokeyvault.vault.azure.net",
    "keyVaultKeyName": "myEncryptionKey",
    "keyVaultKeyVersion": "eaab6a663d59439ebb95ce2fe7d5f660",
    "accessCredentials": {
      "applicationId": "00000000-0000-0000-0000-000000000000",
      "applicationSecret": "myApplicationSecret"
    }
  }
}

Dann können Sie die Anforderung zum Erstellen der Datenquelle senden und anschließend die Datenquelle normal verwenden.

Skillsetverschlüsselung

Erstellen Sie ein verschlüsseltes Skillset mit der Azure Cognitive Search-REST-API zum Erstellen eines Skillsets. Verwenden Sie die „encryptionKey“-Eigenschaft, um den zu verwendenden Verschlüsselungsschlüssel anzugeben.

{
    "name": "skillset1",
    "skills":  [ omitted for brevity ],
    "cognitiveServices": { omitted for brevity },
      "knowledgeStore":  { omitted for brevity  },
    "encryptionKey": (optional) { 
        "keyVaultKeyName": "myEncryptionKey",
        "keyVaultKeyVersion": "eaab6a663d59439ebb95ce2fe7d5f660",
        "keyVaultUri": "https://demokeyvault.vault.azure.net",
        "accessCredentials": {
            "applicationId": "00000000-0000-0000-0000-000000000000",
            "applicationSecret": "myApplicationSecret"}
    }
}

Dann können Sie die Anforderung zum Erstellen des Skillsets senden und anschließend das Skillset normal verwenden.

Indexerverschlüsselung

Erstellen Sie einen verschlüsselten Indexer mit der Azure Cognitive Search-REST-API zum Erstellen eines Indexers. Verwenden Sie die „encryptionKey“-Eigenschaft, um den zu verwendenden Verschlüsselungsschlüssel anzugeben.

{
  "name": "indexer1",
  "dataSourceName": "datasource1",
  "skillsetName": "skillset1",
  "parameters": {
      "configuration": {
          "imageAction": "generateNormalizedImages"
      }
  },
  "encryptionKey": {
    "keyVaultUri": "https://demokeyvault.vault.azure.net",
    "keyVaultKeyName": "myEncryptionKey",
    "keyVaultKeyVersion": "eaab6a663d59439ebb95ce2fe7d5f660",
    "accessCredentials": {
      "applicationId": "00000000-0000-0000-0000-000000000000",
      "applicationSecret": "myApplicationSecret"
    }
  }
}

Dann können Sie die Anforderung zum Erstellen des Indexers senden und anschließend den Indexer normal verwenden.

Wichtig

Obwohl die „encryptionKey“-Eigenschaft vorhandenen Suchindizes oder Synonymzuordnungen nicht hinzugefügt werden kann, kann sie aktualisiert werden, indem unterschiedliche Werte für eines der drei Key Vault-Details angegeben werden (z. B. Aktualisierung der Schlüsselversion). Wenn Sie einen neuen Key Vault-Schlüssel oder eine neue Schlüsselversion angeben, müssen alle Suchindizes oder Synonymzuordnungen, die den Schlüssel verwenden, zunächst für die Verwendung des neuen Schlüssels oder der neuen Version geändert werden, bevor der vorherige Schlüssel bzw. die vorherige Version gelöscht wird. Andernfalls kann der Index oder die Synonymzuordnung nicht mehr verwendet werden, da Sie die Inhalte nicht mehr entschlüsseln können, wenn der Schlüsselzugriff verloren geht. Allerdings kann durch Wiederherstellen der Key Vault-Zugriffsberechtigungen zu einem späteren Zeitpunkt der Zugriff auf die Inhalte wiederhergestellt werden.

Arbeiten mit verschlüsselten Inhalten

Bei der Verschlüsselung mit kundenseitig verwalteten Schlüsseln treten Wartezeiten bei der Indizierung und bei Abfragen aufgrund des zusätzlichen Aufwands für Verschlüsselung und Entschlüsselung auf. Die Verschlüsselungsaktivität wird von Azure AI Search nicht protokolliert, Sie können jedoch den Schlüsselzugriff über die Key Vault-Protokollierung überwachen. Es wird empfohlen, die Protokollierung schon bei der Konfiguration des Schlüsseltresors zu aktivieren.

Es wird erwartet, dass im Lauf der Zeit eine Schlüsselrotation erfolgt. Wenn Sie Schlüssel rotieren, ist es wichtig, dabei die folgende Sequenz einzuhalten:

  1. Ermitteln Sie den Schlüssel, der von einem Index oder einer Synonymzuordnung verwendet wird.
  2. Erstellen Sie einen neuen Schlüssel im Schlüsseltresor, aber lassen Sie den ursprünglichen Schlüssel verfügbar.
  3. Aktualisieren Sie die Eigenschaften der encryptionKey-Eigenschaft für einen Index oder eine Synonymzuordnung, damit die neuen Werte verwendet werden. Nur Objekte, die ursprünglich mit dieser Eigenschaft erstellt wurden, können aktualisiert werden, um einen anderen Wert zu verwenden.
  4. Deaktivieren oder löschen Sie den vorherigen Schlüssel aus dem Schlüsseltresor. Überwachen Sie den Schlüsselzugriff, um sicherzustellen, dass der neue Schlüssel verwendet wird.

Aus Leistungsgründen speichert der Suchdienst den Schlüssel für mehrere Stunden zwischen. Wenn Sie den Schlüssel deaktivieren oder löschen, ohne einen neuen bereitzustellen, funktionieren Abfragen weiter, bis der Cache abläuft. Sobald der Suchdienst Inhalte jedoch nicht mehr entschlüsseln kann, erhalten Sie die Meldung Zugriff verboten. Der Abfrageschlüssel wurde möglicherweise widerrufen. Versuchen Sie es noch mal.“

Nächste Schritte

Wenn Sie nicht mit der Azure-Sicherheitsarchitektur vertraut sind, finden Sie entsprechende Informationen in der Dokumentation zur Azure-Sicherheit und insbesondere in folgendem Artikel: