Поделиться через


Подключение к поиску ИИ Azure с помощью ролей

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

В службе "Поиск по искусственному интеллекту Azure" можно назначить роли Azure для:

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

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

Доступ на основе ролей не обязателен, но настоятельно рекомендуется. Альтернативой является проверка подлинности на основе ключей, которая является стандартной.

Предпосылки

Назначение ролей на портале Azure

Следующие шаги применимы ко всем назначениям ролей.

  1. Войдите на портал Azure.

  2. Перейдите к своей службе поиска

  3. Включите доступ на основе ролей.

  4. Выберите элемент управления доступом (IAM) в левой области.

  5. Нажмите кнопку +Добавить>назначение роли , чтобы запустить мастер добавления назначения ролей .

    Снимок экрана: страница управления доступом на портале Azure.

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

  7. На вкладке "Участники" выберите учетные данные пользователя или группы Microsoft Entra. Если вы настраиваете разрешения для другой службы Azure, выберите системное или управляемое пользователем удостоверение.

  8. На вкладке Проверка и назначение выберите пункт Проверка и назначение, чтобы назначить роль.

Роли — это коллекция разрешений для определенных операций, влияющих на уровни данных или плоскости управления.

Плоскость данных относится к операциям с конечной точкой службы поиска, например индексированием или запросами, или любой другой операцией, указанной в REST API службы поиска или эквивалентными клиентскими библиотеками azure SDK.

Контрольная плоскость относится к управлению ресурсами Azure, например, созданию или настройке службы поиска.

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

Должность Самолет Описание
владелец Управление и данные Полный доступ к плоскости управления ресурса поиска, включая возможность назначения ролей Azure. Только роль владельца может включать или отключать параметры проверки подлинности или управлять ролями для других пользователей. Администраторы подписки по умолчанию являются членами.

На плоскости данных эта роль имеет тот же доступ, что и роль участника службы поиска. Он включает доступ ко всем действиям уровня данных, кроме возможности запрашивать документы.
Сотрудник Управление и данные Тот же уровень доступа к плоскости управления, что и у владельца, но без возможности назначения ролей или изменения параметров аутентификации.

