Подключение к поиску ИИ Azure с помощью ролей
Azure предоставляет глобальную проверку подлинности и управление доступом на основе ролей с помощью идентификатора Microsoft Entra для всех служб, работающих на платформе. Из этой статьи вы узнаете, какие роли предоставляют доступ к содержимому поиска и администрирования в поиске ИИ Azure.
В службе "Поиск по искусственному интеллекту Azure" можно назначить роли Azure для:
- Администрирование службы
- Разработка или доступ на запись в службу поиска
- Доступ только для чтения для запросов
- Ограниченный доступ к одному индексу
Доступ на пользователя через результаты поиска (иногда называется безопасностью на уровне строк или безопасностью на уровне документов) не поддерживается с помощью назначений ролей. В качестве обходного решения создайте фильтры безопасности, которые обрезают результаты по удостоверению пользователя, удаляя документы, для которых запрашивающий не должен иметь доступа. См. этот пример корпоративного чата с помощью RAG для демонстрации.
Назначения ролей являются накопительными и распространенными для всех средств и клиентских библиотек. Роли можно назначать с помощью любого из поддерживаемых подходов, описанных в документации по управлению доступом на основе ролей Azure.
Доступ на основе ролей является необязательным, но рекомендуется. Альтернативой является проверка подлинности на основе ключей, которая является стандартной.
Необходимые компоненты
Служба поиска в любом регионе на любом уровне включена для доступа на основе ролей.
Владелец, администратор доступа пользователей, администратор на основе ролей контроль доступа или пользовательская роль с разрешениями Microsoft.Authorization/roleAssignments/write.
Назначение ролей на портале
Следующие действия выполняются для всех назначений ролей.
Войдите на портал Azure.
Перейдите к своей службе поиска
Включите доступ на основе ролей.
На расположенной слева панели навигации щелкните Управление доступом (IAM).
Нажмите кнопку +Добавить>назначение роли, чтобы запустить мастер добавления назначения ролей.
Выберите роль. Вы можете назначить несколько субъектов безопасности, будь то пользователи или управляемые удостоверения роли в одном проходе через мастер, но необходимо повторить эти действия для каждой определенной роли.
На вкладке "Участники" выберите удостоверение пользователя Или группы Microsoft Entra. Если вы настраиваете разрешения для другой службы Azure, выберите системное или управляемое пользователем удостоверение.
Чтобы назначить роль, на вкладке Проверка и назначение выберите Проверка и назначение.
Встроенные роли, используемые в поиске
Плоскость данных относится к операциям с конечной точкой службы поиска, например индексированием или запросами, или любой другой операцией, указанной в REST API службы поиска или эквивалентными клиентскими библиотеками azure SDK.
Плоскость управления относится к управлению ресурсами Azure, например созданию или настройке службы поиска.
Встроены следующие роли. Если эти роли недостаточно, создайте пользовательскую роль.
Роль | Плоскость | Description |
---|---|---|
Ответственное лицо | Управление и данные | Полный доступ к плоскости управления ресурса поиска, включая возможность назначения ролей Azure. Только роль владельца может включать или отключать параметры проверки подлинности или управлять ролями для других пользователей. По умолчанию администраторы подписок являются участниками. На плоскости данных эта роль имеет тот же доступ, что и роль участника службы поиска. Он включает доступ ко всем действиям плоскости данных, кроме возможности запрашивать или индексировать документы. |
Участник | Управление и данные | Тот же уровень доступа уровня управления, что и владелец, минус возможность назначать роли или изменять параметры проверки подлинности. На плоскости данных эта роль имеет тот же доступ, что и роль участника службы поиска. Он включает доступ ко всем действиям плоскости данных, кроме возможности запрашивать или индексировать документы. |
Читатель | Управление и данные | Доступ на чтение во всей службе, включая метрики поиска, метрики содержимого (используемое хранилище, количество объектов), а также определения объектов ресурсов плоскости данных (индексы, индексаторы и т. д.). Однако он не может считывать ключи API или читать содержимое в индексах. |
Участник службы поиска | Управление и данные | Доступ на чтение и запись к определениям объектов (индексы, псевдонимы, карты синонимов, индексаторы, источники данных и наборы навыков). Эта роль предназначена для разработчиков, создающих объекты, а также для администраторов, которые управляют службой поиска и его объектами, но без доступа к содержимому индекса. Эта роль позволяет создавать, удалять и перечислять индексы, получать определения индексов, получать сведения о службе (статистика и квоты), тест-анализаторы, создавать карты синонимов, индексаторы, источники данных и наборы навыков. См Microsoft.Search/searchServices/* . список разрешений. |
Участник данных индекса поиска | Data | Доступ на чтение и запись к содержимому в индексах. Эта роль предназначена для разработчиков или владельцев индексов, которые должны импортировать, обновить или запросить коллекцию документов индекса. Эта роль не поддерживает создание или управление индексами. По умолчанию эта роль используется для всех индексов в службе поиска. Чтобы сузить область, см . раздел "Предоставить доступ к одному индексу ". |
Читатель данных индекса поиска | Data | Доступ только для чтения для запросов индексов поиска. Эта роль предназначена для приложений и пользователей, выполняющих запросы. Эта роль не поддерживает доступ на чтение к определениям объектов. Например, невозможно прочитать определение индекса поиска или получить статистику службы поиска. По умолчанию эта роль используется для всех индексов в службе поиска. Чтобы сузить область, см . раздел "Предоставить доступ к одному индексу ". |
Объедините эти роли, чтобы получить достаточные разрешения для вашего варианта использования.
Примечание.
Если вы отключите доступ на основе ролей Azure, встроенные роли для уровня управления (владелец, участник, читатель) будут доступны. Отключение доступа на основе ролей удаляет только разрешения, связанные с данными, связанные с этими ролями. Если роли плоскости данных отключены, участник службы поиска эквивалентен участнику уровня управления.
Итоги
Разрешения | Читатель данных индекса поиска | Участник данных индекса поиска | Участник службы поиска | Владелец или участник | Читатель |
---|---|---|---|---|---|
Просмотр ресурса в портал Azure | ❌ | ❌ | ✅ | ✅ | ✅ |
Просмотр свойств ресурса, метрик и конечной точки | ❌ | ❌ | ✅ | ✅ | ✅ |
Вывод списка всех объектов в ресурсе | ❌ | ❌ | ✅ | ✅ | ✅ |
Доступ к квотам и статистике служб | ❌ | ❌ | ✅ | ✅ | ❌ |
Чтение и запрос индекса | ✅ | ❌ | ❌ | ❌ | ❌ |
Отправка данных для индексирования | ❌ | ✅ | ❌ | ❌ | ❌ |
Создание или изменение индексов и псевдонимов | ❌ | ❌ | ✅ | ✅ | ❌ |
Создание, изменение и запуск индексаторов, источников данных и наборов навыков | ❌ | ❌ | ✅ | ✅ | ❌ |
Создание или изменение карт синонимов | ❌ | ❌ | ✅ | ✅ | ❌ |
Создание или изменение сеансов отладки | ❌ | ❌ | ✅ | ✅ | ❌ |
Создание развертываний или управление ими | ❌ | ❌ | ✅ | ✅ | ❌ |
Создание или настройка ресурсов поиска ИИ Azure | ❌ | ❌ | ✅ | ✅ | ❌ |
Просмотр и копирование и повторное создание ключей в разделе "Ключи" | ❌ | ❌ | ✅ | ✅ | ❌ |
Просмотр ролей, политик и определений | ❌ | ❌ | ✅ | ✅ | ❌ |
Настройка параметров проверки подлинности | ❌ | ❌ | ✅ | ✅ | ❌ |
Настройка частных подключений | ❌ | ❌ | ✅ | ✅ | ❌ |
Настройка безопасности сети | ❌ | ❌ | ✅ | ✅ | ❌ |
Владельцы и участники предоставляют те же разрешения, за исключением того, что только владельцы могут назначать роли.
Владельцы и участники могут создавать, читать, обновлять и удалять объекты в портал Azure если ключи API включены. На портале используются ключи для внутренних вызовов API плоскости данных. В дальнейшем вы настроите поиск ИИ Azure только для использования ролей, а владелец и участник не смогут управлять объектами на портале, используя только эти назначения ролей. Решение заключается в назначении дополнительных ролей, таких как средство чтения данных индекса поиска, участник индекса поиска и участник службы поиска.
Назначение ролей
В этом разделе назначьте роли для:
- Администрирование службы
- Разработка или доступ на запись в службу поиска
- Доступ только для чтения для запросов
Назначение ролей для администрирования службы
Администратор службы может создавать и настраивать службу поиска, а также выполнять все операции уровня управления, описанные в REST API управления или эквивалентных клиентских библиотеках. Если вы являетесь владельцем или участником, вы также можете выполнять большинство задач REST API поиска плоскости данных в портал Azure.
Роль | ID |
---|---|
Owner |
8e3af657-a8ff-443c-a75c-2fe8c4bcb635 |
Contributor |
b24988ac-6180-42a0-ab88-20f7382dd24c |
Reader |
acdd72a7-3385-48ef-bd42-f606fba81ae7 |
Войдите на портал Azure.
Назначьте следующие роли:
- Владелец (полный доступ ко всем операциям плоскости данных и плоскости управления, за исключением разрешений запроса)
- Участник (тот же, что и владелец, за исключением разрешений на назначение ролей)
- Читатель (приемлемый для мониторинга и просмотра метрик)
Назначение ролей для разработки
Назначения ролей являются глобальными в службе поиска. Для области разрешений на один индекс используйте PowerShell или Azure CLI для создания настраиваемой роли.
Задача | Роль | ID |
---|---|---|
Операции CRUD | 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 для проверки подлинности.
Войдите на портал Azure.
Назначьте следующие роли:
- Участник службы поиска (операции create-read-update-delete для индексов, индексаторов, наборов навыков и других объектов верхнего уровня)
- Участник данных индекса поиска (загрузка документов и выполнение заданий индексирования)
- Средство чтения данных индексов поиска (запрос индекса)
Назначение ролей для запросов только для чтения
Используйте роль средства чтения индексов поиска для приложений и процессов, которым требуется доступ только для чтения к индексу.
Роль | ID |
---|---|
Search Index Data Reader с PowerShell |
1407120a-92aa-4202-b7e9-c0e197c71c8f |
Это очень конкретная роль. Он предоставляет доступ GET или POST к коллекции документов индекса поиска для поиска, автозаполнения и предложений. Он не поддерживает операции GET или LIST в индексе или других объектах верхнего уровня или статистике службы GET.
В этом разделе приведены основные шаги по настройке назначения ролей и его полноте, но мы рекомендуем использовать поиск ИИ Azure без ключей для получения комплексных инструкций по настройке приложения для доступа на основе ролей.
Войдите на портал Azure.
Назначьте роль читателя индексов поиска.
Тестирование назначений ролей
Используйте клиент для тестирования назначений ролей. Помните, что роли являются накопительными и унаследованными ролями, которые находятся на уровне подписки или группы ресурсов, не могут быть удалены или запрещены на уровне ресурса (службы поиска).
Настройте приложение для бессерверных подключений и укажите назначения ролей перед тестированием.
Войдите на портал Azure.
Перейдите к своей службе поиска
На странице "Обзор" перейдите на вкладку Индексы.
Участники службы поиска могут просматривать и создавать любой объект, но не могут загружать документы или запрашивать индекс. Чтобы проверить разрешения, создайте индекс поиска.
Участники индекса поиска могут загружать документы. На портале за пределами мастера импорта данных отсутствует параметр загрузки документов, но вы можете сбросить и запустить индексатор , чтобы подтвердить разрешения на загрузку документов.
Средства чтения данных индекса поиска могут запрашивать индекс. Чтобы проверить разрешения, используйте обозреватель поиска. Вы должны иметь возможность отправлять запросы и просматривать результаты, но вы не сможете просмотреть определение индекса или создать его.
Тестирование от имени текущего пользователя
Если вы уже являетесь участником или владельцем службы поиска, вы можете представить маркер носителя для удостоверения пользователя для проверки подлинности в службе "Поиск ИИ Azure".
Получите маркер носителя для текущего пользователя с помощью Azure CLI:
az account get-access-token --scope https://search.azure.com/.default
Или с помощью PowerShell:
Get-AzAccessToken -ResourceUrl https://search.azure.com
Вставьте эти переменные в новый текстовый файл в Visual Studio Code.
@baseUrl = PASTE-YOUR-SEARCH-SERVICE-URL-HERE @index-name = PASTE-YOUR-INDEX-NAME-HERE @token = PASTE-YOUR-TOKEN-HERE
Вставьте и отправьте запрос для подтверждения доступа. Вот тот, который запрашивает индекс 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 }
Предоставление доступа к одному индексу
В некоторых сценариях может потребоваться ограничить доступ приложения к одному ресурсу, например индексу.
Портал в настоящее время не поддерживает назначения ролей на этом уровне детализации, но его можно сделать с помощью PowerShell или Azure CLI.
В PowerShell используйте New-AzRoleAssignment, указав имя пользователя или группы Azure и область назначения.
Azure
Загрузите и модули иAzureAD
подключитесь к учетной записи Azure:Import-Module -Name Az Import-Module -Name AzureAD Connect-AzAccount
Добавьте назначение роли в отдельный индекс:
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. Клонирование из существующей роли поддерживается на странице службы поиска.
В этих шагах создается пользовательская роль, которая расширяет права поискового запроса для включения индексов перечисления по имени. Как правило, индексы перечисления считаются функцией администратора.
В портал Azure перейдите в службу поиска.
В области навигации слева выберите контроль доступа (IAM).
На панели действий выберите "Роли".
Щелкните правой кнопкой мыши средство чтения данных индекса поиска (или другую роль) и выберите "Клонировать ", чтобы открыть мастер создания настраиваемой роли .
На вкладке "Основные сведения" укажите имя настраиваемой роли, например "Обозреватель данных индекса поиска", а затем нажмите кнопку "Далее".
На вкладке "Разрешения" нажмите кнопку "Добавить разрешение".
На вкладке "Добавление разрешений" найдите и выберите плитку Поиск (Майкрософт).
Задайте разрешения для пользовательской роли. В верхней части страницы с помощью выбора действий по умолчанию:
- В разделе Microsoft.Search/operations выберите "Чтение: вывод списка всех доступных операций".
- В разделе Microsoft.Search/searchServices/indexes выберите "Чтение: чтение индекса".
На той же странице переключитесь на действия данных и в разделе 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": [] } ] } }
Выберите "Проверить и создать" , чтобы создать роль. Теперь вы можете назначить пользователей и группы роли.
Условный доступ
Рекомендуется использовать условный доступ Microsoft Entra, если необходимо применить политики организации, такие как многофакторная проверка подлинности.
Чтобы включить политику условного доступа для поиска ИИ Azure, выполните следующие действия.
Найдите условный доступ Microsoft Entra.
Выберите Политики.
Выберите Новая политика.
В разделе "Облачные приложения" или "Действия " политики добавьте поиск ИИ Azure в качестве облачного приложения в зависимости от способа настройки политики.
Обновите оставшиеся параметры политики. Например, укажите, к каким пользователям и группам применяется эта политика.
Сохраните политику.
Внимание
Если в службе поиска назначено управляемое удостоверение, конкретная служба поиска будет отображаться как облачное приложение, которое может быть включено или исключено в рамках политики условного доступа. Политики условного доступа не могут быть применены к определенной службе поиска. Вместо этого убедитесь, что выбрано общее облачное приложение службы "Поиск ИИ Azure".
Ограничения
Управление доступом на основе ролей может увеличить задержку некоторых запросов. Каждое уникальное сочетание ресурсов службы (индексатора, индексатора и т. д.) и субъекта-службы активирует проверку авторизации. Эти проверки авторизации могут содержать до 200 миллисекунда задержки на запрос.
В редких случаях, когда запросы возникают из большого числа разных субъектов-служб, все целевые ресурсы службы (индексы, индексаторы и т. д.) могут привести к регулированию. Регулирование произойдет только в том случае, если в секунду использовались сотни уникальных сочетаний ресурсов службы поиска и субъекта-службы.
Устранение неполадок управления доступом на основе ролей
При разработке приложений, использующих управление доступом на основе ролей для проверки подлинности, могут возникнуть некоторые распространенные проблемы:
Если маркер авторизации был получен из управляемого удостоверения и недавно назначены соответствующие разрешения, может потребоваться несколько часов , чтобы эти назначения разрешений вступили в силу.
Конфигурация по умолчанию для службы поиска — это проверка подлинности на основе ключей. Если вы не изменили параметр ключа по умолчанию на управление доступом на основе ролей, все запросы, использующие проверку подлинности на основе ролей, автоматически отклоняются независимо от базовых разрешений.