Использование элементов управления доступом на основе ролей Azure (Azure RBAC) в Когнитивный поиск Azure

В Azure имеется глобальная система авторизации управления доступом на основе ролей (RBAC), которая используется для всех служб, работающих на этой платформе. В Когнитивном поиске можно:

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

  • Используйте новые роли предварительной версии для запросов данных, включая создание, загрузку и запросы индексов.

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

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

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

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

(предварительная версия) Эта роль имеет тот же доступ, что и роль участника службы поиска на плоскости данных. Он включает доступ ко всем действиям плоскости данных, кроме возможности запрашивать индекс поиска или индексировать документы.
Читатель (Общедоступная версия) Ограниченный доступ к частичным сведениям о службе. На портале пользователь с ролью читателя может получить доступ к информации на странице обзора службы, в разделе Essentials и на вкладке "Мониторинг". Все остальные вкладки и страницы находятся за пределами отсечения.

Эта роль имеет доступ к сведениям о службе: имя службы, группа ресурсов, состояние службы, расположение, имя подписки и идентификатор, теги, URL-адрес, ценовая категория, реплики, секции и единицы поиска. Кроме того, эта роль имеет доступ к следующим метрикам службы: задержка при поиске, процент регулируемых запросов, среднее количество запросов в секунду.

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

