Настройка проверки подлинности между Машинное обучение Azure и другими службами

ОБЛАСТЬ ПРИМЕНЕНИЯ:Расширение машинного обучения Azure CLI версии 2 (current)Python SDK azure-ai-ml версии 2 (current)

Служба машинного обучения Azure объединяет несколько решений. Существует несколько способов, которые могут произойти между Машинное обучение Azure и службами, на которые она используется.

  • Рабочая область Машинное обучение Azure использует управляемое удостоверение для взаимодействия с другими службами. По умолчанию это управляемое удостоверение, назначаемое системой. Вместо этого можно использовать управляемое удостоверение, назначаемое пользователем.
  • Машинное обучение Azure использует Реестр контейнеров Azure (ACR) для хранения образов Docker, используемых для обучения и развертывания моделей. Если вы разрешаете Машинное обучение Azure автоматически создавать ACR, это позволит включить учетную запись администратора.
  • В Машинное обучение Azure вычислительном кластере используется управляемое удостоверение для получения сведений о подключении для хранилищ данных из Azure Key Vault и извлечения образов Docker из ACR. Вы также можете настроить доступ на основе удостоверений к хранилищам данных, который вместо этого будет использовать управляемое удостоверение вычислительного кластера.
  • Доступ к данным может выполняться по нескольким путям в зависимости от службы хранилища данных и конфигурации. Например, проверка подлинности в хранилище данных может использовать ключ учетной записи, маркер, субъект безопасности, управляемое удостоверение или удостоверение пользователя.
  • Управляемые сетевые конечные точки могут использовать управляемое удостоверение для доступа к ресурсам Azure при выполнении вывода. Дополнительные сведения см. в статье Доступ к ресурсам Azure из сетевой конечной точки.

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

Перед выполнением действий, описанных в этой статье, убедитесь, что выполнены следующие необходимые условия:

Реестр контейнеров Azure и типы удостоверений

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

Authentication method Доступ к
общедоступной сети отключен

включен сетевой доступ Реестр контейнеров Azure Public
Администратор
Управляемое удостоверение, назначаемое системой рабочей области
Управляемое удостоверение
, назначаемое пользователем рабочей области, с ролью ACRPull, назначенной удостоверению

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

Рабочая область

Управляемое удостоверение, назначаемое пользователем, можно добавить при создании рабочей области Машинное обучение Azure из портал Azure. Используйте следующие действия при создании рабочей области:

  1. На странице "Основы" выберите учетную запись служба хранилища Azure, Реестр контейнеров Azure и Azure Key Vault, которые вы хотите использовать с рабочей областью.
  2. На странице "Удостоверение" выберите назначаемое пользователем удостоверение, а затем выберите управляемое удостоверение для использования.

Следующие назначения ролей Azure RBAC необходимы для управляемого удостоверения, назначаемого пользователем, для Машинное обучение Azure рабочей области для доступа к данным, связанным с рабочей областью.

Ресурс Разрешение
Рабочая область службы "Машинное обучение Azure" Участник
Хранилище Azure Участник (уровень управления) + служба хранилища участник данных BLOB-объектов (плоскость данных, необязательный, чтобы включить предварительную версию данных в Студия машинного обучения Azure)
Azure Key Vault (при использовании модели разрешений RBAC) Участник (плоскость управления) + Key Vault Администратор istrator (плоскость данных)
Azure Key Vault (при использовании модели разрешений политик доступа) Участник + все разрешения политики доступа, кроме операций очистки
Реестр контейнеров Azure Участник
Azure Application Insights Участник

Для автоматического создания назначений ролей на управляемом удостоверении, назначаемом пользователем, можно использовать этот шаблон ARM.

Совет

Для рабочей области с управляемыми клиентом ключами для шифрования можно передавать назначаемое пользователем управляемое удостоверение для проверки подлинности из хранилища в Key Vault. user-assigned-identity-for-cmk-encryption Используйте параметры (CLI) или user_assigned_identity_for_cmk_encryption (SDK) для передачи управляемого удостоверения. Это управляемое удостоверение может совпадать с основным назначаемым пользователем управляемым удостоверением рабочей области или отличаться от него.

Чтобы создать рабочую область с несколькими назначенными пользователем удостоверениями, используйте один из следующих методов:

ОБЛАСТЬ ПРИМЕНЕНИЯ:расширение Машинного обучения для Azure CLI версии 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:
    '<UAI resource ID 1>': {}
    '<UAI resource ID 2>': {}
storage_account: <storage acccount 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 версии 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:
    '<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 будут удалены.
Обновление типа удостоверения с SAI до UAI|SAI можно изменить тип с "user_assigned" на "system_assigned, user_assigned".

Вычислительный кластер

Примечание.

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

