Проверка подлинности клиентов для сетевых конечных точек
ОБЛАСТЬ ПРИМЕНЕНИЯ:Расширение машинного обучения Azure CLI версии 2 (current)Python SDK azure-ai-ml версии 2 (current)
В этой статье описывается, как выполнять проверку подлинности клиентов для выполнения операций уровня управления и плоскости данных в сетевых конечных точках.
Операция плоскости управления управляет конечной точкой и изменяет ее. К операциям уровня управления относятся операции создания, чтения, обновления и удаления (CRUD) в сетевых конечных точках и развертываниях в сети.
Операция плоскости данных использует данные для взаимодействия с интернет-конечной точкой без изменения конечной точки. Например, операция плоскости данных может состоять из отправки запроса оценки в конечную точку в Сети и получения ответа.
Необходимые компоненты
Перед выполнением действий, описанных в этой статье, убедитесь, что выполнены следующие необходимые условия:
Рабочая область Машинного обучения Azure. Если у вас ее нет, создайте ее по инструкциям, приведенным в кратком руководстве по созданию ресурсов рабочей области.
Azure CLI и
ml
расширение или пакет SDK для Python версии 2 Машинное обучение Azure:Чтобы установить Azure CLI и расширение, см. статью "Установка,настройка" и использование интерфейса командной строки (версии 2).
Внимание
В примерах CLI в этой статье предполагается, что вы используете оболочку Bash (или совместимый вариант). Например, из системы Linux или подсистемы Windows для Linux.
Чтобы установить пакет SDK для Python версии 2, используйте следующую команду:
pip install azure-ai-ml azure-identity
Чтобы обновить существующую установку пакета SDK до последней версии, выполните следующую команду:
pip install --upgrade azure-ai-ml azure-identity
Дополнительные сведения см. в статье "Установка пакета SDK для Python версии 2 для Машинное обучение Azure".
Подготовка удостоверения пользователя
Для выполнения операций уровня управления (т. е. операций CRUD) и операций плоскости данных (то есть отправки запросов оценки) на конечную точку в сети требуется удостоверение пользователя. Для операций уровня управления и плоскости данных можно использовать одно и то же удостоверение пользователя или разные удостоверения пользователей. В этой статье используется одно и то же удостоверение пользователя для операций уровня управления и плоскости данных.
Сведения о создании удостоверения пользователя в идентификаторе Microsoft Entra см. в разделе "Настройка проверки подлинности". Позже вам потребуется идентификатор удостоверения.
Назначение разрешений удостоверению
В этом разделе описано, как назначить разрешения для удостоверения пользователя, используемого для взаимодействия с конечной точкой. Начните с использования встроенной роли или создания настраиваемой роли. После этого вы назначите роль удостоверению пользователя.
Использование встроенной роли
Встроенная AzureML Data Scientist
роль может использоваться для управления конечными точками и развертываниями и использует подстановочные знаки для включения следующих действий уровня управления RBAC:
Microsoft.MachineLearningServices/workspaces/onlineEndpoints/write
Microsoft.MachineLearningServices/workspaces/onlineEndpoints/delete
Microsoft.MachineLearningServices/workspaces/onlineEndpoints/read
Microsoft.MachineLearningServices/workspaces/onlineEndpoints/token/action
Microsoft.MachineLearningServices/workspaces/onlineEndpoints/listKeys/action
Microsoft.MachineLearningServices/workspaces/onlineEndpoints/regenerateKeys/action
и включить следующее действие RBAC уровня данных:
Microsoft.MachineLearningServices/workspaces/onlineEndpoints/score/action
Azure Machine Learning Workspace Connection Secrets Reader
При необходимости встроенная роль может использоваться для доступа к секретам из подключений к рабочей области и включает следующие действия RBAC уровня управления:
Microsoft.MachineLearningServices/workspaces/connections/listsecrets/action
Microsoft.MachineLearningServices/workspaces/metadata/secrets/read
Если вы используете эти встроенные роли, на этом шаге не требуется никаких действий.
(Необязательно) Создание настраиваемой роли
Этот шаг можно пропустить, если вы используете встроенные роли или другие предварительно созданные пользовательские роли.
Определите область и действия для пользовательских ролей, создав определения JSON ролей. Например, следующее определение роли позволяет пользователю CRUD использовать конечную точку в сети в указанной рабочей области.
custom-role-for-control-plane.json:
{ "Name": "Custom role for control plane operations - online endpoint", "IsCustom": true, "Description": "Can CRUD against online endpoints.", "Actions": [ "Microsoft.MachineLearningServices/workspaces/onlineEndpoints/write", "Microsoft.MachineLearningServices/workspaces/onlineEndpoints/delete", "Microsoft.MachineLearningServices/workspaces/onlineEndpoints/read", "Microsoft.MachineLearningServices/workspaces/onlineEndpoints/token/action", "Microsoft.MachineLearningServices/workspaces/onlineEndpoints/listKeys/action", "Microsoft.MachineLearningServices/workspaces/onlineEndpoints/regenerateKeys/action" ], "NotActions": [ ], "AssignableScopes": [ "/subscriptions/<subscriptionId>/resourcegroups/<resourceGroupName>" ] }
Следующее определение роли позволяет пользователю отправлять запросы оценки в конечную точку в сети в указанной рабочей области.
custom-role-for-scoring.json:
{ "Name": "Custom role for scoring - online endpoint", "IsCustom": true, "Description": "Can score against online endpoints.", "Actions": [ "Microsoft.MachineLearningServices/workspaces/onlineEndpoints/*/action" ], "NotActions": [ ], "AssignableScopes": [ "/subscriptions/<subscriptionId>/resourcegroups/<resourceGroupName>" ] }
Используйте определения JSON для создания пользовательских ролей:
az role definition create --role-definition custom-role-for-control-plane.json --subscription <subscriptionId> az role definition create --role-definition custom-role-for-scoring.json --subscription <subscriptionId>
Примечание.
Чтобы создать пользовательские роли, вам потребуется одна из трех ролей:
- владелец
- администратор доступа пользователей
- пользовательская роль с
Microsoft.Authorization/roleDefinitions/write
разрешением (для создания и обновления и удаления пользовательских ролей) иMicrosoft.Authorization/roleDefinitions/read
разрешений (для просмотра пользовательских ролей).
Дополнительные сведения о создании пользовательских ролей см. в статье о пользовательских ролях Azure.
Проверьте определение роли:
az role definition list --custom-role-only -o table az role definition list -n "Custom role for control plane operations - online endpoint" az role definition list -n "Custom role for scoring - online endpoint" export role_definition_id1=`(az role definition list -n "Custom role for control plane operations - online endpoint" --query "[0].id" | tr -d '"')` export role_definition_id2=`(az role definition list -n "Custom role for scoring - online endpoint" --query "[0].id" | tr -d '"')`
Назначение роли удостоверению
Если вы используете
AzureML Data Scientist
встроенную роль, используйте следующий код, чтобы назначить роль идентификатору пользователя.az role assignment create --assignee <identityId> --role "AzureML Data Scientist" --scope /subscriptions/<subscriptionId>/resourcegroups/<resourceGroupName>/providers/Microsoft.MachineLearningServices/workspaces/<workspaceName>
При необходимости, если вы используете
Azure Machine Learning Workspace Connection Secrets Reader
встроенную роль, используйте следующий код, чтобы назначить роль удостоверению пользователя.az role assignment create --assignee <identityId> --role "Azure Machine Learning Workspace Connection Secrets Reader" --scope /subscriptions/<subscriptionId>/resourcegroups/<resourceGroupName>/providers/Microsoft.MachineLearningServices/workspaces/<workspaceName>
Если вы используете пользовательскую роль, используйте следующий код, чтобы назначить роль идентификатору пользователя.
az role assignment create --assignee <identityId> --role "Custom role for control plane operations - online endpoint" --scope /subscriptions/<subscriptionId>/resourcegroups/<resourceGroupName>/providers/Microsoft.MachineLearningServices/workspaces/<workspaceName> az role assignment create --assignee <identityId> --role "Custom role for scoring - online endpoint" --scope /subscriptions/<subscriptionId>/resourcegroups/<resourceGroupName>/providers/Microsoft.MachineLearningServices/workspaces/<workspaceName>
Примечание.
Чтобы назначить пользовательские роли удостоверению пользователя, вам потребуется одна из трех ролей:
- владелец
- администратор доступа пользователей
- пользовательская роль, которая разрешает
Microsoft.Authorization/roleAssignments/write
разрешение (назначать пользовательские роли) иMicrosoft.Authorization/roleAssignments/read
(просматривать назначения ролей).
Дополнительные сведения о разных ролях Azure и их разрешениях см. в статье "Роли Azure " и "Назначение ролей Azure" с помощью портала Azure.
Подтвердите назначение роли:
az role assignment list --scope /subscriptions/<subscriptionId>/resourcegroups/<resourceGroupName>/providers/Microsoft.MachineLearningServices/workspaces/<workspaceName>
Получение маркера Microsoft Entra для операций плоскости управления
Выполните этот шаг , если планируется выполнять операции плоскости управления с REST API, который будет напрямую использовать маркер.
Если вы планируете использовать другие способы, такие как Машинное обучение Azure CLI (версия 2), пакет SDK Для Python (версия 2) или Студия машинного обучения Azure, вам не нужно вручную получить маркер Microsoft Entra. Скорее, во время входа удостоверение пользователя уже будет проходить проверку подлинности, и маркер будет автоматически получен и передан для вас.
Маркер Microsoft Entra для операций уровня управления можно получить из конечной точки ресурса Azure: https://management.azure.com
войдите в Azure.
az login
Если вы хотите использовать определенное удостоверение, используйте следующий код для входа с помощью удостоверения:
az login --identity --username <identityId>
Используйте этот контекст для получения маркера.
export CONTROL_PLANE_TOKEN=`(az account get-access-token --resource https://management.azure.com --query accessToken | tr -d '"')`
(Необязательно) Проверка конечной точки ресурса и идентификатора клиента для маркера Microsoft Entra
После получения маркера Microsoft Entra можно убедиться, что маркер предназначен для правильной конечной точки management.azure.com
ресурса Azure и правильного идентификатора клиента, декодируя маркер с помощью jwt.ms, который вернет ответ JSON со следующими сведениями:
{
"aud": "https://management.azure.com",
"oid": "<your-object-id>"
}
Создание конечной точки
В следующем примере создается конечная точка с удостоверением, назначенным системой (SAI) в качестве удостоверения конечной точки. SAI — это тип удостоверения по умолчанию управляемого удостоверения для конечных точек. Некоторые основные роли автоматически назначаются для SAI. Дополнительные сведения о назначении ролей для удостоверения, назначаемого системой, см. в разделе "Автоматическое назначение ролей" для удостоверения конечной точки.
Интерфейс командной строки не требует явного предоставления маркера плоскости управления. Вместо этого интерфейс командной строки az login
выполняет проверку подлинности во время входа, а маркер автоматически извлекается и передается для вас.
Создайте файл YAML определения конечной точки.
endpoint.yml:
$schema: https://azuremlschemas.azureedge.net/latest/managedOnlineEndpoint.schema.json name: my-endpoint auth_mode: aad_token
Вы можете заменить
auth_mode
наkey
проверку подлинности ключа илиaml_token
для проверки подлинности маркера Машинное обучение Azure. В этом примере используетсяaad_token
для проверки подлинности маркера Microsoft Entra.az ml online-endpoint create -f endpoint.yml
Проверьте состояние конечной точки:
az ml online-endpoint show -n my-endpoint
Если вы хотите переопределить
auth_mode
(например, наaad_token
) при создании конечной точки, выполните следующий код:az ml online-endpoint create -n my-endpoint --auth_mode aad_token
Если вы хотите обновить существующую конечную точку и указать
auth_mode
(например, чтобыaad_token
), выполните следующий код:az ml online-endpoint update -n my-endpoint --set auth_mode=aad_token
Создание развертывания
Сведения о создании развертывания см. в статье "Развертывание модели машинного обучения с помощью сетевой конечной точки " или "Использование REST" для развертывания модели в качестве сетевой конечной точки. Нет разницы в том, как создавать развертывания для разных режимов проверки подлинности.
Следующий код является примером создания развертывания. Дополнительные сведения о развертывании сетевых конечных точек см. в статье "Развертывание модели машинного обучения с помощью сетевой конечной точки" (с помощью ИНТЕРФЕЙСА командной строки)
Создайте файл YAML определения развертывания.
blue-deployment.yml:
$schema: https://azuremlschemas.azureedge.net/latest/managedOnlineDeployment.schema.json name: blue endpoint_name: my-aad-auth-endp1 model: path: ../../model-1/model/ code_configuration: code: ../../model-1/onlinescoring/ scoring_script: score.py environment: conda_file: ../../model-1/environment/conda.yml image: mcr.microsoft.com/azureml/openmpi4.1.0-ubuntu20.04:latest instance_type: Standard_DS3_v2 instance_count: 1
Создайте развертывание с помощью YAML-файла. В этом примере задайте для нового развертывания весь трафик.
az ml online-deployment create -f blue-deployment.yml --all-traffic
Получение URI оценки для конечной точки
Если вы планируете использовать ИНТЕРФЕЙС командной строки для вызова конечной точки, вам не нужно явно получать URI оценки, так как интерфейс командной строки обрабатывает его для вас. Однако вы по-прежнему можете использовать ИНТЕРФЕЙС командной строки для получения URI оценки, чтобы использовать его с другими каналами, такими как REST API.
scoringUri=$(az ml online-endpoint show -n my-endpoint --query "scoring_uri")
Получение ключа или маркера для операций плоскости данных
Ключ или маркер можно использовать для операций плоскости данных, даже если процесс получения ключа или маркера является операцией плоскости управления. Другими словами, маркер плоскости управления используется для получения ключа или маркера, который позже используется для выполнения операций плоскости данных.
Получение ключа или маркера Машинное обучение Azure требует, чтобы правильная роль была назначена идентификатору пользователя, запрашивающего его, как описано в авторизации для операций плоскости управления. Получение маркера Microsoft Entra не требует дополнительных ролей для удостоверения пользователя.
Если вы планируете использовать ИНТЕРФЕЙС командной строки для вызова конечной точки, вам не нужно явно получать ключи или маркер для операций плоскости данных, так как интерфейс командной строки обрабатывает его для вас. Однако вы по-прежнему можете использовать интерфейс командной строки для получения ключей или маркера для операции плоскости данных, чтобы использовать его с другими каналами, такими как REST API.
Чтобы получить ключи или маркер для операций плоскости данных, используйте команду az ml online-endpoint get-credentials . Эта команда возвращает выходные данные JSON, содержащие ключи, маркеры и/или дополнительные сведения.
Совет
Для извлечения определенных сведений из выходных данных --query
JSON параметр команды CLI используется в качестве примера. Однако для этой цели можно использовать любое подходящее средство.
Когда auth_mode
конечная точка находится key
- Ключи возвращаются в
primaryKey
полях иsecondaryKey
полях.
export DATA_PLANE_TOKEN=$(az ml online-endpoint get-credentials -n $ENDPOINT_NAME -g $RESOURCE_GROUP -w $WORKSPACE_NAME -o tsv --query primaryKey)
export DATA_PLANE_TOKEN2=$(az ml online-endpoint get-credentials -n $ENDPOINT_NAME -g $RESOURCE_GROUP -w $WORKSPACE_NAME -o tsv --query secondaryKey)
Когда auth_mode
конечная точка находится aml_token
- Маркер возвращается в
accessToken
поле. - Время окончания срока действия маркера возвращается в
expiryTimeUtc
поле. - Время обновления маркера возвращается в
refreshAfterTimeUtc
поле.
export DATA_PLANE_TOKEN=$(az ml online-endpoint get-credentials -n $ENDPOINT_NAME -g $RESOURCE_GROUP -w $WORKSPACE_NAME -o tsv --query accessToken)
export EXPIRY_TIME_UTC=$(az ml online-endpoint get-credentials -n $ENDPOINT_NAME -g $RESOURCE_GROUP -w $WORKSPACE_NAME -o tsv --query expiryTimeUtc)
export REFRESH_AFTER_TIME_UTC=$(az ml online-endpoint get-credentials -n $ENDPOINT_NAME -g $RESOURCE_GROUP -w $WORKSPACE_NAME -o tsv --query refreshAfterTimeUtc)
Когда auth_mode
конечная точка находится aad_token
- Маркер возвращается в
accessToken
поле. - Время окончания срока действия маркера возвращается в
expiryTimeUtc
поле.
export DATA_PLANE_TOKEN=$(az ml online-endpoint get-credentials -n $ENDPOINT_NAME -g $RESOURCE_GROUP -w $WORKSPACE_NAME -o tsv --query accessToken)
export EXPIRY_TIME_UTC=$(az ml online-endpoint get-credentials -n $ENDPOINT_NAME -g $RESOURCE_GROUP -w $WORKSPACE_NAME -o tsv --query expiryTimeUtc)
Проверка конечной точки ресурса и идентификатора клиента для маркера Microsoft Entra
После получения маркера Entra можно убедиться, что маркер предназначен для правильной конечной точки ml.azure.com
ресурса Azure и правильного идентификатора клиента, декодируя маркер с помощью jwt.ms, который вернет ответ JSON со следующими сведениями:
{
"aud": "https://ml.azure.com",
"oid": "<your-object-id>"
}
Оценка данных с помощью ключа или маркера
Для конечных точек можно использовать az ml online-endpoint invoke
ключ, маркер Машинное обучение Azure или токен Microsoft Entra. Интерфейс командной строки автоматически обрабатывает ключ или маркер, поэтому не нужно явно передавать его.
az ml online-endpoint invoke -n my-endpoint -r request.json
Журнал и мониторинг трафика
Чтобы включить ведение журнала трафика в параметрах диагностика для конечной точки, выполните действия, описанные в разделе "Включение и отключение журналов".
Если параметр диагностики включен, можно проверить AmlOnlineEndpointTrafficLogs
таблицу, чтобы просмотреть режим проверки подлинности и удостоверение пользователя.