Примечание.
Для доступа к этой странице требуется авторизация. Вы можете попробовать войти или изменить каталоги.
Для доступа к этой странице требуется авторизация. Вы можете попробовать изменить каталоги.
ОБЛАСТЬ ПРИМЕНЕНИЯ:
Расширение машинного обучения Azure CLI версии 2 (текущая)
Python SDK azure-ai-ml версии 2 (текущая)
В этой статье показано, как использовать сетевую изоляцию для повышения безопасности управляемой конечной точки Машинного обучения Azure. Сетевая изоляция помогает защитить входящий и исходящий обмен данными с конечной точкой и из нее.
Чтобы защитить входящий трафик, можно создать управляемую конечную точку в Сети, которая использует частную конечную точку рабочей области Машинного обучения Azure. Чтобы разрешить только утвержденные исходящие подключения для развертываний, можно настроить рабочую область с помощью управляемой виртуальной сети. В этой статье показано, как выполнить эти действия для повышения безопасности конечных точек. В нем также показано, как создать развертывание, использующее частные конечные точки управляемой виртуальной сети рабочей области для исходящего взаимодействия.
Если вы предпочитаете использовать устаревший метод для сетевой изоляции, ознакомьтесь со следующими примерами файлов развертывания в репозитории GitHub в azureml-examples :
- Для развертывания, использующего универсальную модель: deploy-moe-vnet-legacy.sh
- Для развертывания, использующего модель MLflow: deploy-moe-vnet-mlflow-legacy.sh
Предварительные условия
Подписка Azure. Если у вас нет подписки на Azure, создайте бесплатную учетную запись перед началом.
Azure CLI и расширение Azure CLI
ml, установленные и настроенные. Для получения дополнительной информации смотрите Установка и настройка интерфейса командной строки (v2).Совет
Функция управляемой виртуальной сети машинного обучения Azure появилась 23 мая 2023 года. Если у вас есть более ранняя версия
mlрасширения, возможно, потребуется обновить его для примеров, приведенных в этой статье. Чтобы обновить расширение, используйте следующую команду Azure CLI:az extension update -n mlОболочка Bash или совместимая оболочка, например оболочка в системе Linux или подсистеме Windows для Linux. В примерах Azure CLI в этой статье предполагается, что вы используете этот тип оболочки.
Группа ресурсов Azure, в которой у вас или у служебного принципала, которым вы пользуетесь, есть доступ уровня участника. Инструкции по созданию группы ресурсов см. в разделе "Настройка".
Управляемое удостоверение, назначаемое пользователем , с соответствующими разрешениями, если вы хотите использовать управляемое удостоверение для создания и управления сетевыми конечными точками и сетевыми развертываниями. Подробные сведения о необходимых разрешениях см. в статье Настройка проверки подлинности между Машинным обучением Azure и другими службами. Например, необходимо предоставить управляемому удостоверению определенные разрешения на управление доступом на основе ролей Azure (Azure RBAC) для Azure Key Vault.
Миграция из устаревшего метода сетевой изоляции в управляемую виртуальную сеть рабочей области
Если вы используете устаревший метод для сетевой изоляции управляемых сетевых конечных точек и хотите перенести в управляемую виртуальную сеть для защиты конечных точек, выполните следующие действия.
- Создайте рабочую область и включите управляемую виртуальную сеть. Дополнительные сведения о настройке управляемой сети для рабочей области см. в разделе " Изоляция управляемой виртуальной сети рабочей области".
- (Необязательно) Если развертывания получают доступ к частным ресурсам, кроме службы хранилища Azure, Key Vault и реестра контейнеров Azure, добавьте правила исходящего трафика в параметры сети рабочей области. В частности, сеть настроена с правилами для службы хранилища Azure, Key Vault и реестра контейнеров по умолчанию. Добавьте правила с частными конечными точками для любых других частных ресурсов, которые вы используете.
- (Необязательно) Если вы планируете использовать реестр машинного обучения Azure, настройте частные конечные точки для исходящего взаимодействия с реестром, учетной записью хранения и его экземпляром реестра контейнеров.
- Создайте сетевые конечные точки и развертывания в новой рабочей области. Если вы используете реестры Машинного обучения Azure, вы можете напрямую развертывать компоненты из них. Дополнительные сведения см. в статье "Развертывание модели из реестра в интернет-конечную точку в рабочей области".
- Обновите приложения, которые вызывают конечные точки, чтобы приложения использовали URI оценки новых сетевых конечных точек.
- После проверки новых конечных точек удалите сетевые конечные точки в старой рабочей области.
Если во время миграции не требуется избежать простоя, можно использовать более простой подход. Если вам не нужно поддерживать вычислительные экземпляры, сетевые конечные точки и развертывания в старой рабочей области, можно удалить вычислительные экземпляры, а затем обновить рабочую область, чтобы включить управляемую виртуальную сеть.
Ограничения
Флаг
v1_legacy_modeдолжен быть установлен вfalse, чтобы отключить устаревший режим версии 1 в рабочей области Azure Machine Learning. Если этот параметр включен, невозможно создать управляемую конечную точку в Сети. Дополнительные сведения см. в статье об изменении сетевой изоляции с помощью новой платформы API в Azure Resource Manager.Если рабочая область машинного обучения Azure имеет частную конечную точку, созданную до 24 мая 2022 г., необходимо повторно создать эту частную конечную точку, прежде чем настроить сетевые конечные точки для использования частных конечных точек. Дополнительные сведения о создании частной конечной точки для рабочей области см. в статье "Настройка частной конечной точки для рабочей области машинного обучения Azure".
Совет
Чтобы просмотреть дату создания рабочей области, можно проверить свойства рабочей области.
- В студии машинного обучения Azure перейдите в правый верхний угол и выберите имя рабочей области.
- В окне Директория + Подписка + Рабочее пространство выберите Просмотреть все свойства в Azure Portal.
- На странице обзора портала Azure перейдите в правый верхний угол и выберите представление JSON.
- В окне JSON ресурса в разделе "Версии API" выберите последнюю версию API.
- В разделе
propertiesкода JSON проверьте значениеcreationTime.
Кроме того, используйте один из следующих методов:
-
Пакет SDK для Python:
Workspace.get(name=<workspace-name>, subscription_id=<subscription-ID>, resource_group=<resource-group-name>).get_details() -
REST API:
curl https://management.azure.com/subscriptions/<subscription-ID>/resourceGroups/<resource-group-name>/providers/Microsoft.MachineLearningServices/workspaces/?api-version=2023-10-01 -H "Authorization:Bearer <access-token>" -
PowerShell:
Get-AzMLWorkspace -Name <workspace-name> -ResourceGroupName <resource-group-name>
При использовании сетевой изоляции для защиты конечных точек в Сети можно использовать связанные с рабочей областью ресурсы из другой группы ресурсов, отличной от группы ресурсов рабочей области. Однако эти ресурсы должны принадлежать той же подписке и клиенту, что и ваша рабочая область. Ресурсы, связанные с рабочей областью, включают реестр контейнеров Azure, службу хранилища Azure, Azure Key Vault и Application Insights.
Примечание.
В этой статье описывается сетевая изоляция, которая применяется к операциям плоскости данных. Эти операции являются результатом запросов на скоринг или обслуживания моделей. Операции плоскости управления, такие как запросы на создание, обновление, удаление или получение ключей проверки подлинности, отправляются в Azure Resource Manager через общедоступную сеть.
Подготовьте вашу систему
Создайте переменные среды, выполнив следующие команды. Замените
<resource-group-name>на группу ресурсов в рабочей области. Замените<workspace-name>именем своей рабочей области.export RESOURCEGROUP_NAME="<resource-group-name>" export WORKSPACE_NAME="<workspace-name>"Создайте рабочую область. Параметр
-m allow_only_approved_outboundнастраивает управляемую виртуальную сеть для рабочей области и блокирует исходящий трафик, за исключением утвержденных назначений.az ml workspace create -g $RESOURCEGROUP_NAME -n $WORKSPACE_NAME -m allow_only_approved_outboundКроме того, если вы хотите разрешить развертывание отправлять исходящий трафик в Интернет, раскомментируйте следующий код и запустите его.
# az ml workspace create -g $RESOURCEGROUP_NAME -n $WORKSPACE_NAME -m allow_internet_outboundДополнительные сведения о создании новой рабочей области или обновлении существующей рабочей области для использования управляемой виртуальной сети см. в статье "Настройка управляемой виртуальной сети для разрешения исходящего трафика в Интернет".
Подготовьте виртуальную управляемую сеть. Инструкции и дополнительные сведения см. в руководстве по подготовке управляемой виртуальной сети.
Внимание
При первой настройке контролируемой виртуальной сети для рабочей области сеть не подготавливается. Вы не можете создавать сетевые развертывания, пока не подготовите управляемую сеть.
Настройте реестр контейнеров, связанный с рабочей областью, для использования ценовой категории "Премиум". Этот параметр необходим для предоставления доступа к реестру через частную конечную точку. Дополнительные сведения см в статье Уровни службы Реестра контейнеров Azure.
Настройте рабочую область для использования вычислительного кластера или вычислительного экземпляра для создания образов. Вы можете использовать свойство
image_build_computeдля этой цели. Дополнительные сведения и инструкции см. в разделе "Настройка сборок образов".Настройте значения по умолчанию для Azure CLI, чтобы избежать передачи значений для рабочей области и группы ресурсов несколько раз.
az configure --defaults workspace=$WORKSPACE_NAME group=$RESOURCEGROUP_NAMEКлонируйте репозиторий примеров, чтобы получить файлы примеров для конечной точки и развертывания, а затем перейдите в каталог cli репозитория.
git clone --depth 1 https://github.com/Azure/azureml-examples cd azureml-examples/cli
Команды, приведенные в этой статье, находятся в файле deploy-managed-online-endpoint-workspacevnet.sh в каталоге cli. Файлы конфигурации YAML находятся в подкаталоге endpoints/online/managed/sample/.
Создание защищенной управляемой онлайн конечной точки
Чтобы создать защищенную управляемую конечную точку в сети, создайте конечную точку в рабочей области. Затем вы задаете значение конечной точки public_network_access на disabled, чтобы управлять входящими коммуникациями.
Этот параметр заставляет конечную точку в сети использовать частную конечную точку рабочей области для входящего взаимодействия. Единственным способом вызова сетевой конечной точки является использование частной конечной точки, которая может получить доступ к рабочей области в виртуальной сети. Дополнительные сведения см. в статье "Безопасные запросы оценки входящего трафика " и настройка частной конечной точки для рабочей области машинного обучения Azure.
Так как рабочая область настроена для управляемой виртуальной сети, все развертывания конечных точек используют частные конечные точки управляемой виртуальной сети для исходящего взаимодействия.
Задайте имя конечной точки:
export ENDPOINT_NAME="<YOUR_ENDPOINT_NAME>"Создайте конечную точку с
public_network_access, установленной наdisabled, для блокировки входящего трафика.az ml online-endpoint create --name $ENDPOINT_NAME -f endpoints/online/managed/sample/endpoint.yml --set public_network_access=disabledКроме того, если вы хотите разрешить конечной точке получать запросы оценки из Интернета, раскомментируйте следующий код и запустите его.
# az ml online-endpoint create --name $ENDPOINT_NAME -f endpoints/online/managed/sample/endpoint.yml
Тестирование конечной точки
Создайте развертывание в управляемой виртуальной сети рабочей области:
az ml online-deployment create --name blue --endpoint $ENDPOINT_NAME -f endpoints/online/managed/sample/blue-deployment.yml --all-trafficПри возникновении ошибки авторизации проверьте конфигурацию сети для учетной записи хранилища рабочей области. Возможно, потребуется настроить параметры доступа к общедоступной сети, чтобы предоставить рабочей области доступ к учетной записи хранения.
Узнайте состояние развертывания:
az ml online-endpoint show -n $ENDPOINT_NAMEПроверьте конечную точку, выполнив запрос оценки:
az ml online-endpoint invoke --name $ENDPOINT_NAME --request-file endpoints/online/model-1/sample-request.jsonПолучение журналов развертывания:
az ml online-deployment get-logs --name blue --endpoint $ENDPOINT_NAME
Очистите ресурсы
Если конечная точка больше не нужна, выполните следующую команду, чтобы удалить ее.
az ml online-endpoint delete --name $ENDPOINT_NAME --yes --no-waitЕсли вам больше не нужна рабочая область, связанные с ней ресурсы и другие ресурсы в группе ресурсов, удалите их. Замените
<resource-group-name>именем группы ресурсов, содержащей рабочую область.az group delete --resource-group <resource-group-name>
Устранение неполадок
Создание конечной точки в Сети завершается сбоем с сообщением о устаревшем режиме версии 1
Управляемые сетевые конечные точки — это функция платформы API Машинного обучения Azure версии 2. Если рабочая область машинного обучения Azure настроена для устаревшего режима версии 1, управляемые сетевые конечные точки не работают. В частности, если для параметра рабочей области задано значение v1_legacy_mode, включен устаревший режим версии 1 и не поддерживается API версии 2.
Чтобы узнать, как отключить устаревший режим версии 1, ознакомьтесь с изменением сетевой изоляции с помощью новой платформы API в Azure Resource Manager.
Внимание
Обратитесь к команде сетевой безопасности перед настройкой v1_legacy_mode на false, так как устаревший режим версии 1 может быть включен не просто так.
Сбой при создании онлайн-конечной точки с аутентификацией на основе ключей
Используйте следующую команду, чтобы получить список сетевых правил хранилища ключей Azure для рабочей области. Замените <key-vault-name> именем своего хранилища ключей.
az keyvault network-rule list -n <key-vault-name>
Ответ для этой команды аналогичен следующему коду JSON:
{
"bypass": "AzureServices",
"defaultAction": "Deny",
"ipRules": [],
"virtualNetworkRules": []
}
Если значение bypass не равно AzureServices, используйте инструкции в разделе "Настройка параметров сети Azure Key Vault", чтобы задать для него значение AzureServices.
Ошибки при сетевой установке из-за ошибки загрузки образа
Примечание.
Эта проблема применяется при использовании устаревшего метода сетевой изоляции для управляемых сетевых конечных точек. В этом методе Машинное обучение Azure создает управляемую виртуальную сеть для каждого развертывания в конечной точке.
Проверьте, имеет ли
egress-public-network-accessфлаг значениеdisabledдля развертывания. Если этот флаг включен, а видимость реестра контейнеров является частной, ожидается этот сбой.Используйте следующую команду, чтобы проверить состояние подключения к частной конечной точке. Замените
<registry-name>именем Реестра контейнеров Azure для рабочей области:az acr private-endpoint-connection list -r <registry-name> --query "[?privateLinkServiceConnectionState.description=='Egress for Microsoft.MachineLearningServices/workspaces/onlineEndpoints'].{ID:id, status:privateLinkServiceConnectionState.status}"В коде ответа убедитесь, что
statusдля поля задано значениеApproved. Если значение не совпадает сApproved, используйте следующую команду, чтобы одобрить соединение. Замените<private-endpoint-connection-ID>идентификатором, возвращаемого предыдущей командой.az network private-endpoint-connection approve --id <private-endpoint-connection-ID> --description "Approved"
Не удается определить конечную точку для обработки результатов
Убедитесь, что клиент, отправивший запрос оценки, представляет виртуальную сеть, которая имеет доступ к рабочей области Машинного обучения Azure.
nslookupИспользуйте команду в имени узла конечной точки, чтобы получить сведения об IP-адресе:nslookup <endpoint-name>.<endpoint-region>.inference.ml.azure.comНапример, команда может выглядеть примерно так:
nslookup endpointname.westcentralus.inference.ml.azure.comОтвет содержит адрес, который должен находиться в диапазоне, предоставленном виртуальной сетью.
Примечание.
- Для конечной точки Kubernetes в Сети имя узла конечной точки должно быть CName (доменное имя), указанное в кластере Kubernetes.
- Если конечная точка использует HTTP, IP-адрес содержится в URI конечной точки, который можно получить из пользовательского интерфейса студии.
- Чтобы узнать дополнительные способы получения IP-адреса конечной точки, см. Обновите свой DNS с помощью полного доменного имени.
nslookupЕсли команда не распознает имя узла, выполните шаги в одном из следующих разделов.
Управляемые сетевые конечные точки
Используйте следующую команду, чтобы проверить, существует ли запись A в зоне частных доменных имен (DNS) для виртуальной сети.
az network private-dns record-set list -z privatelink.api.azureml.ms -o tsv --query [].nameРезультаты должны содержать запись, аналогичную
*.<GUID>.inference.<region>.Если значение вывода не возвращается, удалите частную конечную точку рабочей области и повторно создайте ее. Дополнительные сведения см. в статье Как настроить частную конечную точку.
Если рабочая область с частной конечной точкой использует пользовательский DNS-сервер, выполните следующую команду, чтобы убедиться, что разрешение с пользовательского DNS-сервера работает правильно:
dig <endpoint-name>.<endpoint-region>.inference.ml.azure.com
Сетевые конечные точки Kubernetes
Проверьте конфигурацию DNS в кластере Kubernetes.
Проверьте,
azureml-feработает ли маршрутизатор вывода машинного обучения Azure, как ожидалось. Чтобы выполнить эту проверку, выполните следующие действия.Выполните следующую команду в поде
azureml-fe:kubectl exec -it deploy/azureml-fe -- /bin/bashВыполните одну из следующих команд:
curl -vi -k https://localhost:<port>/api/v1/endpoint/<endpoint-name>/swagger.json "Swagger not found"Для HTTP используйте следующую команду:
curl https://localhost:<port>/api/v1/endpoint/<endpoint-name>/swagger.json "Swagger not found"
Если команда curl HTTPS завершается ошибкой или истекает время ожидания, но команда HTTP работает, проверьте, является ли сертификат допустимым.
Если предыдущий процесс не удалось определить запись A, используйте следующую команду, чтобы проверить, работает ли разрешение с виртуального общедоступного IP-адреса Azure DNS, 168.63.129.16:
dig @168.63.129.16 <endpoint-name>.<endpoint-region>.inference.ml.azure.comЕсли предыдущая команда выполняется успешно, устраните неполадки условного пересылателя для Azure Private Link на пользовательском DNS.
Не удается оценивать онлайн-развертывания
Выполните следующую команду, чтобы просмотреть состояние развертывания, которое не может быть оценено:
az ml online-deployment show -e <endpoint-name> -n <deployment-name> --query '{name:name,state:provisioning_state}'Значение
Succeededполяstateуказывает на успешное развертывание.Для успешного развертывания используйте следующую команду, чтобы проверить, назначен ли трафик развертыванию:
az ml online-endpoint show -n <endpoint-name> --query trafficОтвет этой команды должен содержать процент трафика, назначенного каждому развертыванию.
Совет
Этот шаг не нужен, если вы используете заголовок в запросе
azureml-model-deploymentдля целевого развертывания.Если назначения трафика или заголовок развертывания заданы правильно, используйте следующую команду, чтобы получить логи конечной точки.
az ml online-deployment get-logs -e <endpoint-name> -n <deployment-name>Просмотрите журналы, чтобы узнать, возникла ли проблема с выполнением кода вычисления оценки при отправке запроса во время развертывания.