Einrichten einer Indexerverbindung mit Azure Storage mithilfe einer verwalteten Identität

In diesem Artikel wird erläutert, wie Sie eine Indexerverbindung mit einem Azure Storage-Konto mithilfe einer verwalteten Identität einrichten, statt Anmeldeinformationen in der Verbindungszeichenfolge anzugeben.

Sie können eine systemseitig zugewiesene verwaltete Identität oder eine benutzerseitig zugewiesene verwaltete Identität (Vorschau) verwenden. Verwaltete Identitäten sind Microsoft Entra-Anmeldungen und erfordern Azure-Rollenzuweisungen für den Zugriff auf Daten in Azure Storage.

Hinweis

Wenn der Speicher netzwerkgeschützt ist und sich in derselben Region wie Ihr Suchdienst befindet, müssen Sie eine systemseitig zugewiesene verwaltete Identität und eine der folgenden Netzwerkoptionen verwenden: Herstellen einer Verbindung als vertrauenswürdiger Dienst oder Herstellen einer Verbindung mit der Ressourceninstanzregel.

Voraussetzungen

Tipp

Ein Codebeispiel in C# finden Sie unter Index Data Lake Gen2 mit Microsoft Entra ID auf GitHub.

Die Datenquelle erstellen

Erstellen Sie die Datenquelle, und stellen Sie entweder eine systemseitig zugewiesene verwaltete Identität oder eine benutzerseitig zugewiesene verwaltete Identität (Vorschau) bereit.

Systemseitig zugewiesene verwaltete Identität

Die Verwendung einer systemseitig zugewiesenen verwalteten Identität wird von der REST-API, dem Azure-Portal und dem .NET SDK unterstützt.

Wenn Sie eine Verbindung mit einer systemseitig zugewiesenen verwalteten Identität herstellen, besteht die einzige Änderung an der Datenquellendefinition im Format der Eigenschaft „credentials“. Sie geben eine Ressourcen-ID an, der kein Kontoschlüssel und kein Kennwort zugewiesen ist. Die Ressourcen-ID muss die Abonnement-ID des Speicherkontos, die Ressourcengruppe des Speicherkontos und den Speicherkontonamen enthalten.

Hier finden Sie ein Beispiel für das Erstellen einer Datenquelle zum Indizieren von Daten aus einem Speicherkonto mithilfe der REST-API zum Erstellen von Datenquellen und einer Verbindungszeichenfolge für verwaltete Identitäten. Das Format der Verbindungszeichenfolge für verwaltete Identitäten ist für die REST-API, das .NET SDK und das Azure-Portal identisch.

POST https://[service name].search.windows.net/datasources?api-version=2023-11-01
Content-Type: application/json
api-key: [admin key]

{
    "name" : "blob-datasource",
    "type" : "azureblob",
    "credentials" : { 
        "connectionString" : "ResourceId=/subscriptions/[subscription ID]/resourceGroups/[resource group name]/providers/Microsoft.Storage/storageAccounts/[storage account name]/;" 
    },
    "container" : { 
        "name" : "my-container", "query" : "<optional-virtual-directory-name>" 
    }
}   

Benutzerseitig zugewiesene verwaltete Identität (Vorschau)

Die REST-API „2021-04-30-preview“ unterstützt Verbindungen, die auf einer benutzerseitig zugewiesenen verwalteten Identität basieren. Wenn Sie eine Verbindung mit einer benutzerseitig zugewiesenen verwalteten Identität herstellen, erfolgen zwei Änderungen an der Datenquellendefinition:

  • Erstens ist das Format der Eigenschaft „credentials“ eine Ressourcen-ID (RessourceId) ohne Kontoschlüssel oder Kennwort. Die Ressourcen-ID muss die Abonnement-ID des Speicherkontos, die Ressourcengruppe des Speicherkontos und den Speicherkontonamen enthalten. Dies ist das gleiche Format wie bei der systemseitig zugewiesenen verwalteten Identität.

  • Zweitens fügen Sie eine „identity“-Eigenschaft hinzu, die die Sammlung der benutzerseitig zugewiesenen verwalteten Identitäten enthält. Beim Erstellen der Datenquelle sollte nur eine benutzerseitig zugewiesene verwaltete Identität bereitgestellt werden. Legen Sie sie auf den Typ „userAssignedIdentities“ fest.

Hier finden Sie ein Beispiel für das Erstellen eines Indexer-Datenquellenobjekts mithilfe der Vorschauversion der REST-API zum Erstellen oder Aktualisieren einer Datenquelle:

POST https://[service name].search.windows.net/datasources?api-version=2021-04-30-preview
Content-Type: application/json
api-key: [admin key]

{
    "name" : "blob-datasource",
    "type" : "azureblob",
    "credentials" : { 
        "connectionString" : "ResourceId=/subscriptions/[subscription ID]/resourceGroups/[resource group name]/providers/Microsoft.Storage/storageAccounts/[storage account name]/;" 
    },
    "container" : { 
        "name" : "my-container", "query" : "<optional-virtual-directory-name>" 
    },
    "identity" : { 
        "@odata.type": "#Microsoft.Azure.Search.DataUserAssignedIdentity",
        "userAssignedIdentity" : "/subscriptions/[subscription ID]/resourcegroups/[resource group name]/providers/Microsoft.ManagedIdentity/userAssignedIdentities/[managed identity name]" 
    }
}   

Erstellen des Index

Mit dem Index werden die Felder in einem Dokument, Attribute und andere Konstrukte für die Suchoberfläche angegeben.

Hier sehen Sie einen Aufruf der REST-API Index erstellen mit einem durchsuchbaren content-Feld zum Speichern des aus Blobs extrahierten Texts:

POST https://[service name].search.windows.net/indexes?api-version=2023-11-01
Content-Type: application/json
api-key: [admin key]

{
        "name" : "my-target-index",
        "fields": [
        { "name": "id", "type": "Edm.String", "key": true, "searchable": false },
        { "name": "content", "type": "Edm.String", "searchable": true, "filterable": false, "sortable": false, "facetable": false }
        ]
}

Erstellen des Indexers

Ein Indexer verbindet eine Datenquelle mit einem Zielsuchindex und stellt einen Zeitplan zur Automatisierung der Datenaktualisierung bereit. Nachdem Sie den Index und die Datenquelle erstellt haben, können Sie den Indexer erstellen und ausführen. Wenn der Indexer erfolgreich ausgeführt wird, sind die Verbindungssyntax und die Rollenzuweisungen gültig.

Hier sehen Sie einen Aufruf der REST-API „Indexer erstellen“ mit einer Blobindexerdefinition. Der Indexer wird ausgeführt, wenn Sie die Anforderung übermitteln.

POST https://[service name].search.windows.net/indexers?api-version=2023-11-01
Content-Type: application/json
api-key: [admin key]

{
    "name" : "blob-indexer",
    "dataSourceName" : "blob-datasource",
    "targetIndexName" : "my-target-index"
}

Zugreifen auf im Netzwerk gesicherte Daten in Speicherkonten

Azure-Speicherkonten können mithilfe von Firewalls und virtuellen Netzwerken weiter geschützt werden. Wenn Sie Inhalte aus einem Speicherkonto indizieren möchten, das durch eine Firewall oder ein virtuelles Netzwerk geschützt ist, finden Sie weitere Informationen unter Herstellen von Indexerverbindungen mit Azure Storage als vertrauenswürdigem Dienst.

Weitere Informationen