Управляемым удостоверением по умолчанию является управляемое удостоверение, назначенное системой, или первое назначенное пользователю управляемое удостоверение.

Во время работы существует два варианта применения удостоверения:

  1. Система использует удостоверение для настройки подключений к хранилищу, реестру контейнеров и хранилищам данных пользователя.

    • В этом случае система использует управляемое удостоверение по умолчанию.
  2. Вы применяете удостоверение для доступа к ресурсам из кода для отправленного задания:

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

    Например, чтобы получить маркер для хранилища данных с помощью управляемого удостоверения по умолчанию:

    client_id = os.environ.get('DEFAULT_IDENTITY_CLIENT_ID')
    credential = ManagedIdentityCredential(client_id=client_id)
    token = credential.get_token('https://storage.azure.com/')
    

Чтобы настроить вычислительный кластер с управляемым удостоверением, используйте один из следующих методов:

ОБЛАСТЬ ПРИМЕНЕНИЯ:расширение Машинного обучения для Azure CLI версии 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

Хранилище данных

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

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

Дополнительные сведения о проверке подлинности доступа к данным см. в статье "Администрирование данных". Сведения о настройке доступа на основе удостоверений к данным см. в статье "Создание хранилищ данных".

Существует два сценария применения доступа к данным на основе удостоверений в Машинном обучении Azure. Эти сценарии хорошо подходят для доступа на основе удостоверений и применяются при работе с конфиденциальными данными, когда необходимо более детальное управление доступом к информации.

  • Доступ к службам хранилища
  • Обучение моделей машинного обучения

Доступ на основе удостоверений позволяет использовать элементы управления доступом на основе ролей (RBAC), чтобы ограничить удостоверения, такие как пользователи или вычислительные ресурсы, имеют доступ к данным.

Доступ к службам хранилища

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

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

Такое же поведение применяется при интерактивной работе с данными через Jupyter Notebook на локальном компьютере или вычислительном экземпляре.

Примечание.

Учетные данные, сохраненные с помощью проверки подлинности на основе учетных данных, включают идентификатор подписки, маркеры подписанного URL-адреса (SAS), ключи доступа к хранилищу и сведения о субъекте-службе, такие как идентификатор клиента.

Чтобы помочь вам обеспечить безопасное подключение к службе хранилища Azure, Машинное обучение Azure требует наличие у вас разрешения на доступ к соответствующему хранилищу данных.

Предупреждение

Кросс-клиентский доступ к учетным записям хранения не поддерживается. Если для вашего сценария необходим доступ между клиентами, обратитесь к псевдониму amldatasupport@microsoft.com группы поддержки данных Машинное обучение Azure, чтобы получить помощь с пользовательским решением кода.

Доступ к данным на основе удостоверений поддерживает подключения только к следующим службам хранилища.

  • хранилище BLOB-объектов Azure
  • Хранилище Azure Data Lake Storage 1-го поколения
  • Azure Data Lake Storage 2-го поколения

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

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

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

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

  • Создание вычислений с включенным управляемым удостоверением. См. раздел "Вычислительный кластер" или "Вычислительный экземпляр" раздела "Назначение управляемого удостоверения".

    Внимание

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

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

  • Создайте хранилища данных с включенной проверкой подлинности на основе удостоверений. См. статью "Создание хранилищ данных".

Примечание.

Имя созданного управляемого системного удостоверения для вычислительного экземпляра или кластера будет иметь формат /workspace-name/computes/compute-name в идентификаторе Microsoft Entra.

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

Сведения об использовании настройки Azure RBAC для хранилища см. в разделе управления доступом на основе ролей.

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

ОБЛАСТЬ ПРИМЕНЕНИЯ:расширение Машинного обучения для Azure CLI версии 2 (текущая версия)

При обучении Машинное обучение Azure вычислительных кластерах можно пройти проверку подлинности в хранилище с помощью маркера Microsoft Entra.

Этот режим аутентификации позволяет:

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

Внимание

Эта функция имеет следующие ограничения.

  • Функция поддерживается для экспериментов, отправленных через интерфейс командной строки Машинное обучение Azure и пакет SDK Python версии 2, но не через Студию машинного обучения.
  • Удостоверение пользователя и удостоверение, управляемое вычислением, нельзя использовать для аутентификации в рамках одного задания.
  • Для заданий конвейера рекомендуется задать удостоверение пользователя на отдельном уровне шага, который будет выполняться на вычислительном уровне, а не на корневом уровне конвейера. (Хотя параметр удостоверения поддерживается как на корневом конвейере, так и на уровне шагов, параметр уровня шага имеет приоритет, если оба заданы. Однако для конвейеров, содержащих компоненты конвейера, необходимо задать удостоверение на отдельных шагах, которые будут выполняться. Идентификатор, заданный на уровне корневого конвейера или компонента конвейера, не будет функционировать. Поэтому мы рекомендуем задать удостоверение на отдельном уровне шага для простоты.)

