Настройка подключения индексатора для служба хранилища Azure с помощью управляемого удостоверения

В этой статье объясняется, как настроить подключение индексатора к учетной записи служба хранилища Azure с помощью управляемого удостоверения вместо предоставления учетных данных в строка подключения.

Вы можете использовать управляемое удостоверение, назначаемое системой, или управляемое удостоверение, назначенное пользователем (предварительная версия). Управляемые удостоверения — это имена входа Microsoft Entra и требуют назначения ролей Azure для доступа к данным в служба хранилища Azure.

Примечание.

Если хранилище защищено сетью и в том же регионе, что и служба поиска, необходимо использовать управляемое удостоверение, назначаемое системой, и одно из следующих сетевых параметров: подключение в качестве доверенной службы или подключение с помощью правила экземпляра ресурса.

Необходимые компоненты

  • Создайте управляемое удостоверение для службы поиска.

  • Назначьте роль в служба хранилища Azure:

    • Выберите служба хранилища средство чтения данных BLOB-объектов для доступа к данным в служба хранилища BLOB-объектов и ADLS 2-го поколения.

    • Выберите читатель и данные для доступа на чтение данных в таблицах служба хранилища и служба хранилища файлов.

  • Вы должны ознакомиться с понятиями индексатора и конфигурацией.

Совет

Пример кода в C#см. в разделе Index Data Lake 2-го поколения с помощью идентификатора Microsoft Entra на GitHub.

Создание источника данных

Создайте источник данных и укажите управляемое удостоверение, назначаемое системой, или управляемое удостоверение, назначаемое пользователем (предварительная версия).

Управляемое удостоверение, назначаемое системой

REST API, портал Azure и пакет SDK для .NET поддерживают использованием управляемого удостоверения, назначаемого системой.

При подключении к управляемому удостоверению, назначаемого системой, единственное изменение определения источника данных — это формат свойства credentials. Укажите ResourceId, не имеющий ключа учетной записи или пароля. ResourceId должен содержать идентификатор подписки для учетной записи хранения, группу ресурсов для учетной записи хранения и имя учетной записи хранения.

Ниже приведен пример создания источника данных для индексирования данных из учетной записи хранения с помощью REST API создания источника данных и управляемого удостоверения строка подключения. Формат строки подключения с управляемым удостоверением одинаков для REST API, пакета SDK для .NET и портала Azure.

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

Управляемое удостоверение, назначаемое пользователем (предварительная версия)

REST API 2021-04-30-preview поддерживает подключения на основе управляемого удостоверения, назначаемого пользователем. При подключении к управляемому удостоверению, назначаемого пользователем, существует два изменения определения источника данных:

  • Во-первых, формат свойства "credentials" — это ResourceId, который не имеет ключа учетной записи или пароля. ResourceId должен содержать идентификатор подписки для учетной записи хранения, группу ресурсов для учетной записи хранения и имя учетной записи хранения. Этот формат совпадает с управляемым удостоверением, назначенным системой.

  • Во-вторых, добавьте свойство identity, содержащее коллекцию управляемых удостоверений, назначаемых пользователем. При создании источника данных должно быть предоставлено только одно управляемое удостоверение, назначаемое пользователем. Задайте для него тип userAssignedIdentities.

Ниже приведен пример создания объекта источника данных индексатора с помощью REST API создания или обновления источника данных предварительной версии:

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

Создание индекса

Индекс задает поля в документе, атрибуты, и другие компоненты, которые определяют процедуру поиска.

Ниже приведен вызов REST API создания индекса с content полем поиска для хранения текста, извлеченного из БОЛЬШИХ двоичных объектов:

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

Создание индексатора

Индексатор соединяет источник данных с целевым индексом поиска и предоставляет расписание для автоматизации обновления данных. После создания индекса и источника данных можно создать и запустить индексатор. Если индексатор успешно выполнен, синтаксис подключения и назначения ролей допустимы.

Ниже приведен вызов REST API индексатора с определением индексатора BLOB-объектов. Индексатор запускается при отправке запроса.

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

Доступ к защищенным сетям данным в учетных записях хранения

Учетные записи хранения Azure можно дополнительно защитить с помощью брандмауэров и виртуальных сетей. Если вы хотите индексировать содержимое из учетной записи хранения, защищенной с помощью брандмауэра или виртуальной сети, см. статью "Создание подключений индексатора к служба хранилища Azure в качестве доверенной службы".

См. также