Учебное пособие: индексирование метаданных разрешений из ADLS второго поколения и выполнение запросов с результатами, отфильтрованными по разрешениям

В этом руководстве показано, как индексировать списки управления доступом Azure Data Lake Storage (ADLS) 2-го поколения и области управления доступом на основе ролей (RBAC) в индекс поиска с помощью индексатора.

В нем также показано, как структурировать запрос, который учитывает разрешения доступа пользователей. Результат успешного запроса подтверждает передачу разрешений, которая произошла во время индексирования.

Дополнительные сведения об индексировании списков управления доступом см. в статье Использование индексатора ADLS 2-го поколения для приема метаданных разрешений.

В этом руководстве вы узнаете, как:

  • Настройка области действия RBAC и списков управления доступом (ACL) в источнике adlsgen2 данных
  • Создание индекса поиска Azure AI с полями сведений о разрешениях
  • Создание и запуск индексатора для приема сведений о разрешениях в индекс из источника данных
  • Поиск по индексу, который вы только что создали.

Используйте клиент REST для выполнения этого руководства и последней предварительной версии REST API. В настоящее время на портале Azure нет поддержки индексирования ACL.

Предпосылки

  • Учетная запись Azure с активной подпиской. Создайте учетную запись бесплатно .

  • Проверка подлинности и авторизация идентификатора Microsoft Entra. Службы и приложения должны находиться в одном арендаторе. Назначения ролей используются для каждого аутентифицированного подключения. Пользователи и группы должны находиться в одном клиенте. Для работы у вас должны быть пользователи и группы. Создание арендаторов и субъектов безопасности не входит в область охвата данного руководства.

  • ADLS 2-го поколения с иерархическим пространством имен.

  • Файлы в иерархической структуре папок. В этом руководстве предполагается демонстрация структуры папок ADLS 2-го поколения для файла /Oregon/Portland/Data.txt. В этом руководстве описано назначение ACL для папок и файлов, чтобы выполнить упражнение успешно.

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

  • Visual Studio Code с расширением клиента REST.

Подготовка примера данных

Отправьте примеры данных о государственных парках в контейнер в ADLS 2-го поколения. Имя контейнера должно быть "парки", и оно должно иметь две папки: "Орегон" и "Вашингтон".

Проверка конфигурации службы поиска

Служба поиска должна быть настроена для проверки подлинности и авторизации идентификатора Microsoft Entra. Просмотрите этот контрольный список, чтобы убедиться, что вы подготовлены.

Получение токена идентичности для локального тестирования

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

Выполните следующие шаги, чтобы получить персональный идентификационный токен и настроить Visual Studio Code для подключения к локальным ресурсам Azure.

Настройка разрешений в ADLS 2-го поколения

Рекомендуется использовать Group наборы, а не непосредственно присваивать User наборы.

  1. Предоставьте удостоверению личности службы поиска доступ на чтение контейнера. Индексатор подключается к службе хранилища Azure с учетной записью службы поиска. Служба поиска должна иметь разрешения для чтения данных Blob-объектов хранилища для получения данных.

  2. Предоставьте разрешения на группу или пользователя в иерархии файлов. В иерархии файлов определите все Group и User наборы, назначенные контейнерам, каталогам и файлам.

  3. С помощью портала Azure можно управлять списками управления доступом. В браузере хранилища выберите каталог Oregon и выберите пункт "Управление ACL " в контекстном меню.

  4. Добавьте новые объекты безопасности для пользователей и групп.

  5. Удалите существующие принципы для групп владельцев, владельцев пользователей и других. Эти субъекты не поддерживаются для индексирования ACL в рамках общедоступного предварительного просмотра.

Создание индекса поиска для метаданных разрешений

Создайте индекс , содержащий поля для метаданных содержимого и разрешений.

Обязательно используйте последнюю предварительную версию REST API или пакет пакета SDK Для Azure предварительной версии, который предоставляет эквивалентные функциональные возможности. Свойства фильтра разрешений доступны только в API предварительной версии.