Ниже описано, как настроить доступ к данным с удостоверением пользователя для заданий обучения в вычислительных кластерах из ИНТЕРФЕЙСА командной строки.

  1. Предоставьте удостоверению пользователя доступ к ресурсам хранилища. Например, предоставьте StorageBlobReader доступ к определенной учетной записи хранения, которую вы хотите использовать, или предоставьте разрешение на основе ACL для определенных папок или файлов в хранилище Azure Data Lake 2-го поколения.

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

  3. Отправьте задание обучения, где свойству identity задано значение type: user_identity, как показано в следующей спецификации задания. Во время задания обучения аутентификация в хранилище выполняется с использованием удостоверения пользователя, который отправляет задание.

    Примечание.

    Если свойство 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.

  1. Предоставьте доступ к данным и создайте хранилище данных, как описано выше для ИНТЕРФЕЙСА командной строки.

  2. Отправьте задание обучения с параметром удостоверения, заданным в 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)
    

Внимание

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

Работа с виртуальными сетями

По умолчанию Машинное обучение Azure не может взаимодействовать с учетной записью хранения, которая находится за брандмауэром или в виртуальной сети.

Вы можете настроить учетные записи хранения таким образом, чтобы они разрешали доступ только из определенных виртуальных сетей. Эта конфигурация требует дополнительных действий, чтобы гарантировать, что данные не попали за пределы сети. Такая схема поведения используется и для доступа на основе учетных данных. Дополнительные сведения см. в статье "Предотвращение кражи данных".

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

  • В сценариях, где доступ к хранилищу разрешен только определенным IP-адресам и подсетям, Машинное обучение Azure использует MSI-файл рабочей области для выполнения предварительных версий и профилей данных.

  • Если используется хранилище ADLS Gen 2 или большой двоичный объект, и хранилище имеет параметры виртуальной сети, клиенты могут использовать удостоверение пользователя или MSI рабочей области в зависимости от параметров хранилища данных, определенных во время создания.

  • Если параметр виртуальной сети имеет значение "Разрешить службам Azure в списке доверенных служб доступ к этой учетной записи хранения", используется MSI рабочей области.

Сценарий: Реестр контейнеров Azure без пользователя администратора

Если отключить пользователя администратора для ACR, Машинное обучение Azure использует управляемое удостоверение для создания и извлечения образов Docker. Существует два рабочих процесса при настройке Машинное обучение Azure использования ACR с отключенным пользователем администратора:

  • Разрешить Машинное обучение Azure создать экземпляр ACR, а затем отключить пользователя администратора.
  • Доведите существующий ACR с пользователем администратора, который уже отключен.

Машинное обучение Azure с автоматически созданным экземпляром ACR

  1. Создайте новую рабочую область Машинное обучение Azure.

  2. Выполните действие, требующее Реестр контейнеров Azure. Например, руководство . Обучение первой модели.

  3. Получите имя ACR, созданного кластером.

    ОБЛАСТЬ ПРИМЕНЕНИЯ:расширение Машинного обучения для Azure CLI версии 2 (текущая версия)

    az ml workspace show -w <my workspace> \
    -g <my resource group>
    --query containerRegistry
    

    Эта команда возвращает значение, подобное показанному ниже. Вам нужна только последняя часть текста, которая является именем экземпляра ACR:

    /subscriptions/<subscription id>/resourceGroups/<my resource group>/providers/MicrosoftContainerReggistry/registries/<ACR instance name>
    
  4. Обновите ACR, отключив администратора:

    az acr update --name <ACR instance name> --admin-enabled false
    

Использование собственного ACR

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

Создайте ACR из Azure CLI без настройки аргумента --admin-enabled или на портале Azure без включения администратора. Затем при создании рабочей области Машинного обучения Azure укажите идентификатор ресурса Azure этого ACR. В следующем примере показано создание новой рабочей области Машинное обучение Azure, которая использует существующий ACR:

Совет

Чтобы получить значение для параметра --container-registry, используйте команду az acr show, чтобы отобразить сведения для вашего ACR. В поле id содержится идентификатор ресурса для ACR.

ОБЛАСТЬ ПРИМЕНЕНИЯ:расширение Машинного обучения для Azure CLI версии 2 (текущая версия)

az ml workspace create -w <workspace name> \
-g <workspace resource group> \
-l <region> \
--container-registry /subscriptions/<subscription id>/resourceGroups/<acr resource group>/providers/Microsoft.ContainerRegistry/registries/<acr name>

Создание вычислений с управляемым удостоверением для доступа к образам Docker для обучения