(предварительная версия) Если включить предварительную версию RBAC для плоскости данных, эта роль также обеспечивает полный доступ ко всем действиям плоскости данных по индексам, картам синонимов, индексаторам, источникам данных и наборам навыков, определенным.Microsoft.Search/searchServices/* Эта роль не предоставляет доступ к индексам поиска запросов или документам индекса. Эта роль предназначена для администраторов служб поиска, которым необходимо управлять службой поиска и ее объектами, но без возможности просмотра или доступа к данным объектов.

Как и участник, члены этой роли не могут выполнять назначения ролей или изменять параметры авторизации или управлять ими. Чтобы использовать возможности предварительной версии этой роли, служба должна включить предварительную версию функции, как описано в этой статье.
Участник данных индекса поиска (предварительная версия) Предоставляет полный доступ к содержимому во всех индексах службы поиска. Эта роль предназначена для разработчиков или владельцев индексов, которым необходимо импортировать, обновить или запросить коллекцию документов индекса.
Читатель данных индекса поиска (предварительная версия) Предоставляет доступ только для чтения к индексам поиска в службе поиска. Эта роль используется для приложений и пользователей, выполняющих запросы.

Примечание

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

Предварительные версии возможностей и ограничений

  • Управление доступом на основе ролей для операций плоскости данных, таких как создание индекса или запрос индекса, в настоящее время доступно в общедоступной предварительной версии и доступно в рамках дополнительных условий использования.

  • Для использования предварительной версии Azure RBAC нет региональных, уровней или ценовых ограничений, но служба поиска должна находиться в общедоступном облаке Azure. Предварительная версия недоступна в Azure для государственных организаций, Azure для Германии или Azure для Китая 21Vianet.

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

  • Внедрение Azure RBAC может увеличить задержку некоторых запросов. Каждое уникальное сочетание ресурса службы (индекса, индексатора и т. д.) и субъекта-службы, используемого в запросе, активирует проверку авторизации. Эти проверки авторизации могут добавить до 200 миллисекунда задержки в запросе.

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

Зарегистрироваться для получения предварительной версии

Применимо к: Участник данных индекса поиска, читатель данных индекса поиска, участник службы поиска

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

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

  2. На панели навигации слева выберите "Ключи".

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

    Снимок экрана: регистрация для предварительной версии rbac на портале

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

Примечание

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

Включение предварительной версии RBAC для операций плоскости данных

Применимо к: Участник данных индекса поиска, читатель данных индекса поиска, участник службы поиска

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

  1. Войдите в портал Azure и откройте страницу службы поиска.

  2. В расположенной слева области навигации щелкните Ключи.

  3. Выберите механизм управления доступом к API

    Параметр Status Описание
    Ключ API Общедоступная версия (по умолчанию) Для авторизации в заголовке запроса должны быть указаны ключи администратора или API запроса. Роли не используются.
    Управление доступом на основе ролей Предварительный просмотр Для выполнения задач, описанных в следующем действии, требуются привилегии по назначению ролей. Кроме того, требуется заголовок авторизации. Если выбрать этот вариант, можно будет работать только с клиентами, поддерживающими REST API версии 2021-04-30-preview.
    Оба Предварительный просмотр Запросы считаются допустимыми при использовании ключа API или маркера авторизации.

Если не удается сохранить выбранный фрагмент или вы получите сообщение "Управление доступом к API не удалось обновить для службы <name>поиска. DisableLocalAuth является предварительной версией и не включен для этой подписки" — регистрация подписки не была инициирована или не обработана.

Назначение ролей

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

Вы должны быть владельцем или иметь разрешения Microsoft.Authorization/roleAssignments/write для управления назначениями ролей.

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

  1. Откройте портал Azure.

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

  3. На расположенной слева панели навигации щелкните Управление доступом (IAM) .

  4. Выберите + Добавить>Добавить назначение ролей.

    Страница

  5. Выберите соответствующую роль:

    • Владелец
    • Участник
    • Читатель
    • Участник службы поиска (предварительная версия запросов плоскости данных)
    • Участник данных индекса поиска (предварительная версия)
    • Средство чтения данных индекса поиска (предварительная версия)
  6. На вкладке "Участники" выберите Azure AD удостоверение пользователя или группы.

  7. Чтобы назначить роль, на вкладке Review + assign (Проверка и назначение) выберите Проверка и назначение.

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

  1. Откройте портал Azure.

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

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

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

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

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

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

В настоящее время портал не поддерживает назначения ролей на этом уровне детализации, но это можно сделать с помощью 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. На вкладке "Основные сведения" укажите имя настраиваемой роли, например "Поисковый индекс Data Explorer", а затем нажмите кнопку "Далее".

  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/a5b1ca8b-bab3-4c26-aebe-4cf7ec4791a0/resourceGroups/heidist-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. Нажмите кнопку "Просмотр и создание ", чтобы создать роль. Теперь вы можете назначить роли пользователей и группы.

Отключение проверки подлинности на основании ключа API

Ключи API нельзя удалить, но их можно отключить в службе. Если вы используете роли "Участник службы поиска", "Участник данных индекса поиска" и "Читатель данных индекса поиска" (предварительная версия) и Azure AD аутентификации, вы можете отключить ключи API, в результате чего служба поиска откажет все запросы, связанные с данными, которые передают ключ API в заголовке для запросов, связанных содержимым.

Чтобы отключить проверку подлинности на основе ключей, используйте REST API управления версии 2021-04-01-Preview и отправьте два последовательных запроса для службы обновления.

Для отключения функций требуются разрешения владельца или участника. Используйте Postman или другое средство веб-тестирования, чтобы выполнить следующие действия (см. совет ниже):

  1. В первом запросе задайте для параметра AuthOptions значение aadOrApiKey, чтобы включить проверку подлинности Azure AD. Обратите внимание, что параметр указывает на доступность любого подхода: Azure AD или собственных ключей API.

    PUT https://management.azure.com/subscriptions/{{subscriptionId}}/resourcegroups/{{resource-group}}/providers/Microsoft.Search/searchServices/{{search-service-name}}?api-version=2021-04-01-Preview
    {
      "location": "{{region}}",
      "sku": {
        "name": "standard"
      },
      "properties": {
        "authOptions": {
          "aadOrApiKey": {
            "aadAuthFailureMode": "http401WithBearerChallenge"
          }
        }
      }
    }
    
  2. Во втором запросе задайте для параметра disableLocalAuth значение true. Этот шаг отключает ключевую часть API параметра aadOrApiKey, оставляя вас просто Azure AD аутентификации.

    PUT https://management.azure.com/subscriptions/{{subscriptionId}}/resourcegroups/{{resource-group}}/providers/Microsoft.Search/searchServices/{{search-service-name}}?api-version=2021-04-01-Preview
    {
      "location": "{{region}}",
      "sku": {
        "name": "standard"
      },
      "properties": {
        "disableLocalAuth": true
      }
    }
    

Вы не можете объединить шаги один и два. На шаге 1 параметр "disableLocalAuth" должен иметь значение false, чтобы соответствовать требованиям для настройки AuthOptions, в то время как два шага изменяют это значение на true.

Чтобы повторно включить проверку подлинности ключа, повторно запустите последний запрос, установив для параметра disableLocalAuth значение false. Служба поиска возобновит принятие ключей API в запросе автоматически (при условии, что они указаны).

Совет

Вызовы REST API управления проходят проверку подлинности через Azure Active Directory. Рекомендации по настройке субъекта безопасности и запроса см. в этой записи блога о REST API Azure с помощью Postman (2021). Предыдущий пример был протестирован с помощью инструкций и коллекции Postman, предоставленной в записи блога.

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

Условный доступ — это средство в Azure Active Directory, используемое для применения политик организации. С помощью политик условного доступа вы можете применять правильные элементы управления доступом, если это необходимо для обеспечения безопасности организации. При доступе к службе Когнитивный поиск Azure с помощью управления доступом на основе ролей условный доступ может применять политики организации.

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

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

  2. Найдите раздел Условный доступ в Azure Active Directory.

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

  4. Щелкните + Создать политику.

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

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

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

Важно!

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