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


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

ОБЛАСТЬ ПРИМЕНЕНИЯ:Пакет SDK для Python для ML Azure версии 1

Узнайте, как настроить проверку подлинности для рабочей области Машинного обучения Azure. Проверка подлинности в рабочей области Машинное обучение Azure основана на идентификаторе Microsoft Entra для большинства вещей. Как правило, для подключения к рабочей области можно использовать один из четырех рабочих процессов проверки подлинности.

  • Интерактивный: вы используете свою учетную запись в идентификаторе Microsoft Entra для непосредственной проверки подлинности или получения маркера, используемого для проверки подлинности. Интерактивная проверка подлинности используется во время экспериментов и последовательной разработки. Интерактивная проверка подлинности позволяет управлять доступом к ресурсам (например, веб-службе) отдельно для каждого пользователя.

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

  • Сеанс Azure CLI. Для проверки подлинности используется активный сеанс Azure CLI. Проверка подлинности Azure CLI используется во время проведения экспериментов и итеративной разработки либо при необходимости автоматического прохождения проверки подлинности в службе с помощью сеанса с предварительной проверкой подлинности. Вы можете входить в Azure с помощью Azure CLI на локальной рабочей станции, не сохраняя учетные данные в коде Python и не запрашивая проверку подлинности пользователя. Аналогичным образом можно повторно использовать те же скрипты, что и в рамках конвейеров непрерывной интеграции и развертывания, при проверке подлинности Azure CLI с помощью удостоверения субъекта-службы.

  • Управляемое удостоверение. При использовании пакета SDK для Машинного обучения Azure на виртуальной машине Azure можно использовать управляемое удостоверение для Azure. Этот рабочий процесс позволяет виртуальной машине подключаться к рабочей области с помощью управляемого удостоверения без хранения учетных данных в коде Python или запроса проверки подлинности у пользователя. Машинное обучение Azure вычислительных кластеров и вычислительных экземпляров также можно настроить для использования управляемого удостоверения для доступа к рабочей области при обучении моделей.

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

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

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

Microsoft Entra ID

Все рабочие процессы проверки подлинности для рабочей области зависят от идентификатора Microsoft Entra. Если вы хотите, чтобы пользователи прошли проверку подлинности с помощью отдельных учетных записей, у них должны быть учетные записи в идентификаторе Microsoft Entra. Если вы хотите использовать субъекты-службы, они должны существовать в идентификаторе Microsoft Entra. Управляемые удостоверения также являются функцией идентификатора Microsoft Entra.

Дополнительные сведения об идентификаторе Microsoft Entra см. в разделе "Что такое проверка подлинности Microsoft Entra".

После создания учетных записей Microsoft Entra см. статью "Управление доступом к рабочей области Машинное обучение Azure", чтобы получить им доступ к рабочей области и другим операциям в Машинное обучение Azure.

Настройка субъекта-службы

Чтобы использовать субъект-службу, необходимо сначала создать субъект-службу. Затем предоставьте ей доступ к рабочей области. Как упоминалось ранее, используется управление доступом на основе ролей Azure (Azure RBAC), поэтому необходимо также решить, какой доступ следует предоставить субъекту-службе.

Внимание

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

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

Самый простой способ создать субъект-службу и предоставить доступ к рабочей области — с помощью Azure CLI. Чтобы создать субъект-службу и предоставить ей доступ к рабочей области, выполните следующие действия/

Примечание.

Для выполнения всех этих действий требуются разрешения администратора подписки.

  1. Пройдите аутентификацию в подписке Azure.

    az login
    

    Если CLI сможет запустить браузер по умолчанию, он откроет в браузере страницу входа. Или откройте браузер и выполните инструкции из командной строки. В инструкции входит переход к https://aka.ms/devicelogin и ввод кода авторизации.

    Если у вас несколько подписок Azure, вы можете использовать команду az account set -s <subscription name or ID> для задания подписки. См. дополнительные сведения в статье Use multiple Azure subscriptions (Использование нескольких подписок Azure).

    Другие методы аутентификации см. в статье Вход с помощью Azure CLI.

  2. Создайте субъект-службу. В следующем примере создается субъект-служба с именем ml-auth:

    az ad sp create-for-rbac --json-auth --name ml-auth --role Contributor --scopes /subscriptions/<subscription id>
    

    Параметр --json-auth доступен в версиях >Azure CLI = 2.51.0. Версии до этого использования --sdk-auth.

    Результатом будет файл JSON, который будет выглядеть примерно так: Запишите значения в полях clientId, clientSecret и tenantId, поскольку они понадобятся для выполнения других действий в этой статье.

    {
        "clientId": "your-client-id",
        "clientSecret": "your-client-secret",
        "subscriptionId": "your-sub-id",
        "tenantId": "your-tenant-id",
        "activeDirectoryEndpointUrl": "https://login.microsoftonline.com",
        "resourceManagerEndpointUrl": "https://management.azure.com",
        "activeDirectoryGraphResourceId": "https://graph.windows.net",
        "sqlManagementEndpointUrl": "https://management.core.windows.net:5555",
        "galleryEndpointUrl": "https://gallery.azure.com/",
        "managementEndpointUrl": "https://management.core.windows.net"
    }
    
  3. Получите сведения для субъекта-службы, используя значение clientId, возвращенное на предыдущем шаге:

    az ad sp show --id your-client-id
    

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

    {
        "accountEnabled": "True",
        "addIns": [],
        "appDisplayName": "ml-auth",
        ...
        ...
        ...
        "objectId": "your-sp-object-id",
        "objectType": "ServicePrincipal"
    }
    
  4. Сведения о предоставлении доступа к рабочей области и другим ресурсам, используемым Машинным обучением Azure, см. в следующих статьях:

    Внимание

    Доступ владельца позволяет субъекту-службе выполнять практически любую операцию в рабочей области. Он используется в этом документе, чтобы продемонстрировать, как предоставить доступ. В рабочей среде Майкрософт рекомендует предоставить субъекту-службе минимальный доступ, необходимый для выполнения ее задачи. Сведения о создании пользовательской роли с доступом, необходимым для вашего сценария, см. в разделе Управление доступом к рабочей области Машинного обучения Azure.

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

