Примечание.
Для доступа к этой странице требуется авторизация. Вы можете попробовать войти или изменить каталоги.
Для доступа к этой странице требуется авторизация. Вы можете попробовать изменить каталоги.
ОБЛАСТЬ ПРИМЕНЕНИЯ:
Расширение Azure CLI для машинного обучения версии 2 (текущая)
Python SDK azure-ai-ml версии 2 (текущая)
Узнайте, как настроить проверку подлинности в рабочей области машинного обучения Azure из Azure CLI или пакета SDK Машинного обучения Azure версии 2. Проверка подлинности в рабочей области Машинное обучение Azure основана на Entra ID Microsoft для большинства операций. Как правило, для подключения к рабочей области можно использовать один из четырех рабочих процессов проверки подлинности.
Интерактивный: вы используете свою учетную запись в Microsoft Entra ID для непосредственной аутентификации или получения токена, используемого для аутентификации. Интерактивная проверка подлинности используется во время экспериментов и последовательной разработки. Интерактивная проверка подлинности позволяет управлять доступом к ресурсам (например, веб-службе) отдельно для каждого пользователя.
Учетная запись службы: вы создаете учетную запись службы в каталоге Microsoft Entra ID и используете ее для аутентификации или получения токена. Субъект-служба используется для проверки подлинности автоматизированного процесса в службе, не требуя взаимодействия с пользователем. Например, сценарий непрерывной интеграции и развертывания, который проводит обучение и тестирование модели при каждом изменении кода обучения.
Сеанс Azure CLI. Для проверки подлинности используется активный сеанс Azure CLI. Расширение Azure CLI для Машинного обучения (расширение
mlили CLI версии 2) — это средство командной строки для работы с Машинным обучением Azure. Вы можете входить в Azure с помощью Azure CLI на локальной рабочей станции, не сохраняя учетные данные в коде Python и не запрашивая проверку подлинности пользователя. Аналогичным образом можно повторно использовать те же скрипты в рамках потоков непрерывной интеграции и развертывания, при проверке подлинности Azure CLI с помощью идентификатора участника-службы.Управляемое удостоверение. При использовании пакета SDK для Машинного обучения Azure на вычислительном экземпляре или на виртуальной машине Azure можно использовать управляемое удостоверение для Azure. Этот рабочий процесс позволяет виртуальной машине подключаться к рабочей области с помощью управляемого удостоверения без хранения учетных данных в коде Python или запроса проверки подлинности у пользователя. Вычислительные кластеры Машинного обучения Azure можно настроить для использования управляемого удостоверения для доступа к рабочей области во время обучения моделей.
Независимо от используемого рабочего процесса проверки подлинности, для определения уровня доступа (авторизации), разрешенного для ресурсов, используется управление доступом на основе ролей Azure (Azure RBAC). Например, администратор или процесс автоматизации может иметь доступ к созданию вычислительного экземпляра, но не использовать его. Хотя специалист по обработке и анализу данных может его использовать, удалить или создать он не может. Дополнительные сведения см. в разделе Управление рабочей областью Машинного обучения Azure.
Условный доступ Microsoft Entra можно использовать для дальнейшего управления или ограничения доступа к рабочей области для каждого рабочего процесса проверки подлинности. Например, администратор может разрешить доступ к рабочей области только с управляемых устройств.
Предварительные условия
Python 3.10 или более поздней версии.
Создайте рабочую область Машинного обучения Azure.
Настройте среду разработки или используйте вычислительный экземпляр Машинное обучение Azure и установите Машинное обучение Azure SDK версии 2.
Установите интерфейс командной строки Azure.
Microsoft Entra ID
Все рабочие процессы проверки подлинности для рабочей области зависят от идентификатора Microsoft Entra. Если вы хотите, чтобы пользователи прошли проверку подлинности с помощью отдельных учетных записей, у них должны быть учетные записи в идентификаторе Microsoft Entra. Если вы хотите использовать учетные записи служб, они должны существовать в Microsoft Entra ID. Управляемые идентификаторы также являются возможностью Microsoft Entra ID.
Дополнительные сведения об идентификаторе Microsoft Entra см. в разделе "Что такое проверка подлинности Microsoft Entra".
После создания учетных записей Microsoft Entra см. статью "Управление доступом к рабочей области Машинное обучение Azure", чтобы предоставить им доступ к рабочей области и выполнять другие операции в Машинное обучение Azure.
Использование интерактивной проверки подлинности
ОБЛАСТЬ ПРИМЕНЕНИЯ:
Пакет SDK для Python azure-ai-ml версии 2 (current)
Интерактивная проверка подлинности использует пакет Идентификации Azure для Python. Существует несколько способов интерактивной проверки подлинности, однако большинство примеров используются DefaultAzureCredential , так как он обрабатывает большинство сценариев проверки подлинности. Класс DefaultAzureCredential использует несколько подходов (EnvironmentCredential, ManagedIdentityCredential, SharedTokenCacheCredential, VisualStudioCodeCredential, AzureCliCredential, AzurePowerShellCredential), поочередно применяя их и останавливаясь, как только один из них выдает маркер. Дополнительные сведения см. в справочных сведениях о классе DefaultAzureCredential.
Следующий код является примером использования DefaultAzureCredential для проверки подлинности. В случае сбоя проверки подлинности с помощью DefaultAzureCredential используется резервная проверка подлинности через веб-браузер.
from azure.identity import DefaultAzureCredential, InteractiveBrowserCredential
try:
credential = DefaultAzureCredential()
# Check if given credential can get token successfully.
credential.get_token("https://management.azure.com/.default")
except Exception as ex:
# Fall back to InteractiveBrowserCredential in case DefaultAzureCredential not work
# This will open a browser page for
credential = InteractiveBrowserCredential()
После создания объекта учетных данных класс MLClient используется для подключения к рабочей области. Например, в следующем коде используется метод from_config() для загрузки сведений о подключении:
from azure.ai.ml import MLClient
try:
ml_client = MLClient.from_config(credential=credential)
except Exception as ex:
# NOTE: Update following workspace information to contain
# your subscription ID, resource group name, and workspace name
client_config = {
"subscription_id": "<SUBSCRIPTION_ID>",
"resource_group": "<RESOURCE_GROUP>",
"workspace_name": "<AZUREML_WORKSPACE_NAME>",
}
# write and reload from config file
import json, os
config_path = "../.azureml/config.json"
os.makedirs(os.path.dirname(config_path), exist_ok=True)
with open(config_path, "w") as fo:
fo.write(json.dumps(client_config))
ml_client = MLClient.from_config(credential=credential, path=config_path)
print(ml_client)
Настройка сервисного принципала
Чтобы использовать учетную запись службы, необходимо сначала ее создать. Затем предоставьте ей доступ к рабочей области. Как упоминалось ранее, управление доступом в Azure на основе ролей (Azure RBAC) используется для контроля доступа, поэтому необходимо также решить, какой доступ следует предоставить служебному принципалу.
Внимание
При использовании учетной записи службы предоставьте ей минимальный доступ, необходимый для выполнения задачи. Например, доступ владельцу или участнику субъекта службы не может быть предоставлен, если он используется только для чтения токена доступа для веб-развертывания.
Причина предоставления минимального доступа заключается в том, что субъект-служба использует пароль для проверки подлинности, а пароль может храниться как часть скрипта автоматизации. Если пароль стал доступен злоумышленникам, минимальный доступ, необходимый для конкретной задачи, сводит к минимуму возможность злонамеренного использования службы.
Самый простой способ создать учетную запись службы и предоставить доступ к рабочей области — с помощью Azure CLI. Чтобы создать служебный принципал и предоставить ему доступ к рабочей области, выполните следующие действия.
Примечание.
Для выполнения всех этих действий требуются разрешения администратора подписки.
Пройдите аутентификацию в подписке Azure.
az loginЕсли интерфейс командной строки может открыть браузер по умолчанию, он выполняет это и загружает страницу входа. Или откройте браузер и выполните инструкции из командной строки. В инструкции входит переход к https://aka.ms/devicelogin и ввод кода авторизации.
Если у вас несколько подписок Azure, вы можете использовать команду
az account set -s <subscription name or ID>для задания подписки. См. дополнительные сведения в статье Use multiple Azure subscriptions (Использование нескольких подписок Azure).Другие методы аутентификации см. в статье Вход с помощью Azure CLI.
Создайте субъект-службу. В следующем примере создается учетная запись с именем 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" }Получите сведения для субъекта-службы, используя значение
clientId, возвращенное на предыдущем шаге:az ad sp show --id your-client-idНиже приведен упрощенный пример выходных данных JSON из команды. Запишите значение в поле
objectId, поскольку оно понадобится на следующем шаге.{ "accountEnabled": "True", "addIns": [], "appDisplayName": "ml-auth", ... ... ... "objectId": "your-sp-object-id", "objectType": "ServicePrincipal" }Сведения о предоставлении доступа к рабочей области и другим ресурсам, используемым Машинным обучением Azure, см. в следующих статьях:
Внимание
Доступ владельца позволяет служебному принципалу выполнять практически любую операцию в вашем рабочем пространстве. Он используется в этом документе, чтобы продемонстрировать, как предоставить доступ. В производственной среде Майкрософт рекомендует предоставить сервисному принципалу минимальный доступ, необходимый для выполнения запланированной для него роли. Сведения о создании пользовательской роли с доступом, необходимым для вашего сценария, см. в разделе Управление доступом к рабочей области Машинного обучения Azure.
Настройка управляемого удостоверения
Внимание
Управляемое удостоверение поддерживается только при использовании пакета SDK для Машинное обучение Azure из виртуальной машины Azure, из вычислительного кластера Машинное обучение Azure или вычислительного экземпляра.
Управляемое удостоверение для виртуальной машины
Включите назначенное системой управляемое удостоверение для ресурсов Azure на виртуальной машине.
Перейдите в свою рабочую область на портале Azure и выберите Контроль доступа (IAM).
Выберите Добавить и Добавить назначение ролей, чтобы открыть страницу для добавления назначения роли.
Выберите роль, которую требуется назначить управляемому удостоверению. Например, ридер. Подробные инструкции см. в статье Назначение ролей Azure с помощью портала Microsoft Azure.
Управляемое удостоверение с вычислительным кластером
Дополнительные сведения см. в разделе Настройка управляемого удостоверения для вычислительного кластера.
Управляемое удостоверение с вычислительным экземпляром
Для получения более подробной информации см. "Настройка управляемой идентификации для вычислительного экземпляра".
Использование аутентификации субъекта-службы
ОБЛАСТЬ ПРИМЕНЕНИЯ:
Пакет SDK для Python azure-ai-ml версии 2 (current)
При проверке подлинности с помощью учетной записи службы используется пакет Azure Identity для Python. Класс DefaultAzureCredential ищет следующие переменные среды и использует их значения при аутентификации в качестве принципала службы.
-
AZURE_CLIENT_ID— идентификатор клиента, возвращаемый при создании основной службы. -
AZURE_TENANT_ID— идентификатор арендатора, возвращаемый при создании служебного субъекта. -
AZURE_CLIENT_SECRET— пароль или учетные данные, созданные для сервисного принципала.
Совет
Во время разработки рассмотрите возможность использования пакета python-dotenv для задания этих переменных среды. Python-dotenv загружает переменные среды из файлов .env. Стандартный файл .gitignore для Python автоматически исключает файлы .env, чтобы их не добавляли в любой репозиторий GitHub в ходе разработки.
В следующем примере демонстрируется использование python-dotenv для загрузки переменных среды из файла .env и последующее использование DefaultAzureCredential для создания объекта учетных данных:
from dotenv import load_dotenv
if ( os.environ['ENVIRONMENT'] == 'development'):
print("Loading environment variables from .env file")
load_dotenv(".env")
from azure.identity import DefaultAzureCredential
credential = DefaultAzureCredential()
# Check if given credential can get token successfully.
credential.get_token("https://management.azure.com/.default")
После создания объекта учетных данных класс MLClient используется для подключения к рабочей области. Например, в следующем коде используется метод from_config() для загрузки сведений о подключении:
try:
ml_client = MLClient.from_config(credential=credential)
except Exception as ex:
# NOTE: Update following workspace information to contain
# your subscription ID, resource group name, and workspace name
client_config = {
"subscription_id": "<SUBSCRIPTION_ID>",
"resource_group": "<RESOURCE_GROUP>",
"workspace_name": "<AZUREML_WORKSPACE_NAME>",
}
# write and reload from config file
import json, os
config_path = "../.azureml/config.json"
os.makedirs(os.path.dirname(config_path), exist_ok=True)
with open(config_path, "w") as fo:
fo.write(json.dumps(client_config))
ml_client = MLClient.from_config(credential=credential, path=config_path)
print(ml_client)
Субъект-службу также можно использовать для аутентификации в REST API для Машинного обучения Azure. Вы используете поток предоставления учетных данных клиента Microsoft Entra ID
Внимание
Если в настоящее время для получения учетных данных вы используете библиотеку проверки подлинности Azure Active Directory (ADAL), рекомендуется выполнить миграцию в библиотеку проверки подлинности Майкрософт (MSAL). Поддержка ADAL закончилась 30 июня 2023 г.
Дополнительные сведения и примеры проверки подлинности с помощью MSAL см. в следующих статьях:
- JavaScript — Миграция приложения JavaScript из ADAL.js в MSAL.js.
- Node.js — Миграция приложения Node.js с Библиотеки проверки подлинности Майкрософт на MSAL.
- Python — Руководство по миграции с Библиотеки проверки подлинности Майкрософт на MSAL для Python.
Используйте аутентификацию с помощью управляемой идентичности
ОБЛАСТЬ ПРИМЕНЕНИЯ:
Пакет SDK для Python azure-ai-ml версии 2 (current)
При проверке подлинности с помощью управляемого удостоверения используется пакет Идентификации Azure для Python. Чтобы авторизоваться в рабочем пространстве с виртуальной машины или вычислительного кластера, для которого настроено управляемое удостоверение, используйте класс DefaultAzureCredential. Этот класс автоматически определяет, используется ли управляемое удостоверение, и использует управляемое удостоверение для проверки подлинности в службах Azure.
В следующем примере демонстрируется использование класса DefaultAzureCredential для создания объекта учетных данных и последующее использование класса MLClient для подключения к рабочей области:
from azure.identity import DefaultAzureCredential
credential = DefaultAzureCredential()
# Check if given credential can get token successfully.
credential.get_token("https://management.azure.com/.default")
try:
ml_client = MLClient.from_config(credential=credential)
except Exception as ex:
# NOTE: Update following workspace information to contain
# your subscription ID, resource group name, and workspace name
client_config = {
"subscription_id": "<SUBSCRIPTION_ID>",
"resource_group": "<RESOURCE_GROUP>",
"workspace_name": "<AZUREML_WORKSPACE_NAME>",
}
# write and reload from config file
import json, os
config_path = "../.azureml/config.json"
os.makedirs(os.path.dirname(config_path), exist_ok=True)
with open(config_path, "w") as fo:
fo.write(json.dumps(client_config))
ml_client = MLClient.from_config(credential=credential, path=config_path)
print(ml_client)
Использование условного доступа
Администратор может применять политики условного доступа Microsoft Entra для пользователей, входящих в рабочую область. Например, можно включить двухфакторную проверку подлинности или разрешить вход только с управляемых устройств. Ниже приведены идентификаторы приложений для условного доступа:
| Идентификатор приложения | Имя. | Примечание. |
|---|---|---|
| d7304df8-741f-47d3-9bc2-df0e24e2071f | веб-приложение для Машинное обучение Azure Workbench | Студия машинного обучения Azure |
| cb2ff863-7f30-4ced-ab89-a00194bcf6d9 | Приложение Microsoft Foundry | Литейный завод |
Проверка субъекта-службы
Перед добавлением политики условного доступа убедитесь, что идентификатор приложения указан в разделе корпоративных приложений портал Azure:
Внимание
Чтобы выполнить действия, описанные в этом разделе, необходимо иметь идентификатор Microsoft Entra ID P2. Дополнительные сведения см. в разделе лицензирование Microsoft Entra.
Найдите корпоративные приложения в поле поиска в верхней части портала и выберите запись корпоративного приложения.
В корпоративных приложениях используйте поле поиска по имени приложения или идентификатору объекта для поиска записи, которую вы хотите использовать с условным доступом. Если появится запись, субъект-служба уже существует для идентификатора приложения. Пропустите остальные действия, описанные в этом разделе, и перейдите к разделу "Добавить условный доступ ".
Внимание
Единственным фильтром должно быть идентификатор приложения, начинающийся с. Удалите любой другой фильтр, который может присутствовать.
Если запись не отображается, используйте следующий командлет Azure PowerShell для создания субъекта-службы для идентификатора приложения:
New-AzAdServicePrincipal -ApplicationId "application-ID"Например,
New-AzADServicePrincipal -ApplicationId "d7304df8-741f-47d3-9bc2-df0e24e2071f".После создания служебной учетной записи вернитесь в корпоративные приложения и убедитесь, что теперь можно найти идентификатор приложения. Список идентификаторов можно найти в разделе "Использование условного доступа ".
Добавление условного доступа
Чтобы использовать условный доступ, назначьте политику условного доступа идентификатору приложения. Если приложение не отображается в Условном доступе, выполните действия, описанные в разделе «Проверка основного объекта службы».