Примечание.
Для доступа к этой странице требуется авторизация. Вы можете попробовать войти или изменить каталоги.
Для доступа к этой странице требуется авторизация. Вы можете попробовать изменить каталоги.
ОБЛАСТЬ ПРИМЕНЕНИЯ:
Расширение Azure CLI ml версии 2 (текущая)
Python SDK azure-ai-ml версии 2 (текущая)
Машинное обучение Azure состоит из нескольких служб Azure. Несколько методов поддерживают проверку подлинности между Машинным обучением Azure и службами, на которые она используется.
- Рабочая область Машинного обучения Azure использует управляемое удостоверение для взаимодействия с другими службами. По умолчанию это удостоверение является системно назначаемым управляемым удостоверением. Вместо этого можно использовать управляемое удостоверение, назначаемое пользователем.
- Машинное обучение Azure использует реестр контейнеров Azure (ACR) для хранения образов Docker, используемых для обучения и развертывания моделей. Если вы разрешаете машинному обучению Azure автоматически создавать ACR, она включает учетную запись администратора.
- Вычислительный кластер Машинного обучения Azure использует управляемое удостоверение для получения сведений о подключении для хранилищ данных из Azure Key Vault и извлечения образов Docker из ACR. Вы также можете настроить доступ на основе удостоверений к хранилищам данных, использующим управляемое удостоверение вычислительного кластера.
- Доступ к данным может выполняться по нескольким путям в зависимости от службы хранилища данных и конфигурации. Например, аутентификация в хранилище данных может использовать ключ учетной записи, токен, принципал безопасности, управляемую идентификацию или идентификацию пользователя.
- Управляемые сетевые конечные точки могут использовать управляемое удостоверение для доступа к ресурсам Azure при выполнении вывода. Дополнительные сведения см. в статье "Доступ к ресурсам Azure" из веб-конечной точки.
Предпосылки
Рабочая область Машинного обучения Azure. Инструкции по созданию рабочей области см. в разделе "Создание рабочей области".
Интерфейс командной строки Azure и расширение
mlили Python SDK v2 для Azure Machine Learning:Чтобы установить Azure CLI и расширение, см. статью
ml".Примеры в этой статье предполагают, что вы используете оболочку Bash или совместимую с ней. Например, можно использовать оболочку в системе Linux или подсистеме Windows для Linux.
Чтобы назначить роли, у вашего аккаунта в подписке Azure должна быть роль Оператора управляемого удостоверения или другая роль, которая предоставляет необходимые действия (например, Владелец).
Вы должны иметь опыт создания управляемых удостоверений и работы с ними.
Роли RBAC по сценариям
В зависимости от вашего сценария требуются определенные роли Azure RBAC:
| Scenario | Обязательные роли |
|---|---|
| Рабочая область с идентификацией, назначенной пользователем | Участник рабочей области, участник данных BLOB-объектов хранилища, администратор Key Vault или политики доступа к хранилищу ключей, участник ACR |
| Доступ вычислительного кластера к хранилищу | Чтение данных BLOB-объектов хранилища (минимум) на учетной записи хранения |
| Идентификационный доступ к данным | Чтение данных BLOB-объектов в Azure Blob Storage, Azure Data Lake Storage Gen1 или Gen2. |
| Извлечение изображений из ACR | ACRPull в реестре контейнеров |
| Доступ к частному ACR | ACRPull в частном контейнерном реестре |
Дополнительные сведения о назначении ролей см. в статье "Управление доступом к рабочим областям Машинного обучения Azure".
Выбор метода проверки подлинности
В следующей таблице приведены сведения об использовании каждого подхода проверки подлинности:
| Scenario | Рекомендованная идентичность | Альтернатива |
|---|---|---|
| Рабочая область с доступом к хранилищу, Key Vault и ACR | Назначаемый системой управляемый идентификатор | Управляемая идентификация, назначаемая пользователем |
| Вычислительный кластер в заданиях обучения | Управляемое удостоверение вычислений | Идентификация пользователя (через настройку задачи) |
| Инференсирование в кластере Kubernetes | Управляемое удостоверение конечной точки | Назначаемый системой идентификатор |
| Интерактивный доступ к данным (записные книжки, студия) | Удостоверение пользователя | Управляемое удостоверение рабочей области |
| Реестр контейнеров Azure без пользователя администратора | Назначаемый системой управляемый идентификатор | Управляемая идентификация, назначаемая пользователем |
| Совместное использование ресурсов несколькими рабочими пространствами | Управляемая идентичность, назначенная пользователем, с изоляцией данных | Удостоверение, назначаемое системой (не рекомендуется) |
Ограничения
Прежде чем настраивать проверку подлинности, помните об этих ограничениях:
- Изменения типов удостоверений: После создания рабочей области с удостоверениями, назначенными системой, и удостоверениями, назначенными пользователем (SAI+UAI), вы не можете изменить их обратно только на назначенные системой удостоверения (SAI).
- Доступ между клиентами: межтенантный доступ к учетным записям хранения не поддерживается. Если для вашего сценария требуется межтенантный доступ, создайте запрос в службу поддержки Azure для получения помощи с пользовательским кодовым решением.
- Удостоверение вычислительного кластера: вычислительные кластеры Машинного обучения Azure поддерживают только одно назначаемое системой удостоверение или несколько удостоверений , назначенных пользователем, а не одновременно.
- Удостоверение кластера Kubernetes: кластеры Kubernetes машинного обучения Azure поддерживают только одно назначаемое системой удостоверение или одно удостоверение, назначаемое пользователем, а не одновременно.
- Неизменяемость идентификатора конечной точки: идентификатор для онлайновой конечной точки неизменяем. Его можно связать с удостоверением, назначенным системой (по умолчанию) или удостоверением, назначенным пользователем во время создания, но после создания конечной точки его изменить нельзя.
- Время изоляции данных: можно задать параметр изоляции данных только при создании рабочей области. Вы не можете включить или отключить его после создания рабочей области.
Проверка настройки
После настройки управляемых удостоверений убедитесь, что конфигурация работает правильно.
ПРИМЕНЯЕТСЯ К:
Расширение Azure CLI ML версии 2 (текущий)
# Verify workspace identity
az ml workspace show --name <workspace-name> --resource-group <resource-group> --query identity
Ожидаемые выходные данные: объект JSON, показывающий тип удостоверения (SystemAssigned, UserAssigned или SystemAssigned,UserAssigned) и идентификаторы субъектов.
# Verify compute cluster identity
az ml compute show --name <compute-name> --resource-group <resource-group> --workspace-name <workspace-name> --query identity
Ожидаемые выходные данные: объект JSON, показывающий конфигурацию управляемого удостоверения для вычислительного кластера.
Типы идентификации рабочего пространства
Рабочая область Машинного обучения Azure использует управляемое удостоверение для взаимодействия с другими службами. Машинное обучение Azure поддерживает несколько типов удостоверений.
| Тип управляемого удостоверения | Создание назначения ролей | Цель |
|---|---|---|
| Назначаемое системой (SAI) | Управление корпорацией Майкрософт | Жизненный цикл, привязанный к ресурсу; использование одного ресурса; простой способ приступить к работе |
| Назначаемое системой +назначаемое пользователем (SAI+UAI) | Управление вами | Независимый жизненный цикл для удостоверения, назначаемого пользователем; использование с несколькими источниками; управляет наименее привилегированным доступом; доступ к данным в заданиях обучения. |
После создания рабочей области с типом удостоверения SAI его можно обновить до SAI+UAI. Вы не можете обновить рабочую область из SAI+UAI в SAI. Вы можете назначить несколько пользовательских идентификаторов в ту же рабочую область.
Управляемая идентификация, назначаемая пользователем
Рабочая область
Управляемое удостоверение, назначаемое пользователем, можно добавить при создании рабочей области Машинного обучения Azure на портале Azure. Используйте следующие действия при создании рабочей области:
- На странице "Основы " выберите учетную запись хранения Azure, реестр контейнеров Azure и Azure Key Vault, которую вы хотите использовать с рабочей областью.
- На странице "Удостоверение" выберите назначаемое пользователем удостоверение , а затем выберите управляемое удостоверение для использования.
Для вашего пользовательского управляемого удостоверения в рабочей области Машинного обучения Azure для доступа к данным связанных с рабочей областью ресурсов требуются следующие назначения ролей Azure RBAC.
| Ресурс | Разрешение |
|---|---|
| Рабочая область Машинного обучения Azure | Вкладчик |
| Служба хранилища Azure | Участник (плоскость управления) + Участник хранения данных BLOB-объектов (плоскость данных, необязательная, для включения предварительного просмотра данных в студии машинного обучения Azure) |
| Azure Key Vault (при использовании модели разрешений RBAC) | Участник (плоскость управления) + администратор Key Vault (плоскость данных) |
| Azure Key Vault (при использовании модели разрешений политик доступа) | Участник + любые разрешения политики доступа, кроме операций очистки |
| Реестр контейнеров Azure | Вкладчик |
| Azure Application Insights | Вкладчик |
Для автоматического создания назначений ролей на управляемом удостоверении, назначаемого пользователем, можно использовать этот шаблон ARM.
Подсказка
Для рабочей области с управляемыми клиентом ключами для шифрования можно передавать назначаемое пользователем управляемое удостоверение для проверки подлинности из хранилища в Key Vault. Используйте параметры user-assigned-identity-for-cmk-encryption (CLI) или user_assigned_identity_for_cmk_encryption (SDK) для передачи управляемого удостоверения. Это управляемое удостоверение может совпадать с основным назначаемым пользователем управляемым удостоверением рабочей области или отличаться от него.
Найдите идентификатор ресурса управляемого пользователем удостоверения
При настройке управляемого удостоверения, назначаемого пользователем (UAI), вам потребуется его идентификатор ресурса. Используйте один из следующих методов, чтобы найти его:
Портал Azure: Перейдите к ресурсу управляемого удостоверения, выберите Свойства в меню слева и скопируйте значение Идентификатора ресурса.
Azure CLI: выполните следующую команду:
az identity show --name <identity-name> --resource-group <resource-group> --query id --output tsv
Идентификатор ресурса соответствует следующему формату:
/subscriptions/<subscription-id>/resourceGroups/<resource-group>/providers/Microsoft.ManagedIdentity/userAssignedIdentities/<identity-name>
Чтобы создать рабочую область с несколькими идентичностями, назначенными пользователями, используйте один из следующих методов:
ПРИМЕНЯЕТСЯ К:
Расширение Azure CLI ML версии 2 (текущий)
az ml workspace create -f workspace_creation_with_multiple_UAIs.yml --subscription <subscription ID> --resource-group <resource group name> --name <workspace name>
В качестве примера приведено содержимое файла workspace_creation_with_multiple_UAIs.yml:
location: <region name>
identity:
type: user_assigned
user_assigned_identities:
# Format: /subscriptions/<sub-id>/resourceGroups/<rg>/providers/Microsoft.ManagedIdentity/userAssignedIdentities/<name>
'<UAI resource ID 1>': {}
'<UAI resource ID 2>': {}
storage_account: <storage account resource ID>
key_vault: <key vault resource ID>
image_build_compute: <compute (virtual machine) resource ID>
primary_user_assigned_identity: <one of the UAI resource IDs in the above list>
Чтобы обновить назначенные пользователем удостоверения для рабочей области, включая добавление нового или удаление существующих удостоверений, используйте один из следующих методов:
ПРИМЕНЯЕТСЯ К:
Расширение Azure CLI ML версии 2 (текущий)
az ml workspace update -f workspace_update_with_multiple_UAIs.yml --subscription <subscription ID> --resource-group <resource group name> --name <workspace name>
В следующем примере показано содержимое workspace_update_with_multiple_UAIs.yml:
identity:
type: user_assigned
user_assigned_identities:
# Format: /subscriptions/<sub-id>/resourceGroups/<rg>/providers/Microsoft.ManagedIdentity/userAssignedIdentities/<name>
'<UAI resource ID 1>': {}
'<UAI resource ID 2>': {}
primary_user_assigned_identity: <one of the UAI resource IDs in the above list>
Подсказка
Чтобы добавить новый UAI, укажите новый идентификатор UAI в разделе user_assigned_identities вместе с существующими UAI. Необходимо передать все существующие идентификаторы UAI.
Чтобы удалить один или несколько существующих идентификаторов UAI, добавьте идентификаторы UAI, которые вы хотите сохранить в user_assigned_identities разделе. Идентификаторы UAI, которые вы не включаете, удаляются.
Добавить управляемое удостоверение, назначаемое пользователем, в рабочую область вдобавок к системному удостоверению
В некоторых сценариях может потребоваться использовать управляемое удостоверение, назначаемое пользователем, помимо удостоверения рабочей области, назначаемого системой по умолчанию. Чтобы добавить управляемое удостоверение, назначаемое пользователем, без изменения существующего удостоверения рабочей области, выполните следующие действия.
Создайте управляемое удостоверение, назначаемое пользователем. Сохраните ID для управляемой идентичности, которую вы создаёте.
Чтобы подключить управляемое удостоверение к рабочей области, создайте YAML-файл, указывающий удостоверение. В следующем примере показано содержимое ФАЙЛА YAML. Замените заполнители
<TENANT_ID>,<RESOURCE_GROUP>и<USER_MANAGED_ID>вашими значениями.identity: type: system_assigned,user_assigned tenant_id: <TENANT_ID> user_assigned_identities: '/subscriptions/<SUBSCRIPTION_ID/resourceGroups/<RESOURCE_GROUP>/providers/Microsoft.ManagedIdentity/userAssignedIdentities/<USER_MANAGED_ID>': {}Используйте команду Azure CLI
az ml workspace updateдля обновления рабочей области. Укажите ФАЙЛ YAML из предыдущего шага с помощью--fileпараметра. В следующем примере показано, как выглядит эта команда:az ml workspace update --resource-group <RESOURCE_GROUP> --name <WORKSPACE_NAME> --file <YAML_FILE_NAME>.yaml
Изоляция данных для совместно используемых ресурсов
Если несколько рабочих областей совместно используют одни и те же связанные ресурсы (учетная запись хранения, хранилище ключей или реестр контейнеров), включите изоляцию данных, чтобы предотвратить конфликты именования и убедиться, что каждая рабочая область может получить доступ только к собственным данным. Флаг enableDataIsolation настраивает хранение и доступ артефактов рабочей области в общих ресурсах.
Это важно
Параметр изоляции данных можно задать только при создании рабочей области. Вы не можете включить или отключить его после создания рабочей области.
Эффекты включения изоляции данных
При включении изоляции данных рабочая область применяет следующие конфигурации:
| Ресурс | Поведение |
|---|---|
| Учетная запись хранения | Имена контейнеров префиксируются с помощью GUID рабочей области (например, {workspaceGUID}-azureml-blobstore). Управляемое удостоверение рабочей области получает ролевое назначение на плоскости данных с условием управления доступом на основе атрибутов Azure (ABAC), которое ограничивает доступ только к определенным контейнерам рабочей области. |
| Хранилище ключей | Имена секретов префиксируются с помощью GUID рабочей области, чтобы изолировать секреты между рабочими областями, которыми предоставляется общий доступ к одному хранилищу ключей. |
| Реестр контейнеров | Имена образов Docker имеют префикс с GUID рабочей области для изоляции образов между рабочими областями, делящими один реестр. |
Поведение по умолчанию по типу рабочей области
Машинное обучение Azure поддерживает различные типы рабочих областей для различных шаблонов организации:
- по умолчанию: автономная рабочая область для отдельных проектов или команд. Этот тип рабочей области является стандартным типом рабочей области.
- концентратор: центральная рабочая область, которая управляет общими ресурсами, политиками и подключениями для нескольких связанных проектов. Дополнительные сведения см. в рабочих областях центра.
- проект: упрощенная рабочая область, наследующая ресурсы и параметры из родительской рабочей области концентратора.
Значение по умолчанию для изоляции данных зависит от типа рабочей области:
| Тип рабочей области | По умолчанию для изоляции данных |
|---|---|
hub |
Включен |
project |
Включено (наследуется от концентратора) |
default |
Disabled |
Когда следует включить изоляцию данных
Включите изоляцию данных, если:
- Несколько рабочих областей используют одну учетную запись хранения, хранилище ключей или реестр контейнеров.
- Необходимо предотвратить конфликты именования артефактов (например, образы или секреты Docker), созданных с одинаковым именем в рабочих областях.
- Вам требуется более строгий контроль доступа, чтобы идентификаторы рабочей области имели доступ только к собственным данным.
Для рабочих областей концентраторов и проектов включите изоляцию данных по умолчанию для поддержки общей модели ресурсов. Дополнительные сведения см. в статье "Что такое рабочая область Центра машинного обучения Azure"?
Включение изоляции данных при создании рабочей области
ПРИМЕНЯЕТСЯ К:
Расширение Azure CLI ML версии 2 (текущий)
az ml workspace create --name <WORKSPACE_NAME> \
--resource-group <RESOURCE_GROUP> \
--enable-data-isolation
Кроме того, укажите изоляцию данных в файле конфигурации YAML:
$schema: https://azuremlschemas.azureedge.net/latest/workspace.schema.json
name: my-workspace
location: eastus
enable_data_isolation: true
storage_account: /subscriptions/<SUBSCRIPTION_ID>/resourceGroups/<RESOURCE_GROUP>/providers/Microsoft.Storage/storageAccounts/<STORAGE_ACCOUNT>
key_vault: /subscriptions/<SUBSCRIPTION_ID>/resourceGroups/<RESOURCE_GROUP>/providers/Microsoft.KeyVault/vaults/<KEY_VAULT>
container_registry: /subscriptions/<SUBSCRIPTION_ID>/resourceGroups/<RESOURCE_GROUP>/providers/Microsoft.ContainerRegistry/registries/<CONTAINER_REGISTRY>
Затем создайте рабочую область:
az ml workspace create --file workspace.yml --resource-group <RESOURCE_GROUP>
Вычислительный кластер
Замечание
Вычислительные кластеры машинного обучения Azure поддерживают только одно назначенное системой удостоверение или несколько определяемых пользователем удостоверений при условии использования каждого из этих вариантов по отдельности.
Управляемое удостоверение по умолчанию — это управляемое удостоверение, назначаемое системой, или первое управляемое удостоверение, назначаемое пользователем.
Во время запуска учетная запись имеет два программных приложения:
Система использует удостоверение для настройки подключений хранилища пользователя, реестра контейнеров и хранилищ данных.
- В этом случае система использует управляемое по умолчанию удостоверение.
Вы используете идентификатор для доступа к ресурсам из кода отправленного задания.
- В этом случае укажите client_id , соответствующие управляемому удостоверению, которое вы хотите использовать для получения учетных данных.
- Кроме того, получите идентификатор клиента, назначаемого пользователем, с помощью переменной среды DEFAULT_IDENTITY_CLIENT_ID .
Например, чтобы получить токен для хранилища данных с по умолчанию управляемым удостоверением:
import os from azure.identity import ManagedIdentityCredential client_id = os.environ.get('DEFAULT_IDENTITY_CLIENT_ID') credential = ManagedIdentityCredential(client_id=client_id) token = credential.get_token('https://storage.azure.com/')Ожидаемый результат: возвращает маркер доступа для службы хранилища Azure. Если
DEFAULT_IDENTITY_CLIENT_IDне задано, вызов завершается ошибкой переменной среды.Справочник: ManagedIdentityCredential
Чтобы настроить вычислительный кластер с управляемым удостоверением, используйте один из следующих методов:
ПРИМЕНЯЕТСЯ К:
Расширение Azure CLI ML версии 2 (текущий)
az ml compute create -f create-cluster.yml
В следующем примере показано содержимое create-cluster.yml:
$schema: https://azuremlschemas.azureedge.net/latest/amlCompute.schema.json
name: basic-example
type: amlcompute
size: STANDARD_DS3_v2
min_instances: 0
max_instances: 2
idle_time_before_scale_down: 120
identity:
type: user_assigned
user_assigned_identities:
- resource_id: "identity_resource_id"
Для сравнения в следующем примере используется файл YAML, создающий кластер, использующий управляемое удостоверение, назначаемое системой:
$schema: https://azuremlschemas.azureedge.net/latest/amlCompute.schema.json
name: basic-example
type: amlcompute
size: STANDARD_DS3_v2
min_instances: 0
max_instances: 2
idle_time_before_scale_down: 120
identity:
type: system_assigned
Если у вас есть существующий вычислительный кластер, вы можете переключаться между удостоверением, управляемым пользователем, и удостоверением, управляемым системой. В следующих примерах показано, как изменить конфигурацию:
Пользовательское управляемое удостоверение
export MSI_NAME=my-cluster-identity
export COMPUTE_NAME=mycluster-msi
does_compute_exist()
{
if [ -z $(az ml compute show -n $COMPUTE_NAME --query name) ]; then
echo false
else
echo true
fi
}
echo "Creating MSI $MSI_NAME"
# Get the resource id of the identity
IDENTITY_ID=$(az identity show --name "$MSI_NAME" --query id -o tsv | tail -n1 | tr -d "[:cntrl:]" || true)
if [[ -z $IDENTITY_ID ]]; then
IDENTITY_ID=$(az identity create -n "$MSI_NAME" --query id -o tsv | tail -n1 | tr -d "[:cntrl:]")
fi
echo "MSI created: $MSI_NAME"
sleep 15 # Let the previous command finish: https://github.com/Azure/azure-cli/issues/8530
echo "Checking if compute $COMPUTE_NAME already exists"
if [ "$(does_compute_exist)" == "true" ]; then
echo "Skipping, compute: $COMPUTE_NAME exists"
else
echo "Provisioning compute: $COMPUTE_NAME"
az ml compute create --name "$COMPUTE_NAME" --type amlcompute --identity-type user_assigned --user-assigned-identities "$IDENTITY_ID"
fi
az ml compute update --name "$COMPUTE_NAME" --identity-type user_assigned --user-assigned-identities "$IDENTITY_ID"
Системно назначенная управляемая идентичность
export COMPUTE_NAME=mycluster-sa
does_compute_exist()
{
if [ -z $(az ml compute show -n $COMPUTE_NAME --query name) ]; then
echo false
else
echo true
fi
}
echo "Checking if compute $COMPUTE_NAME already exists"
if [ "$(does_compute_exist)" == "true" ]; then
echo "Skipping, compute: $COMPUTE_NAME exists"
else
echo "Provisioning compute: $COMPUTE_NAME"
az ml compute create --name "$COMPUTE_NAME" --type amlcompute
fi
az ml compute update --name "$COMPUTE_NAME" --identity-type system_assigned
Вычислительные ресурсы кластера Kubernetes
Замечание
Кластеры Kubernetes машинного обучения Azure поддерживают только одно назначаемое системой удостоверение или одно удостоверение, назначаемое пользователем, а не одновременно.
Управляемое удостоверение по умолчанию — это управляемое удостоверение, назначаемое системой, или первое управляемое удостоверение, назначаемое пользователем.
Во время запуска учетная запись имеет два программных приложения:
Система использует удостоверение для настройки подключений хранилища пользователя, реестра контейнеров и хранилищ данных.
- В этом случае система использует управляемое по умолчанию удостоверение.
Вы используете идентификатор для доступа к ресурсам из кода отправленного задания.
- В случае вычислений кластера Kubernetes объект ManagedIdentityCredential должен быть предоставлен без каких-либо client_id.
Например, чтобы получить токен для хранилища данных с по умолчанию управляемым удостоверением:
from azure.identity import ManagedIdentityCredential credential = ManagedIdentityCredential() token = credential.get_token('https://storage.azure.com/')Ожидаемый результат: возвращает маркер доступа для службы хранилища Azure. В отличие от вычислительных кластеров, не указывайте
client_idв кластерах Kubernetes.Справочник: ManagedIdentityCredential
Чтобы настроить вычислительные ресурсы кластера Kubernetes, убедитесь, что у него есть необходимое расширение AML, развернутое в нем , и следуйте инструкциям по подключению вычислительных ресурсов кластера Kubernetes к рабочей области AML.
Это важно
Для целей обучения (машинное обучение), используйте идентификатор, назначенный для вычислительных мощностей кластера Kubernetes. Однако для вывода (управляемые сетевые конечные точки) используйте удостоверение, назначенное конечной точке. Дополнительные сведения см. в статье "Доступ к ресурсам Azure" из конечной точки Online.
Хранилище данных
При создании хранилища данных, использующего доступ к данным на основе удостоверений, вы используете учетную запись Azure (маркер Microsoft Entra) для подтверждения разрешения на доступ к службе хранилища. В сценарии доступа к данным на основе удостоверений вы не сохраняете учетные данные проверки подлинности. В хранилище данных хранятся только сведения об учетной записи хранения.
Напротив, хранилища данных, использующие аутентификацию на основе учетных данных, кэшируют информацию о подключении, такую как ключ учетной записи хранения или токен SAS, в хранилище ключей, связанном с рабочей областью. Этот подход имеет ограничение, что другие пользователи рабочей области с достаточными разрешениями могут получить эти учетные данные, что может быть проблемой безопасности для некоторых организаций.
Дополнительные сведения о проверке подлинности доступа к данным см. в статье "Администрирование данных ". Сведения о настройке доступа на основе удостоверений к данным см. в статье "Создание хранилищ данных".
Доступ к данным на основе удостоверений можно применить в Машинное обучение Azure в двух сценариях. Эти сценарии подходят для доступа на основе удостоверений при работе с конфиденциальными данными и требуют более детального управления доступом к данным:
- Доступ к службам хранилища
- Обучение моделей машинного обучения
С помощью доступа на основе удостоверений можно использовать элементы управления доступом на основе ролей (RBAC) для ограничения того, какие удостоверения, такие как пользователи или вычислительные ресурсы, имеют доступ к данным.
Доступ к службам хранилища
Вы можете подключиться к службам хранилища с помощью доступа к данным на основе удостоверений личности с хранилищами данных Машинного обучения Azure.
При использовании доступа к данным на основе идентификации Azure Machine Learning запрашивает маркер Microsoft Entra для проверки подлинности доступа к данным, вместо того чтобы сохранять учетные данные в хранилище данных. Такой подход позволяет управлять доступом к данным на уровне хранилища и сохранять конфиденциальность учетных данных.
Такое же поведение применяется при интерактивной работе с данными через Jupyter Notebook на локальном компьютере или вычислительном экземпляре.
Замечание
Учетные данные, хранящиеся через проверку подлинности на основе учетных данных, включают идентификаторы подписки, маркеры общего доступа (SAS), ключ доступа к хранилищу и сведения о служебных учетных данных, такие как идентификаторы клиентов и идентификаторы арендаторов.
Для безопасного подключения к службе хранилища в Azure машинное обучение Azure требует разрешения на доступ к соответствующему хранилищу данных.
Предупреждение
Доступ между клиентами к учетным записям хранения не поддерживается. Если для вашего сценария требуется межтенантный доступ, создайте запрос в службу поддержки Azure для помощи в разработке индивидуального решения на основе кода.
Доступ к данным на основе удостоверений поддерживает подключения только к следующим службам хранилища.
- Azure Blob-хранилище
- Хранилище Azure Data Lake Storage 1-го поколения
- Azure Data Lake Storage 2-го поколения
Для доступа к этим службам хранилища необходимо иметь по крайней мере доступ Читателя данных больших двоичных объектов хранилища к учетной записи хранения. Только владельцы учетных записей хранения могут изменять уровень доступа с помощью портала Azure.
Получение доступа к данным для учебных задач вычислений с использованием управляемой идентификации
Некоторые сценарии машинного обучения включают работу с частными данными. В таких случаях специалисты по обработке и анализу данных могут не иметь прямого доступа к данным в качестве пользователей Microsoft Entra. В этом сценарии используйте управляемую идентичность вычислительного ресурса для аутентификации доступа к данным. Доступ к данным можно получить только из вычислительного экземпляра или вычислительного кластера машинного обучения, выполняющего задание обучения. Используя этот метод, администратор предоставляет вычислительному экземпляру или кластеру вычислений управляемую идентификацию с разрешениями чтения данных BLOB-объектов в хранилище. вместо отдельных специалистов по обработке и анализу данных.
Чтобы активировать аутентификацию с помощью управляемого удостоверения идентификации вычислительных ресурсов, выполните следующее:
Создать вычислительную единицу с включенным управляемым удостоверением. См. раздел "Вычислительный кластер " или "Вычислительный экземпляр" раздела "Назначение управляемого удостоверения ".
Это важно
Если вы настроите вычислительный экземпляр для завершения простоя, экземпляр вычислений не завершает работу из-за неактивности, если управляемое удостоверение не имеет доступа к рабочей области Машинного обучения Azure. Дополнительные сведения о назначении разрешений см. в статье "Управление доступом к рабочим областям Машинного обучения Azure".
Предоставьте управляемому удостоверению вычислений по крайней мере роль чтения данных BLOB-объектов хранилища в учетной записи хранения.
Создайте хранилища данных с включенной проверкой подлинности на основе удостоверений. См. статью "Создание хранилищ данных".
Замечание
Имя созданного управляемого системного удостоверения для вычислительного экземпляра или кластера имеет формат /workspace-name/computes/compute-name в вашей Microsoft Entra ID.
После включения аутентификации на основе удостоверений, по умолчанию используется управляемая идентификация вычислений при доступе к данным в заданиях на обучение. При необходимости можно пройти проверку подлинности с помощью удостоверения пользователя, выполнив действия, описанные в следующем разделе.
Сведения о настройке Azure RBAC для хранилища см. в разделе управления доступом на основе ролей.
Доступ к данным для запусков обучающих задач на вычислительных кластерах с помощью удостоверения пользователя
ПРИМЕНЯЕТСЯ К:
Расширение Azure CLI ML версии 2 (текущий)
При обучении на вычислительных кластерах Машинного обучения Azure вы можете пройти проверку подлинности к хранилищу с помощью токена Microsoft Entra пользователя.
Этот режим проверки подлинности позволяет:
- Настройте точные разрешения, в которых разные пользователи рабочей области могут получить доступ к разным учетным записям хранения или папкам в учетных записях хранения.
- Позвольте специалистам по обработке и анализу данных повторно использовать существующие разрешения в системах хранения.
- Проводите аудит доступа к хранилищу, поскольку журналы хранения показывают, какие удостоверения использовались для доступа к данным.
Это важно
Эта функция имеет следующие ограничения:
- Эксперименты, отправленные с помощью интерфейса командной строки машинного обучения Azure и пакета SDK для Python версии 2 , поддерживают эту функцию, но Студия машинного обучения не поддерживает.
- Вы не можете использовать идентификацию пользователя и управляемую идентификацию вычислений для аутентификации в одном и том же задании.
- Для заданий конвейера задайте идентификацию пользователя на уровне отдельного шага, выполняемых на вычислительном ресурсе, а не на корневом уровне конвейера. Хотя настройка идентификации поддерживается как на уровне корневого конвейера, так и на уровне шагов, если оба установлены, настройка на уровне шага имеет приоритет. Однако для конвейеров, содержащих компоненты конвейера, идентификаторы должны быть заданы на отдельных шагах, которые выполняются. Идентификатор, заданный на уровне корневого конвейера или компонента конвейера, не работает. Поэтому установите идентификацию на уровне отдельного шага для упрощения.
Чтобы настроить доступ к данным с помощью удостоверения пользователя для заданий обучения в вычислительных кластерах из CLI, выполните следующие действия.
Предоставьте идентификатору пользователя доступ к хранилищам. Например, предоставьте хранилищу StorageBlobReader доступ к определенной учетной записи хранения, которую вы хотите использовать или предоставить разрешение на основе ACL определенным папкам или файлам в хранилище Azure Data Lake 2-го поколения.
Создайте хранилище данных Машинного обучения Azure без кэшированных учетных данных для учетной записи хранения. Если в хранилище данных есть кэшированные учетные данные, такие как ключ учетной записи хранения, эти учетные данные используются вместо удостоверения пользователя.
Отправьте задание обучения со свойством identity, установленным в type: user_identity, как показано в следующей спецификации задания. Во время обучения проверка подлинности в хранилище происходит с помощью удостоверения пользователя, отправиющего задание.
Замечание
Если свойство идентичности не указано, а хранилище данных не имеет кэшированных учетных данных, система использует управляемую идентичность вычислительных ресурсов в качестве резерва.
command: | echo "--census-csv: ${{inputs.census_csv}}" python hello-census.py --census-csv ${{inputs.census_csv}} code: src inputs: census_csv: type: uri_file path: azureml://datastores/mydata/paths/census.csv environment: azureml:AzureML-sklearn-1.0-ubuntu20.04-py38-cpu@latest compute: azureml:cpu-cluster identity: type: user_identity
Чтобы настроить доступ к данным с помощью удостоверения пользователя для заданий обучения в вычислительных кластерах из пакета SDK для Python, выполните следующие действия.
Предоставьте доступ к данным и создайте хранилище данных, как описано ранее для ИНТЕРФЕЙСА командной строки.
Отправьте задание обучения с параметром идентификации, заданным в azure.ai.ml.UserIdentityConfiguration. Этот параметр параметра позволяет заданию получать доступ к данным от имени пользователя, отправляющего задание.
from azure.ai.ml import command from azure.ai.ml.entities import Data, UriReference from azure.ai.ml import Input from azure.ai.ml.constants import AssetTypes from azure.ai.ml import UserIdentityConfiguration # Specify the data location my_job_inputs = { "input_data": Input(type=AssetTypes.URI_FILE, path="<path-to-my-data>") } # Define the job job = command( code="<my-local-code-location>", command="python <my-script>.py --input_data ${{inputs.input_data}}", inputs=my_job_inputs, environment="AzureML-sklearn-0.24-ubuntu18.04-py37-cpu:9", compute="<my-compute-cluster-name>", identity= UserIdentityConfiguration() ) # submit the command returned_job = ml_client.jobs.create_or_update(job)
Это важно
При отправке задания с аутентификацией по удостоверению пользователя проверка контрольной суммы защищает снимки состояния кода от изменений. Если у вас есть компоненты конвейера и вы планируете использовать их с проверкой подлинности с помощью удостоверения пользователя, может потребоваться повторно отправить их. Иначе задание может завершиться ошибкой во время проверки контрольной суммы.
Работа с виртуальными сетями
По умолчанию Машинное обучение Azure не может взаимодействовать с учетной записью хранения, которая находится за брандмауэром или виртуальной сетью.
Учетные записи хранения можно настроить, чтобы разрешить доступ только из определенных виртуальных сетей. Эта конфигурация требует дополнительных шагов, чтобы гарантировать отсутствие утечки данных за пределами сети. Такая схема поведения используется и для доступа на основе учетных данных. Дополнительные сведения см. в статье "Предотвращение кражи данных".
Если у вашей учетной записи хранения есть параметры виртуальной сети, эти параметры определяют тип удостоверения и необходимый доступ к разрешениям. Например, для предварительного просмотра данных и профиля данных параметры виртуальной сети определяют тип удостоверения для проверки подлинности доступа к данным.
В сценариях, когда только определенные IP-адреса и подсети могут получить доступ к хранилищу, Машинное обучение Azure использует MSI рабочей области для выполнения предварительных просмотров и профилей данных.
Если хранилище — ADLS 2-го поколения или BLOB-объект и имеет параметры виртуальной сети, можно использовать удостоверение пользователя или MSI рабочей области в зависимости от параметров хранилища данных, определенных во время создания.
Если параметр виртуальной сети — разрешить службам Azure в списке доверенных служб доступ к этой учетной записи хранения, используется рабочая область MSI.
Сценарий. Реестр контейнеров Azure без пользователя администратора
При отключении пользователя администратора для ACR, Azure Machine Learning использует управляемую учетную запись для создания и получения образов Docker. Существует два рабочих процесса при конфигурировании AzureMachine Learning с целью использования ACR, где аккаунт администратора отключен.
- Разрешить Машинному обучению Azure создать экземпляр ACR, а затем отключить пользователя администратора.
- Предоставьте существующий ACR с уже отключённым пользователем администратора.
Машинное обучение Azure с автоматически созданным экземпляром ACR
Создайте рабочую область Машинного обучения Azure.
Выполните действие, требующее реестра контейнеров Azure. Например, см. руководство. Обучение первой модели.
Получите имя ACR, созданного кластером.
ПРИМЕНЯЕТСЯ К:
Расширение Azure CLI ML версии 2 (текущий)az ml workspace show --name <my workspace name> \ --resource-group <my resource group> \ --subscription <my subscription id> \ --query container_registryЭта команда возвращает значение, подобное показанному ниже. Вам нужна только последняя часть текста, которая является именем экземпляра ACR:
/subscriptions/<subscription id>/resourceGroups/<my resource group>/providers/MicrosoftContainerReggistry/registries/<ACR instance name>Обновите ACR, отключив администратора:
az acr update --name <ACR instance name> --admin-enabled false
Использование собственного ACR
Если политика подписки запрещает администратора ACR, сначала создайте ACR без пользователя администратора, а затем свяжите ее с рабочей областью.
Создайте ACR из Azure CLI без настройки аргумента --admin-enabled или на портале Azure без включения пользователя администратора. При создании рабочей области Машинного обучения Azure укажите идентификатор ресурса Azure ACR. В следующем примере показано создание новой рабочей области Машинное обучение Azure, которая использует существующий ACR:
ПРИМЕНЯЕТСЯ К:
Расширение Azure CLI ML версии 2 (текущий)
az ml workspace create -n <workspace name> \
-g <workspace resource group> \
-l <region> \
--container-registry /subscriptions/<subscription id>/resourceGroups/<acr resource group>/providers/Microsoft.ContainerRegistry/registries/<acr name>
Подсказка
Чтобы получить значение для параметра --container-registry, используйте команду az acr show, чтобы отобразить сведения для вашего ACR. В поле id содержится идентификатор ресурса для ACR.
Кроме того, если у вас уже есть ACR с отключенным пользователем администратора, его можно подключить к рабочей области, обновив его. В следующем примере показано обновление рабочей области Машинного обучения Azure для использования существующего ACR:
ПРИМЕНЯЕТСЯ К:
Расширение Azure CLI ML версии 2 (текущий)
az ml workspace update --update-dependent-resources \
--name <workspace name> \
--resource-group <workspace resource group> \
--container-registry /subscriptions/<subscription id>/resourceGroups/<acr resource group>/providers/Microsoft.ContainerRegistry/registries/<acr name>
Создание вычислений с управляемым удостоверением для доступа к образам Docker для обучения
Чтобы получить доступ к ACR рабочей области, создайте вычислительный кластер машинного обучения с включенным управляемым удостоверением, назначенным системой. Вы можете включить идентификацию с портала Azure или в Azure Studio при создании ресурса вычислений или через Azure CLI с помощью следующей команды. Дополнительные сведения см. в разделе Использование управляемых удостоверений с вычислительными кластерами.
ПРИМЕНЯЕТСЯ К:
Расширение Azure CLI ML версии 2 (текущий)
az ml compute create --name cpu-cluster --type <cluster name> --identity-type systemassigned
Управляемое удостоверение автоматически получает роль ACRPull в ACR рабочей области для возможности извлечения образов Docker для обучения.
Замечание
При первом создании вычислений перед созданием ACR рабочей области необходимо вручную назначить роль ACRPull.
Использование образов Docker для вывода
После настройки ACR без пользователя администратора, как описано ранее, вы можете получить доступ к образам Docker для вывода без ключей администратора из службы Azure Kubernetes (AKS). При создании или присоединении AKS к рабочей области субъект-служба кластера автоматически получает доступ ACRPull к рабочей области ACR.
Замечание
Если вы используете собственный кластер AKS, то вместо управляемого удостоверения кластер должен иметь включенный субъект-службу.
Сценарий. Использование частного реестра контейнеров Azure
По умолчанию Машинное обучение Azure использует базовые образы Docker из общедоступного репозитория, которым управляет Корпорация Майкрософт. Он создает среду тренировки или выполнения вывода на основе этих изображений. Дополнительные сведения см. в разделе "Что такое среды машинного обучения"?
Чтобы использовать настраиваемый базовый образ внутри организации, используйте управляемые удостоверения для доступа к частному ACR.
Создайте кластер вычислений для машинного обучения с включенным управляемым удостоверением, назначаемым системой, как описано ранее. Затем определите идентификатор субъекта управляемого удостоверения.
ПРИМЕНЯЕТСЯ К:
Расширение Azure CLI ML версии 2 (текущий)az ml compute show --name <cluster name> -n <workspace> -g <resource group>При необходимости можно обновить вычислительный кластер, чтобы назначить управляемое удостоверение, назначаемое пользователем:
ПРИМЕНЯЕТСЯ К:
Расширение Azure CLI ML версии 2 (текущий)az ml compute update --name <cluster name> --user-assigned-identities <my-identity-id>Чтобы разрешить вычислительному кластеру извлекать базовые образы, присвойте управляемой идентификации службы (для рабочей области или вычислений) роль ACRPull в частном ACR.
ПРИМЕНЯЕТСЯ К:
Расширение Azure CLI ML версии 2 (текущий)az role assignment create --assignee <principal ID> \ --role acrpull \ --scope "/subscriptions/<subscription ID>/resourceGroups/<private ACR resource group>/providers/Microsoft.ContainerRegistry/registries/<private ACR name>"Создайте среду и укажите расположение базового образа в файле YAML среды. В следующем файле YAML показано, как определить среду, которая ссылается на частный ACR. Замените
<acr-url>на URL-адрес вашего частного ACR, напримерmyregistry.azurecr.io. Замените<image-path>с путем к изображению в вашем частном ACR, например,pytorch/pytorch:latest:$schema: https://azuremlschemas.azureedge.net/latest/environment.schema.json name: docker-image-example image: <acr-url>/<image-path>:latest description: Environment created from a Docker image.Следующая команда демонстрирует создание среды из YAML-файла. Замените
<yaml file>на путь к вашему YAML-файлу:az ml environment create --file <yaml file>Теперь вы можете использовать среду в задании обучения.
Устранение неполадок
В этом разделе рассматриваются распространенные проблемы при настройке проверки подлинности на основе удостоверений.
Учётная запись не имеет разрешения на доступ к хранилищу
Симптом: Вы получаете сообщение об ошибке 403 «Запрещено» при попытке получить доступ к данным из Azure Storage.
Причина: У управляемого удостоверения нет требуемой роли Azure RBAC в учетной записи хранения.
Решение. Назначьте соответствующую роль управляемому удостоверению:
# Assign Storage Blob Data Reader role
az role assignment create \
--assignee <principal-id> \
--role "Storage Blob Data Reader" \
--scope /subscriptions/<subscription-id>/resourceGroups/<resource-group>/providers/Microsoft.Storage/storageAccounts/<storage-account>
Замените <principal-id> на principal ID управляемого удостоверения из раздела Проверка вашей настройки.
Сбой извлечения токена в задании обучения
Симптом: ManagedIdentityCredential не удается получить токен из-за ошибки переменной среды.
Причина: Переменная DEFAULT_IDENTITY_CLIENT_ID среды не задана, или вычислительный кластер не настроен для использования управляемого удостоверения.
Решение.
- Проверьте, включено ли управляемое удостоверение в вычислительном кластере. См. раздел "Вычислительный кластер".
- В коде получите идентификатор клиента из среды:
import os
from azure.identity import ManagedIdentityCredential
client_id = os.environ.get('DEFAULT_IDENTITY_CLIENT_ID')
if not client_id:
raise ValueError("DEFAULT_IDENTITY_CLIENT_ID environment variable not set. Verify compute has managed identity enabled.")
credential = ManagedIdentityCredential(client_id=client_id)
Доступ к брандмауэру хранилища блокируется
Симптом: Ошибки отказа в доступе, когда для учетной записи хранения включены правила брандмауэра.
Причина: Рабочая область или управляемая идентификация вычислительных ресурсов не может получить доступ к хранилищу через брандмауэр.
Решение. Настройка учетной записи хранения для разрешения доступа из доверенных служб Azure:
- На портале Azure перейдите к учетной записи хранения.
- Выберите Сеть>Брандмауэры и виртуальные сети.
- В разделе "Исключения" выберите "Разрешить службам Azure" в списке доверенных служб доступ к этой учетной записи хранения.
Дополнительные сведения см. в статье "Работа с виртуальными сетями".
Сбой загрузки изображения из ACR
Симптом: Задания обучения не могут извлекать образы Docker из реестра контейнеров Azure.
Причина: Управляемое удостоверение компьютеров не имеет роли ACRPull на реестре контейнеров.
Решение: Назначение роли ACRPull:
az role assignment create \
--assignee <principal-id> \
--role acrpull \
--scope /subscriptions/<subscription-id>/resourceGroups/<resource-group>/providers/Microsoft.ContainerRegistry/registries/<registry-name>
Замечание
Если вы создаете кластер вычислений до появления рабочей области ACR, необходимо вручную назначить роль ACRPull.
Аутентификация идентификации пользователя в задании завершается ошибкой
Симптом: задания, использующие удостоверение пользователя для доступа к данным, завершаются сбоем во время проверки контрольной суммы.
Причина: Компоненты конвейера необходимо повторно загрузить при их создании, прежде чем включить аутентификацию идентификации пользователя.
Решение: Повторная отправка компонентов конвейера для регенерации контрольных сумм.
az ml component create --file <component-yaml> --resource-group <resource-group> --workspace-name <workspace-name>
Дополнительные сведения об устранении неполадок с доступом к данным см. в разделе "Устранение ошибок доступа к данным".
Дальнейшие шаги
Связанный контент
- Корпоративная безопасность в Машинном обучении Azure
- Администрирование и проверка подлинности данных
- Управляемые идентичности на вычислительных кластерах
- Устранение ошибок доступа к данным
- Доступ к ресурсам Azure из сетевых конечных точек
- Настройка проверки подлинности для Машинного обучения Azure
- Проверка подлинности клиентов для сетевых конечных точек