На плоскости данных эта роль имеет тот же доступ, что и роль участника службы поиска. Он включает доступ ко всем действиям плоскости данных, кроме возможности запрашивать или индексировать документы.
Читалка Управление и данные Доступ для чтения ко всей службе, включая метрики поиска, метрики содержимого (используемое хранилище, количество объектов), а также определения объектов ресурсов данных (индексы, индексаторы и т. д.). Однако он не может считывать ключи API или читать содержимое в индексах.
Участник службы поиска Управление и данные Доступ на чтение и запись к определениям объектов (индексы, псевдонимы, карты синонимов, индексаторы, источники данных и наборы навыков). Эта роль предназначена для разработчиков, создающих объекты, а также для администраторов, которые управляют службой поиска и его объектами, но без доступа к содержимому индекса. Эта роль позволяет создавать, удалять и перечислять индексы, получать определения индексов, получать сведения о службе (статистика и квоты), тест-анализаторы, создавать карты синонимов, индексаторы, источники данных и наборы навыков. См Microsoft.Search/searchServices/* . список разрешений.
Участник данных индекса поиска Данные Доступ на чтение и запись к содержимому в индексах. Эта роль предназначена для разработчиков или владельцев индексов, которые должны импортировать, обновить или запросить коллекцию документов индекса. Эта роль не поддерживает создание или управление индексами. По умолчанию эта роль используется для всех индексов в службе поиска. Чтобы сузить область, см. «Предоставить доступ к одному индексу».
Средство чтения индексов поиска Данные Доступ только для чтения для выполнения запросов по поисковым индексам. Эта роль предназначена для приложений и пользователей, выполняющих запросы. Эта роль не поддерживает доступ на чтение к определениям объектов. Например, невозможно прочитать определение индекса поиска или получить статистику службы поиска. По умолчанию эта роль используется для всех индексов в службе поиска. Чтобы сузить область, см. «Предоставить доступ к одному индексу».

Объедините эти роли, чтобы получить достаточные разрешения для вашего варианта использования.

Замечание

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

Сводка

Разрешения Средство чтения данных индекса поиска Участник данных поискового индекса Участник службы поиска Владелец или участник Читатель
Просмотр ресурса в портале Azure
Просмотр свойств ресурса, метрик и конечной точки
Перечислить все объекты на ресурсе
Доступ к квотам и статистике услуг
Чтение и запрос индекса
Отправка данных для индексирования 1
Создание или изменение индексов и псевдонимов
Создание, изменение и запуск индексаторов, источников данных и наборов навыков
Создание или изменение карт синонимов
Создание или изменение сеансов отладки
Создание развертываний или управление ими
Создание или настройка ресурсов поиска ИИ Azure
Просмотр и копирование и повторное создание ключей в разделе "Ключи"
Просмотр ролей, политик и определений
Настройка параметров проверки подлинности
Настройка частных подключений
Настройка безопасности сети

1 На портале Azure владелец или участник могут запускать мастеры импорта данных, которые создают и загружают индексы, даже если они не могут отправлять документы в другие клиенты. Подключения к данным в мастере создаются самой службой поиска, а не отдельными пользователями. Волшебники имеют необходимое Microsoft.Search/searchServices/indexes/documents/* разрешение для выполнения этой задачи.

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

Назначьте роли

В этом разделе назначьте роли для:

  • Администрирование службы
  • Разработка или предоставление права записи в службу поиска
  • Доступ только для чтения для запросов

Назначьте роли для администрирования сервиса

Администратор службы может создавать и настраивать службу поиска, а также выполнять все операции уровня управления, описанные в REST API управления или эквивалентных клиентских библиотеках. Если вы являетесь владельцем или участником, вы также можете выполнять большинство задач REST API поиска плоскости данных на портале Azure.

Должность Идентификатор
Owner 8e3af657-a8ff-443c-a75c-2fe8c4bcb635
Contributor b24988ac-6180-42a0-ab88-20f7382d2d2c
Reader acdd72a7-3385-48ef-bd42-f606fba81ae7
  1. Войдите на портал Azure.

  2. Назначьте следующие роли:

    • Владелец (полный доступ ко всем операциям плоскости данных и плоскости управления, за исключением разрешений запроса)
    • Участник (тот же, что и владелец, за исключением разрешений на назначение ролей)
    • Читатель (приемлем для мониторинга и просмотра метрик)

Назначение ролей для разработки

Назначения ролей являются глобальными в службе поиска. Чтобы ограничить разрешения на один индекс, используйте PowerShell или Azure CLI для создания настраиваемой роли.

Задача Должность Идентификатор
Создание объектов или управление ими Search Service Contributor 7ca78c08-252a-4471-8644-bb5ff32d4ba0
Загрузка документов, выполнение заданий индексирования Search Index Data Contributor 8ebe5a00-799e-43f5-93ac-243d3dce84a7
Запрос к индексу Search Index Data Reader 1407120a-92aa-4202-b7e9-c0e197c71c8f

Другое сочетание ролей, предоставляющих полный доступ, — Соавтор или Владелец, а также Читатель данных индекса поиска.

Это важно

Если вы настраиваете доступ на основе ролей для службы или индекса, а также предоставляете ключ API для запроса, служба поиска использует ключ API для проверки подлинности.

  1. Войдите на портал Azure.

  2. Назначьте следующие роли:

    • Участник службы поиска (операции создания-чтения-обновления-удаления для индексов, индексаторов, наборов навыков и других объектов верхнего уровня)
    • Участник данных индекса поиска (загрузка документов и выполнение заданий индексирования)
    • Средство чтения данных поискового индекса (запрос индекса)

Назначайте роли для запросов с доступом только для чтения.

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

Должность Идентификатор
Search Index Data Reader с программой PowerShell 1407120a-92aa-4202-b7e9-c0e197c71c8f

Это очень конкретная роль. Он предоставляет доступ GET или POST к коллекции документов индекса поиска для поиска, автозаполнения и предложений. Он не поддерживает операции GET или LIST в индексе или других объектах верхнего уровня или статистике службы GET.

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

  1. Войдите на портал Azure.

  2. Назначьте роль читателя индексов поиска .

Тестирование назначений ролей

Используйте клиент для тестирования назначений ролей. Помните, что роли являются накопительными и унаследованными на уровне подписки или группы ресурсов и не могут быть удалены или запрещены на уровне ресурса (поисковой службы).

Настройте приложение для бессерверных подключений и укажите назначения ролей перед тестированием.

  1. Войдите на портал Azure.

  2. Перейдите к своей службе поиска

  3. На странице "Обзор" выберите вкладку "Индексы" :

    • Участники службы поиска могут просматривать и создавать любой объект, но не могут загружать документы или запрашивать индекс. Чтобы проверить разрешения, создайте индекс поиска.

    • Участники индекса поиска могут загружать документы. На портале Azure нет параметра загрузки документов за пределами мастера импорта данных, но вы можете сбросить и запустить индексатор , чтобы подтвердить разрешения на загрузку документов.

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

Тестирование от имени текущего пользователя

Если вы уже являетесь участником или владельцем службы поиска, вы можете использовать токен-предъявитель для подтверждения вашей личности при аутентификации через Azure AI Search.

  1. Получите маркер носителя для текущего пользователя с помощью Azure CLI:

    az account get-access-token --scope https://search.azure.com/.default
    

    Или с помощью PowerShell:

    Get-AzAccessToken -ResourceUrl https://search.azure.com
    
  2. Вставьте эти переменные в новый текстовый файл в Visual Studio Code.

    @baseUrl = PASTE-YOUR-SEARCH-SERVICE-URL-HERE
    @index-name = PASTE-YOUR-INDEX-NAME-HERE
    @token = PASTE-YOUR-TOKEN-HERE
    
  3. Вставьте и отправьте запрос для подтверждения доступа. Вот пример запроса к индексу hotels-quickstart

    POST https://{{baseUrl}}/indexes/{{index-name}}/docs/search?api-version=2024-07-01 HTTP/1.1
      Content-type: application/json
      Authorization: Bearer {{token}}
    
        {
             "queryType": "simple",
             "search": "motel",
             "filter": "",
             "select": "HotelName,Description,Category,Tags",
             "count": true
         }
    

Предоставление доступа к одному индексу

В некоторых сценариях может потребоваться ограничить доступ приложения к одному ресурсу, например индексу.

Портал Azure в настоящее время не поддерживает назначения ролей на этом уровне детализации, но его можно сделать с помощью PowerShell или Azure CLI.

В PowerShell используйте New-AzRoleAssignment, указав имя пользователя или группы Azure и область назначения.

  1. Загрузите модули Azure и AzureAD, затем подключитесь к учетной записи Azure.

    Import-Module -Name Az
    Import-Module -Name AzureAD
    Connect-AzAccount
    
  2. Добавьте назначение роли в отдельный индекс:

    New-AzRoleAssignment -ObjectId <objectId> `
        -RoleDefinitionName "Search Index Data Contributor" `
        -Scope  "/subscriptions/<subscription>/resourceGroups/<resource-group>/providers/Microsoft.Search/searchServices/<search-service>/indexes/<index-name>"
    

Создание настраиваемой роли

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

В этом примере клонируется модуль чтения данных индекса поиска, а затем добавляется возможность выводить индексы по имени. Как правило, перечисление индексов в службе поиска считается административным правом.

Эти действия являются производными от создания или обновления пользовательских ролей Azure с помощью портала Azure. Клонирование из существующей роли поддерживается на странице службы поиска.

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

  1. На портале Azure перейдите в службу поиска.

  2. В области навигации слева выберите элемент Управления доступом (IAM).

  3. На панели действий выберите "Роли".

  4. Щелкните правой кнопкой мыши средство чтения данных индекса поиска (или другую роль) и выберите "Клонировать ", чтобы открыть мастер создания настраиваемой роли .

  5. На вкладке "Основные сведения" укажите имя настраиваемой роли, например "Обозреватель данных индекса поиска", а затем нажмите кнопку "Далее".

  6. На вкладке "Разрешения" нажмите кнопку "Добавить разрешение".

  7. На вкладке "Добавление разрешений" найдите и выберите плитку "Поиск Майкрософт ".

  8. Установите разрешения для пользовательской роли. В верхней части страницы, используя стандартный выбор действий:

    • В разделе Microsoft.Search/operations выберите "Чтение: вывод списка всех доступных операций".
    • В разделе Microsoft.Search/searchServices/indexes выберите "Чтение: чтение индекса".
  9. На той же странице переключитесь на действия данных и в разделе Microsoft.Search/searchServices/indexes/documents выберите "Чтение: чтение документов".

    Определение JSON выглядит следующим образом:

    {
     "properties": {
         "roleName": "search index data explorer",
         "description": "",
         "assignableScopes": [
             "/subscriptions/0000000000000000000000000000000/resourceGroups/free-search-svc/providers/Microsoft.Search/searchServices/demo-search-svc"
         ],
         "permissions": [
             {
                 "actions": [
                     "Microsoft.Search/operations/read",
                     "Microsoft.Search/searchServices/indexes/read"
                 ],
                 "notActions": [],
                 "dataActions": [
                     "Microsoft.Search/searchServices/indexes/documents/read"
                 ],
                 "notDataActions": []
             }
         ]
       }
     }
    
  10. Выберите "Проверить и создать" , чтобы создать роль. Теперь вы можете назначить пользователей и группы к роли.

Условный доступ

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

Чтобы включить политику условного доступа для поиска ИИ Azure, выполните следующие действия.

  1. Войдите на портал Azure.

  2. Найдите Microsoft Entra Conditional Access.

  3. Выберите Политики.

  4. Выберите Новая политика.

  5. В разделе "Облачные приложения" или "Действия " политики добавьте поиск ИИ Azure в качестве облачного приложения в зависимости от способа настройки политики.

  6. Обновите оставшиеся параметры политики. Например, укажите, к каким пользователям и группам применяется эта политика.

  7. Сохраните политику.

Это важно

Если вашей службе поиска присвоено управляемое удостоверение, эта конкретная служба поиска будет отображаться как облачное приложение, которое можно включить или исключить в рамках политики условного доступа. Политики условного доступа не могут быть применены к определенной службе поиска. Вместо этого убедитесь, что выбрано универсальное облачное приложение Azure AI Search.

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

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

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

  • Конфигурация по умолчанию для службы поиска — это проверка подлинности на основе ключей. Если вы не изменили параметр ключа по умолчанию на Оба или Управление доступом на основе ролей, то все запросы с применением аутентификации на основе ролей автоматически отклоняются независимо от базовых разрешений.