Для демонстрационных целей поле разрешений retrievable включено, чтобы вы могли проверить значения в индексе. В рабочей среде следует отключить, retrievable чтобы избежать утечки конфиденциальной информации.

{
  "name" : "my-adlsgen2-acl-index",
  "fields": [
    {
      "name": "name", "type": "Edm.String",
      "searchable": true, "filterable": false, "retrievable": true
    },
    {
      "name": "description", "type": "Edm.String",
      "searchable": true, "filterable": false, "retrievable": true    
    },
    {
      "name": "location", "type": "Edm.String",
      "searchable": true, "filterable": false, "retrievable": true
    },
    {
      "name": "state", "type": "Edm.String",
      "searchable": true, "filterable": false, "retrievable": true
    },
    {
      "name": "AzureSearch_DocumentKey", "type": "Edm.String",
      "searchable": true, "filterable": false, "retrievable": true, "stored": true,
      "key": true
    },
    { 
      "name": "UserIds", "type": "Collection(Edm.String)", 
      "permissionFilter": "userIds", 
      "searchable": true, "filterable": false, "retrievable": true
    },
    { 
      "name": "GroupIds", "type": "Collection(Edm.String)", 
      "permissionFilter": "groupIds", 
      "searchable": true, "filterable": false, "retrievable": true
    },
    { 
      "name": "RbacScope", "type": "Edm.String", 
      "permissionFilter": "rbacScope", 
      "searchable": true, "filterable": false, "retrievable": true
    }
  ],
  "permissionFilterOption": "enabled"
}

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

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

Требуется indexerPermissionOptionsисточник данных.

В этом руководстве используйте управляемое удостоверение, которое система назначает, для аутентифицированного подключения.

{
    "name" : "my-adlsgen2-acl-datasource",
    "type": "adlsgen2",
    "indexerPermissionOptions": ["userIds", "groupIds", "rbacScope"],
    "credentials": {
    "connectionString": "ResourceId=/subscriptions/<your subscription ID>/resourceGroups/<your resource group name>/providers/Microsoft.Storage/storageAccounts/<your storage account name>/;"
    },
    "container": {
    "name": "parks",
    "query": null
    }
}

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

Конфигурация индексатора для приема разрешений в основном связана с определением fieldMappingsиз метаданных разрешений.

{
  "name" : "my-adlsgen2-acl-indexer",
  "dataSourceName" : "my-adlsgen2-acl-datasource",
  "targetIndexName" : "my-adlsgen2-acl-index",
  "parameters": {
    "batchSize": null,
    "maxFailedItems": 0,
    "maxFailedItemsPerBatch": 0,
    "configuration": {
      "dataToExtract": "contentAndMetadata",
      "parsingMode": "delimitedText",
      "firstLineContainsHeaders": true,
      "delimitedTextDelimiter": ",",
      "delimitedTextHeaders": ""
      },
  "fieldMappings": [
    { "sourceFieldName": "metadata_user_ids", "targetFieldName": "UserIds" },
    { "sourceFieldName": "metadata_group_ids", "targetFieldName": "GroupIds" },
    { "sourceFieldName": "metadata_rbac_scope", "targetFieldName": "RbacScope" }
    ]
  }
}

После создания индексатора и немедленного запуска содержимое файла вместе с сведениями метаданных разрешений индексируются в индекс.

Выполнение запроса для проверки результатов

Теперь, когда документы загружены, вы можете выдавать запросы к ним с помощью Документы — поиск через Post (REST).

Универсальный код ресурса (URI) расширен для включения входных данных запроса, которые задаются с помощью оператора /docs/search. Маркер запроса передается в заголовке запроса. Для получения дополнительной информации см. ACL во время выполнения запроса и применение RBAC.

POST  {{endpoint}}/indexes/stateparks/docs/search?api-version=2025-11-01-preview
Authorization: Bearer {{search-token}}
x-ms-query-source-authorization: {{search-token}}
Content-Type: application/json

{
    "search": "*",
    "select": "name,description,location,GroupIds",
    "orderby": "name asc"
}