Авторизация на конечных точках пакетной службы

Конечные точки пакетной службы поддерживают проверку подлинности Microsoft Entra или aad_token. Это означает, что для вызова пакетной конечной точки пользователь должен добавить действительный токен проверки подлинности Microsoft Entra в URI пакетной конечной точки. Авторизация применяется на уровне конечной точки. В следующей статье объясняется, как правильно взаимодействовать с конечными точками пакетной службы и требованиями к безопасности.

Принцип действия авторизации

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

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

Подробный список разрешений RBAC см. в разделе "Настройка RBAC" для вызова пакетной конечной точки.

Внимание

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

Выполнение заданий с использованием различных типов учетных данных

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

Внимание

При работе с рабочими областями с поддержкой приватного канала конечные точки пакетной службы нельзя вызывать из пользовательского интерфейса в Студия машинного обучения Azure. Вместо этого используйте Машинное обучение Azure CLI версии 2 для создания задания.

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

Выполнение заданий с использованием учетных данных пользователя

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

  1. Используйте Azure CLI для входа с помощью интерактивной проверки подлинности или кода устройства:

    az login
    
  2. После проверки подлинности выполните следующую команду для выполнения задания пакетного развертывания:

    az ml batch-endpoint invoke --name $ENDPOINT_NAME \
                                --input https://azuremlexampledata.blob.core.windows.net/data/heart-disease-uci
    

Выполнение заданий с помощью субъекта-службы

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

  1. Создайте секрет для проверки подлинности, как описано в варианте 3. Создание нового секрета клиента.

  2. Чтобы пройти проверку подлинности с помощью субъекта-службы, используйте следующую команду. Дополнительные сведения см. в статье "Вход с помощью Azure CLI".

    az login --service-principal \
             --tenant <tenant> \
             -u <app-id> \
             -p <password-or-cert> 
    
  3. После проверки подлинности выполните следующую команду для выполнения задания пакетного развертывания:

    az ml batch-endpoint invoke --name $ENDPOINT_NAME \
                                --input https://azuremlexampledata.blob.core.windows.net/data/heart-disease-uci/
    

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

Управляемые удостоверения можно использовать для вызова конечной точки и развертываний пакетной службы. Обратите внимание, что это удостоверение управления не принадлежит конечной точке пакетной службы, но оно используется для выполнения конечной точки и, следовательно, создает пакетное задание. В этом сценарии можно использовать как назначенные пользователем, так и назначенные системой удостоверения.

В ресурсы Azure, которые настроены для использования управляемых удостоверений, можно выполнить вход с помощью такого удостоверения. Чтобы выполнить вход с помощью удостоверения ресурса, используйте флаг --identity. Дополнительные сведения см. в статье "Вход с помощью Azure CLI".

az login --identity

После проверки подлинности выполните следующую команду для выполнения задания пакетного развертывания:

az ml batch-endpoint invoke --name $ENDPOINT_NAME \
                            --input https://azuremlexampledata.blob.core.windows.net/data/heart-disease-uci

Настройка вызова RBAC для конечных точек пакетной службы

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

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