Внимание

Управляемое удостоверение поддерживается только при использовании пакета SDK Машинное обучение Azure из виртуальной машины Azure или с Машинное обучение Azure вычислительным кластером или вычислительным экземпляром.

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

  1. Включите назначенное системой управляемое удостоверение для ресурсов Azure на виртуальной машине.

  2. Перейдите в свою рабочую область на портале Azure и выберите Контроль доступа (IAM).

  3. Выберите Добавить и Добавить назначение ролей, чтобы открыть страницу для добавления назначения роли.

  4. Назначьте следующую роль. Подробные инструкции см. в статье Назначение ролей Azure с помощью портала Microsoft Azure.

    Параметр Значение
    Роль Выберите роль, которую требуется назначить.
    Назначить доступ для Управляемое удостоверение
    Участники Созданное ранее управляемое удостоверение

    Страница

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

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

Использование интерактивной проверки подлинности

Внимание

При интерактивной проверке подлинности используется браузер и требуются файлы cookie (включая сторонние файлы cookie). Если вы отключили файлы cookie, может появиться сообщение об ошибке, например "мы не смогли войти". Эта ошибка также может возникать, если вы включили многофакторную проверку подлинности Microsoft Entra.

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

  • Вызов функции from_config() приведет к выдаче запроса.

    from azureml.core import Workspace
    ws = Workspace.from_config()
    

    Функция from_config() выполняет поиск файла JSON, который содержит сведения о подключении к рабочей области.

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

    ws = Workspace(subscription_id="your-sub-id",
                  resource_group="your-resource-group-id",
                  workspace_name="your-workspace-name"
                  )
    

Совет

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

from azureml.core.authentication import InteractiveLoginAuthentication
interactive_auth = InteractiveLoginAuthentication(tenant_id="your-tenant-id")

При использовании Azure CLI команда az login используется для проверки подлинности сеанса CLI. Дополнительные сведения можно найти в документации по началу работы с Azure CLI.

Совет

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

from azureml.core.authentication import AzureCliAuthentication
cli_auth = AzureCliAuthentication()
ws = Workspace(subscription_id="your-sub-id",
               resource_group="your-resource-group-id",
               workspace_name="your-workspace-name",
               auth=cli_auth
               )

Использование аутентификации субъекта-службы

Чтобы выполнить проверку подлинности в рабочей области из пакета SDK с помощью субъекта-службы, используйте конструктор класса ServicePrincipalAuthentication. Используйте значения, полученные при создании поставщика услуг, в качестве параметров. Параметр tenant_id сопоставляется с tenantId выше, service_principal_id сопоставляется с clientId, а service_principal_password сопоставляется с clientSecret.

from azureml.core.authentication import ServicePrincipalAuthentication

sp = ServicePrincipalAuthentication(tenant_id="your-tenant-id", # tenantID
                                    service_principal_id="your-client-id", # clientId
                                    service_principal_password="your-client-secret") # clientSecret

Переменная sp теперь содержит объект проверки подлинности, который вы используете непосредственно в пакете SDK. Как правило, идентификаторы и секреты, используемые выше, рекомендуется хранить в переменных среды, как показано в следующем коде. Хранение в переменных среды предотвращает случайную синхронизацию с репозиторием GitHub.

import os

sp = ServicePrincipalAuthentication(tenant_id=os.environ['AML_TENANT_ID'],
                                    service_principal_id=os.environ['AML_PRINCIPAL_ID'],
                                    service_principal_password=os.environ['AML_PRINCIPAL_PASS'])

Для автоматизированных рабочих процессов, которые выполняются в Python и используют пакет SDK, этот объект в большинстве случаев можно использовать как есть для проверки подлинности. Следующий код выполняет проверку подлинности в рабочей области, используя созданный объект проверки подлинности.

from azureml.core import Workspace

ws = Workspace.get(name="ml-example",
                   auth=sp,
                   subscription_id="your-sub-id",
                   resource_group="your-rg-name")
ws.get_details()

Используйте проверку подлинности с помощью управляемых удостоверений

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

from azureml.core.authentication import MsiAuthentication

msi_auth = MsiAuthentication()

ws = Workspace(subscription_id="your-sub-id",
                resource_group="your-resource-group-id",
                workspace_name="your-workspace-name",
                auth=msi_auth
                )

Использование условного доступа

Администратор может применять политики условного доступа Microsoft Entra для пользователей, входящих в рабочую область. Например, можно включить двухфакторную проверку подлинности или разрешить вход только с управляемых устройств. Чтобы использовать условный доступ для рабочих областей Машинное обучение Azure, назначьте политику условного доступа приложению с именем Машинное обучение Azure. Идентификатор приложения — 0736f41a-0425-bdb5-1563eff02385.

Следующие шаги