Чтобы получить доступ к ACR рабочей области, создайте вычислительный кластер машинного обучения с включенным управляемым удостоверением, назначенным системой. Удостоверение можно включить на портале Azure или в Студии при создании вычислений, а также с помощью Azure CLI, как показано ниже. Дополнительные сведения см. в разделе Использование управляемых удостоверений с вычислительными кластерами.

ОБЛАСТЬ ПРИМЕНЕНИЯ:расширение Машинного обучения для Azure CLI версии 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.

Получение базового образа Docker для вычислительного кластера машинного обучения для обучения как есть

Создайте вычислительный кластер машинного обучения с включенным управляемым удостоверением, назначенным системой, как описано выше. Затем определите идентификатор субъекта управляемого удостоверения.

ОБЛАСТЬ ПРИМЕНЕНИЯ:расширение Машинного обучения для Azure CLI версии 2 (текущая версия)

az ml compute show --name <cluster name> -w <workspace> -g <resource group>

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

ОБЛАСТЬ ПРИМЕНЕНИЯ:расширение Машинного обучения для Azure CLI версии 2 (текущая версия)

az ml compute update --name <cluster name> --user-assigned-identities <my-identity-id>

Чтобы разрешить вычислительному кластеру получать базовые образы, предоставьте роль ACRPull управляемого удостоверения службы частном ACR.

ОБЛАСТЬ ПРИМЕНЕНИЯ:расширение Машинного обучения для Azure CLI версии 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 среды.

ОБЛАСТЬ ПРИМЕНЕНИЯ:расширение Машинного обучения для Azure CLI версии 2 (текущая версия)

$schema: https://azuremlschemas.azureedge.net/latest/environment.schema.json
name: docker-image-example
image: pytorch/pytorch:latest
description: Environment created from a Docker image.
az ml environment create --file <yaml file>

Теперь вы можете использовать среду в задании обучения.

Встраивание управляемой среды Машинного обучения Azure в базовый образ из частного ACR для обучения или вывода

ОБЛАСТЬ ПРИМЕНЕНИЯ:расширение Машинного обучения для Azure CLI версии 2 (текущая версия)

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

  1. Создайте управляемое удостоверение, назначаемое пользователем, и предоставьте удостоверению роль ACRPull для доступа к частному ACR.

  2. Предоставьте управляемому удостоверению рабочей области роль оператора управляемого удостоверения назначаемого пользователем управляемого удостоверения на предыдущем шаге. Эта роль позволяет рабочей области назначать задаче ACR управляемое удостоверение, назначаемое пользователем, для создания управляемой среды.

    1. Получите идентификатор субъекта назначенного системой управляемого удостоверения рабочей области:

      ОБЛАСТЬ ПРИМЕНЕНИЯ:расширение Машинного обучения для Azure CLI версии 2 (текущая версия)

      az ml workspace show -w <workspace name> -g <resource group> --query identityPrincipalId
      
    2. Предоставьте роль оператора управляемых удостоверений:

      az role assignment create --assignee <principal ID> --role managedidentityoperator --scope <user-assigned managed identity resource ID>
      

      Идентификатор ресурса управляемого удостоверения, назначаемого пользователем, — это идентификатор ресурса Azure назначаемого пользователем удостоверения в формате /subscriptions/<subscription ID>/resourceGroups/<resource group>/providers/Microsoft.ManagedIdentity/userAssignedIdentities/<user-assigned managed identity name>.

  3. Укажите внешний идентификатор ACR и клиента управляемого удостоверения , назначаемого пользователем, в подключениях к рабочей области с помощью az ml connection команды. Эта команда принимает ФАЙЛ YAML, предоставляющий сведения о подключении. В следующем примере показано, как указать управляемое удостоверение. Замените client_id их resource_id значениями для управляемого удостоверения:

    ОБЛАСТЬ ПРИМЕНЕНИЯ:расширение Машинного обучения для Azure CLI версии 2 (текущая версия)

    name: test_ws_conn_cr_managed
    type: container_registry
    target: https://test-feed.com
    credentials:
      type: managed_identity
      client_id: client_id
      resource_id: resource_id
    

    Следующая команда демонстрирует, как использовать YAML-файл для создания подключения к рабочей области. Замените <yaml file>, <workspace name>а <resource group> также значениями конфигурации:

    az ml connection create --file <yml file> --resource-group <resource group> --workspace-name <workspace>
    
  4. После завершения настройки можно использовать базовые образы из частного ACR при создании сред для обучения или вывода. В следующем фрагменте кода показано, как указать ACR базового образа и имя образа в определении среды.

    ОБЛАСТЬ ПРИМЕНЕНИЯ: Пакет SDK для Python azure-ai-ml версии 2 (current)

    $schema: https://azuremlschemas.azureedge.net/latest/environment.schema.json
    name: private-acr-example
    image: <acr url>/pytorch/pytorch:latest
    description: Environment created from private ACR.
    

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