"actions": [
    "Microsoft.MachineLearningServices/workspaces/read",
    "Microsoft.MachineLearningServices/workspaces/data/versions/write",
    "Microsoft.MachineLearningServices/workspaces/datasets/registered/read",
    "Microsoft.MachineLearningServices/workspaces/datasets/registered/write",
    "Microsoft.MachineLearningServices/workspaces/datasets/unregistered/read",
    "Microsoft.MachineLearningServices/workspaces/datasets/unregistered/write",
    "Microsoft.MachineLearningServices/workspaces/datastores/read",
    "Microsoft.MachineLearningServices/workspaces/datastores/write",
    "Microsoft.MachineLearningServices/workspaces/datastores/listsecrets/action",
    "Microsoft.MachineLearningServices/workspaces/listStorageAccountKeys/action",
    "Microsoft.MachineLearningServices/workspaces/batchEndpoints/read",
    "Microsoft.MachineLearningServices/workspaces/batchEndpoints/write",
    "Microsoft.MachineLearningServices/workspaces/batchEndpoints/deployments/read",
    "Microsoft.MachineLearningServices/workspaces/batchEndpoints/deployments/write",
    "Microsoft.MachineLearningServices/workspaces/batchEndpoints/deployments/jobs/write",
    "Microsoft.MachineLearningServices/workspaces/batchEndpoints/jobs/write",
    "Microsoft.MachineLearningServices/workspaces/computes/read",
    "Microsoft.MachineLearningServices/workspaces/computes/listKeys/action",
    "Microsoft.MachineLearningServices/workspaces/metadata/secrets/read",
    "Microsoft.MachineLearningServices/workspaces/metadata/snapshots/read",
    "Microsoft.MachineLearningServices/workspaces/metadata/artifacts/read",
    "Microsoft.MachineLearningServices/workspaces/metadata/artifacts/write",
    "Microsoft.MachineLearningServices/workspaces/experiments/read",
    "Microsoft.MachineLearningServices/workspaces/experiments/runs/submit/action",
    "Microsoft.MachineLearningServices/workspaces/experiments/runs/read",
    "Microsoft.MachineLearningServices/workspaces/experiments/runs/write",
    "Microsoft.MachineLearningServices/workspaces/metrics/resource/write",
    "Microsoft.MachineLearningServices/workspaces/modules/read",
    "Microsoft.MachineLearningServices/workspaces/models/read",
    "Microsoft.MachineLearningServices/workspaces/endpoints/pipelines/read",
    "Microsoft.MachineLearningServices/workspaces/endpoints/pipelines/write",
    "Microsoft.MachineLearningServices/workspaces/environments/read",
    "Microsoft.MachineLearningServices/workspaces/environments/write",
    "Microsoft.MachineLearningServices/workspaces/environments/build/action",
    "Microsoft.MachineLearningServices/workspaces/environments/readSecrets/action"
]

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

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

Тип входных данных Учетные данные в хранилище используемые учетные данные. Доступ, предоставленный
Хранилище данных Да Учетные данные хранилища данных в рабочей области Ключ доступа или SAS
Ресурс данных Да Учетные данные хранилища данных в рабочей области Ключ доступа или SAS
Хранилище данных No Удостоверение задания и управляемого удостоверения вычислительного кластера RBAC
Ресурс данных No Удостоверение задания и управляемого удостоверения вычислительного кластера RBAC
Хранилище BLOB-объектов Azure Не применяется Удостоверение задания и управляемого удостоверения вычислительного кластера RBAC
Хранилище Azure Data Lake Storage 1-го поколения Не применяется Удостоверение задания и управляемого удостоверения вычислительного кластера POSIX
Azure Data Lake Storage 2-го поколения Не применяется Удостоверение задания и управляемого удостоверения вычислительного кластера POSIX и RBAC

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

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

  1. Перейдите к Студия машинного обучения Azure.

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

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

    1. В разделе "Управляемое удостоверение" проверьте, назначено ли вычисление управляемое удостоверение . В противном случае выберите параметр "Изменить".

    2. Выберите " Назначить управляемое удостоверение " и настройте его по мере необходимости. Управляемое удостоверение, назначаемое системой, или управляемое удостоверение, назначаемое пользователем. При использовании управляемого удостоверения, назначаемого системой, оно называется "[имя рабочей области]/computes/[имя вычислительного кластера]".

    3. Сохраните изменения.

    Animation showing the steps to assign a managed identity to a cluster.

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

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

    1. Перейдите к разделу Управления доступом (IAM).

    2. Выберите назначение роли вкладки и нажмите кнопку "Добавить>назначение роли".

    3. Найдите роль с именем служба хранилища читатель данных BLOB-объектов, выберите ее и нажмите кнопку "Далее".

    4. Щелкните "Выбрать участников".

    5. Найдите созданное управляемое удостоверение. При использовании управляемого удостоверения, назначаемого системой, оно называется "[имя рабочей области]/computes/[имя вычислительного кластера]".

    6. Добавьте учетную запись и завершите работу мастера.

    Animation showing the steps to assign the created managed identity to the storage account.

  6. Конечная точка готова получать задания и входные данные из выбранной учетной записи хранения.

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