Konfigurowanie połączenia indeksatora z usługą Azure Storage przy użyciu tożsamości zarządzanej

W tym artykule wyjaśniono, jak skonfigurować połączenie indeksatora z kontem usługi Azure Storage przy użyciu tożsamości zarządzanej zamiast podawania poświadczeń w parametry połączenia.

Można użyć tożsamości zarządzanej przypisanej przez system lub tożsamości zarządzanej przypisanej przez użytkownika (wersja zapoznawcza). Tożsamości zarządzane to identyfikatory logowania firmy Microsoft Entra i wymagają przypisań ról platformy Azure w celu uzyskania dostępu do danych w usłudze Azure Storage.

Uwaga

Jeśli magazyn jest chroniony przez sieć i w tym samym regionie co usługa wyszukiwania, musisz użyć tożsamości zarządzanej przypisanej przez system i jednej z następujących opcji sieciowych: połączyć się jako zaufaną usługę lub nawiązać połączenie przy użyciu reguły wystąpienia zasobu.

Wymagania wstępne

  • Utwórz tożsamość zarządzaną dla usługi wyszukiwania.

  • Przypisywanie roli w usłudze Azure Storage:

    • Wybierz pozycję Czytelnik danych obiektu blob usługi Storage, aby uzyskać dostęp do odczytu danych w usłudze Blob Storage i usłudze ADLS Gen2.

    • Wybierz pozycję Czytelnik i Dane , aby uzyskać dostęp do odczytu danych w usługach Table Storage i File Storage.

  • Należy zapoznać się z pojęciami i konfiguracją indeksatora.

Napiwek

Aby zapoznać się z przykładem kodu w języku C#, zobacz Index Data Lake Gen2 using Microsoft Entra ID on GitHub (Indeksowanie usługi Data Lake Gen2 przy użyciu identyfikatora Entra firmy Microsoft w witrynie GitHub).

Utwórz źródło danych

Utwórz źródło danych i podaj tożsamość zarządzaną przypisaną przez system lub tożsamość zarządzaną przypisaną przez użytkownika (wersja zapoznawcza).

Tożsamość zarządzana przypisana przez system

Interfejs API REST, witryna Azure Portal i zestaw SDK platformy .NET obsługują tożsamość zarządzaną przypisaną przez system.

Podczas nawiązywania połączenia z tożsamością zarządzaną przypisaną przez system jedyną zmianą definicji źródła danych jest format właściwości "credentials". Podaj identyfikator ResourceId, który nie ma klucza konta ani hasła. Identyfikator zasobu musi zawierać identyfikator subskrypcji konta magazynu, grupę zasobów konta magazynu i nazwę konta magazynu.

Oto przykład tworzenia źródła danych w celu indeksowania danych z konta magazynu przy użyciu interfejsu API REST tworzenia źródła danych i tożsamości zarządzanej parametry połączenia. Format tożsamości zarządzanej parametry połączenia jest taki sam dla interfejsu API REST, zestawu .NET SDK i witryny Azure Portal.

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>" 
    }
}   

Tożsamość zarządzana przypisana przez użytkownika (wersja zapoznawcza)

Interfejs API REST 2021-04-30-preview obsługuje połączenia oparte na tożsamości zarządzanej przypisanej przez użytkownika. Podczas nawiązywania połączenia z tożsamością zarządzaną przypisaną przez użytkownika istnieją dwie zmiany definicji źródła danych:

  • Najpierw format właściwości "credentials" jest identyfikatorem ResourceId, który nie ma klucza konta ani hasła. Identyfikator zasobu musi zawierać identyfikator subskrypcji konta magazynu, grupę zasobów konta magazynu i nazwę konta magazynu. Ten format jest taki sam jak tożsamość zarządzana przypisana przez system.

  • Po drugie dodaj właściwość "identity", która zawiera kolekcję tożsamości zarządzanych przypisanych przez użytkownika. Podczas tworzenia źródła danych należy podać tylko jedną tożsamość zarządzaną przypisaną przez użytkownika. Ustaw go na wartość "userAssignedIdentities".

Oto przykład tworzenia obiektu źródła danych indeksatora przy użyciu interfejsu API REST tworzenia lub aktualizowania źródła danych w wersji zapoznawczej:

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]" 
    }
}   

Tworzenie indeksu

Indeks określa pola w dokumencie, atrybutach i innych konstrukcjach, które kształtuje środowisko wyszukiwania.

Oto wywołanie interfejsu API REST tworzenia indeksu z polem z możliwością content wyszukiwania do przechowywania tekstu wyodrębnionego z obiektów blob:

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 }
        ]
}

Tworzenie indeksatora

Indeksator łączy źródło danych z docelowym indeksem wyszukiwania i udostępnia harmonogram automatyzowania odświeżania danych. Po utworzeniu indeksu i źródła danych możesz utworzyć i uruchomić indeksator. Jeśli indeksator zakończy się pomyślnie, składnia połączenia i przypisania ról są prawidłowe.

Oto wywołanie interfejsu API REST tworzenia indeksatora z definicją indeksatora obiektów blob. Indeksator jest uruchamiany podczas przesyłania żądania.

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"
}

Uzyskiwanie dostępu do danych zabezpieczonych przez sieć na kontach magazynu

Konta usługi Azure Storage można dodatkowo zabezpieczyć za pomocą zapór i sieci wirtualnych. Jeśli chcesz indeksować zawartość z konta magazynu zabezpieczonego przy użyciu zapory lub sieci wirtualnej, zobacz Make indexer connections to Azure Storage as a trusted service (Tworzenie połączeń indeksatora z usługą Azure Storage jako zaufaną usługą).

Zobacz też