Nota
El acceso a esta página requiere autorización. Puede intentar iniciar sesión o cambiar directorios.
El acceso a esta página requiere autorización. Puede intentar cambiar los directorios.
SE APLICA A:Extensión ML de la CLI de Azure v2 (actual)
SDK de Python azure-ai-ml v2 (actual)
En este artículo se muestra cómo usar el aislamiento de red para mejorar la seguridad de un punto de conexión en línea administrado de Azure Machine Learning. El aislamiento de red ayuda a proteger la comunicación entrante y saliente hacia y desde el punto de conexión.
Para ayudar a proteger la comunicación entrante, puede crear un punto de conexión en línea administrado que use el punto de conexión privado de un área de trabajo de Azure Machine Learning. Para permitir solo la comunicación saliente aprobada para las implementaciones, puede configurar el área de trabajo con una red virtual administrada. En este artículo se muestra cómo realizar estos pasos para mejorar la seguridad de los puntos de conexión. También se muestra cómo crear una implementación que use los puntos de conexión privados de la red virtual administrada del área de trabajo para la comunicación saliente.
Si prefiere usar el método heredado para el aislamiento de red, consulte los siguientes ejemplos de archivos de implementación en el repositorio de GitHub azureml-examples :
- Para una implementación que usa un modelo genérico: deploy-moe-vnet-legacy.sh
- Para una implementación que use un modelo de MLflow: deploy-moe-vnet-mlflow-legacy.sh
Requisitos previos
Una suscripción de Azure. Si no tiene una suscripción a Azure, cree una cuenta gratuita antes de empezar.
La CLI de Azure y la extensión de la CLI
ml
de Azure, instaladas y configuradas. Para más información, consulte Instalación y configuración de la CLI (v2).Sugerencia
La característica de red virtual administrada de Azure Machine Learning se introdujo el 23 de mayo de 2023. Si tiene una versión anterior de la
ml
extensión, es posible que tenga que actualizarla para que los ejemplos de este artículo funcionen. Para actualizar la extensión, use los siguientes comandos de la CLI de Azure:az extension update -n ml
Un shell de Bash o un shell compatible, por ejemplo, un shell en un sistema Linux o subsistema de Windows para Linux. Los ejemplos de la CLI de Azure en este artículo asumen que usted utiliza este tipo de shell.
Un grupo de recursos de Azure en el que usted o la entidad de servicio que usa tienen acceso como colaborador. Para obtener instrucciones para crear un grupo de recursos, consulte Configuración.
Una identidad administrada asignada por el usuario con los permisos adecuados, si desea usar una identidad administrada para crear y administrar puntos de conexión en línea e implementaciones en línea. Para obtener información detallada sobre los permisos necesarios, consulte Configuración de la autenticación entre Azure Machine Learning y otros servicios. Por ejemplo, necesita conceder a su identidad administrada permisos específicos de control de acceso basado en roles de Azure (Azure RBAC) para Azure Key Vault.
Migración desde el método de aislamiento de red heredado a una red virtual administrada por el área de trabajo
Si usa el método heredado para el aislamiento de red de puntos de conexión en línea administrados y desea migrar a una red virtual administrada para proteger los puntos de conexión, siga estos pasos:
- Cree una nueva área de trabajo y habilite una red virtual administrada. Para más información sobre cómo configurar una red virtual administrada para el área de trabajo, consulte Aislamiento de red virtual administrada para el área de trabajo.
- (Opcional) Si las implementaciones acceden a recursos privados distintos de Azure Storage, Key Vault y Azure Container Registry, agregue reglas de salida a la configuración de red del área de trabajo. En concreto, la red se configura con reglas para Azure Storage, Key Vault y Container Registry de forma predeterminada. Agregue reglas con puntos de conexión privados para cualquier otro recurso privado que use.
- (Opcional) Si piensa usar un registro de Azure Machine Learning, configure puntos de conexión privados para la comunicación saliente con el registro, su cuenta de almacenamiento y su instancia de Container Registry.
- Cree puntos de conexión e implementaciones en línea en el nuevo área de trabajo. Si usa registros de Azure Machine Learning, puede implementar directamente componentes de ellos. Para obtener más información, consulte Implementación del modelo desde el registro al punto de conexión en línea en el área de trabajo.
- Actualice las aplicaciones que invocan puntos de conexión para que las aplicaciones usen los URI de puntuación de los nuevos puntos de conexión en línea.
- Después de validar los nuevos puntos de conexión, elimine los puntos de conexión en línea en el área de trabajo anterior.
Si no necesita evitar tiempo de inactividad durante la migración, puede adoptar un enfoque más sencillo. Si no necesita mantener instancias de proceso, puntos de conexión en línea e implementaciones en el área de trabajo anterior, puede eliminar las instancias de proceso y, a continuación, actualizar el área de trabajo para habilitar una red virtual administrada.
Limitaciones
La
v1_legacy_mode
marca debe establecerse enfalse
para desactivar el modo heredado v1 en el área de trabajo de Azure Machine Learning. Si esta configuración está activada, no puede crear un punto de conexión en línea administrado. Para más información, consulte Cambio de aislamiento de red con nuestra nueva plataforma de API en Azure Resource Manager.Si el área de trabajo de Azure Machine Learning tiene un punto de conexión privado que se creó antes del 24 de mayo de 2022, debe volver a crear ese punto de conexión privado antes de configurar los puntos de conexión en línea para usar puntos de conexión privados. Para más información sobre cómo crear un punto de conexión privado para el área de trabajo, consulte Configuración de un punto de conexión privado para un área de trabajo de Azure Machine Learning.
Sugerencia
Para ver la fecha de creación de un área de trabajo, puede comprobar las propiedades del área de trabajo.
- En Azure Machine Learning Studio, vaya a la esquina superior derecha y seleccione el nombre del área de trabajo.
- En la ventana Directorio + Suscripción + Área de trabajo, seleccione Ver todas las propiedades en Azure Portal.
- En la página Información general de Azure Portal, vaya a la esquina superior derecha y seleccione Vista JSON.
- En la ventana JSON de recursos, en Versiones de API, seleccione la versión más reciente de la API.
- En la
properties
sección del código JSON, compruebe elcreationTime
valor.
Como alternativa, use uno de los métodos siguientes:
- SDK de Python:
Workspace.get(name=<workspace-name>, subscription_id=<subscription-ID>, resource_group=<resource-group-name>).get_details()
- API REST:
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>
Al usar el aislamiento de red para ayudar a proteger los puntos de conexión en línea, puede usar recursos asociados al área de trabajo de un grupo de recursos diferente al del grupo de recursos del área de trabajo. Sin embargo, estos recursos deben pertenecer a la misma suscripción e inquilino que el área de trabajo. Los recursos asociados a un área de trabajo incluyen Azure Container Registry, Azure Storage, Azure Key Vault y Application Insights.
Nota:
En este artículo se describe el aislamiento de red que se aplica a las operaciones del plano de datos. Estas operaciones resultan de solicitudes de puntuación o modelo de servicio. Las operaciones del plano de control, como las solicitudes para crear, actualizar, eliminar o recuperar claves de autenticación, se envían a Azure Resource Manager a través de la red pública.
Preparación del sistema
Cree variables de entorno mediante la ejecución de los siguientes comandos. Reemplace
<resource-group-name>
por el grupo de recursos para su espacio de trabajo. Reemplace<workspace-name>
por el nombre del área de trabajo.export RESOURCEGROUP_NAME="<resource-group-name>" export WORKSPACE_NAME="<workspace-name>"
Crear el área de trabajo El
-m allow_only_approved_outbound
parámetro configura una red virtual administrada para el área de trabajo y bloquea el tráfico saliente, excepto en los destinos aprobados.az ml workspace create -g $RESOURCEGROUP_NAME -n $WORKSPACE_NAME -m allow_only_approved_outbound
Como alternativa, si quiere permitir que la implementación envíe tráfico saliente a Internet, quite la marca de comentario del código siguiente y ejecútelo en su lugar.
# az ml workspace create -g $RESOURCEGROUP_NAME -n $WORKSPACE_NAME -m allow_internet_outbound
Para obtener más información sobre cómo crear un área de trabajo o actualizar el área de trabajo existente para usar una red virtual administrada, consulte Configuración de una red virtual administrada para permitir la salida de Internet.
Aprovisione la red virtual administrada. Para obtener instrucciones y más información, consulte Aprovisionamiento manual de una red virtual administrada.
Importante
Al configurar una red virtual administrada para un área de trabajo por primera vez, la red no se aprovisiona. No se pueden crear implementaciones en línea hasta que se aprovisione la red administrada.
Configure el registro de contenedores que está asociado al área de trabajo para usar un plan de precios premium. Esta configuración es necesaria para proporcionar acceso al Registro a través de un punto de conexión privado. Para más información, consulte Niveles de servicio de Azure Container Registry.
Configure el área de trabajo para usar un clúster de proceso o una instancia de proceso para compilar imágenes. Puede usar la
image_build_compute
propiedad para este propósito. Para obtener más información e instrucciones, consulte Configuración de compilaciones de imágenes.Configure los valores predeterminados para la CLI de Azure para evitar pasar los valores del área de trabajo y el grupo de recursos varias veces.
az configure --defaults workspace=$WORKSPACE_NAME group=$RESOURCEGROUP_NAME
Clone el repositorio de ejemplos para obtener los archivos de ejemplo del punto de conexión y la implementación y, a continuación, vaya al directorio de la cli del repositorio.
git clone --depth 1 https://github.com/Azure/azureml-examples cd azureml-examples/cli
Los comandos de este artículo se encuentran en el archivo deploy-managed-online-endpoint-workspacevnet.sh en el directorio cli. Los archivos de configuración de YAML se encuentran en el subdirectorio endpoints/online/managed/sample/.
Creación de un punto de conexión en línea administrado protegido
Para crear un punto de conexión en línea administrado protegido, cree el punto de conexión en el área de trabajo. A continuación, establezca el valor del public_network_access
punto de conexión en disabled
para controlar la comunicación entrante.
Esta configuración obliga al punto de conexión en línea a usar el punto de conexión privado del área de trabajo para la comunicación entrante. La única manera de invocar el punto de conexión en línea es mediante un punto de conexión privado que puede acceder al área de trabajo de la red virtual. Para más información, consulte Protección de solicitudes de puntuación de entrada y Configuración de un punto de conexión privado para un área de trabajo de Azure Machine Learning.
Dado que el área de trabajo está configurada para tener una red virtual administrada, las implementaciones de puntos de conexión usan los puntos de conexión privados de la red virtual administrada para la comunicación saliente.
Establezca el nombre del punto de conexión:
export ENDPOINT_NAME="<YOUR_ENDPOINT_NAME>"
Cree un endpoint con
public_network_access
establecido endisabled
para bloquear el tráfico entrante.az ml online-endpoint create --name $ENDPOINT_NAME -f endpoints/online/managed/sample/endpoint.yml --set public_network_access=disabled
Como alternativa, si quiere permitir que el punto de conexión reciba solicitudes de puntuación de Internet, quite la marca de comentario del código siguiente y ejecútelo en su lugar:
# az ml online-endpoint create --name $ENDPOINT_NAME -f endpoints/online/managed/sample/endpoint.yml
Prueba del punto de conexión
Cree una implementación en la red virtual administrada del área de trabajo:
az ml online-deployment create --name blue --endpoint $ENDPOINT_NAME -f endpoints/online/managed/sample/blue-deployment.yml --all-traffic
Si recibe un error sobre un error de autorización, compruebe la configuración de red de la cuenta de almacenamiento del área de trabajo. Es posible que tenga que ajustar la configuración de acceso a la red pública para conceder al área de trabajo acceso a la cuenta de almacenamiento.
Obtenga el estado de la implementación:
az ml online-endpoint show -n $ENDPOINT_NAME
Pruebe el punto de conexión mediante la emisión de una solicitud de puntuación:
az ml online-endpoint invoke --name $ENDPOINT_NAME --request-file endpoints/online/model-1/sample-request.json
Obtenga los registros de implementación:
az ml online-deployment get-logs --name blue --endpoint $ENDPOINT_NAME
Limpieza de recursos
Si ya no necesita el punto de conexión, ejecute el siguiente comando para eliminarlo.
az ml online-endpoint delete --name $ENDPOINT_NAME --yes --no-wait
Si ya no necesita el área de trabajo, sus recursos asociados y los demás recursos del grupo de recursos, elimínelos. Reemplace
<resource-group-name>
por el nombre del grupo de recursos que contiene el área de trabajo.az group delete --resource-group <resource-group-name>
Solución de problemas
Se produce un error en la creación de puntos de conexión en línea con un mensaje sobre el modo heredado v1
Los puntos de conexión en línea administrados son una característica de la plataforma de API de Azure Machine Learning v2. Si el área de trabajo de Azure Machine Learning está configurada para el modo heredado v1, los puntos de conexión en línea administrados no funcionan. Específicamente, si la configuración del v1_legacy_mode
workspace está establecida en true
, el modo heredado v1 está activado y no se admite compatibilidad con las API v2.
Para ver cómo desactivar el modo heredado v1, consulte Cambio de aislamiento de red con nuestra nueva plataforma de API en Azure Resource Manager.
Importante
Consulte con su equipo de seguridad de red antes de cambiar v1_legacy_mode
a false
, porque el modo heredado v1 podría estar activado por un motivo.
Error en la creación de puntos de conexión en línea con autenticación basada en claves
Use el siguiente comando para usar la lista de reglas de red de la instancia de Azure Key Vault para su área de trabajo. Reemplace <key-vault-name>
por el nombre del almacén de claves.
az keyvault network-rule list -n <key-vault-name>
La respuesta para este comando es similar al siguiente código JSON:
{
"bypass": "AzureServices",
"defaultAction": "Deny",
"ipRules": [],
"virtualNetworkRules": []
}
Si el valor de bypass
no es AzureServices
, use las instrucciones de Configurar configuración de red de Azure Key Vault para establecerlo en AzureServices
.
Las implementaciones en línea no se pueden realizar y producen un error de descarga de imagen
Nota:
Este problema se aplica cuando se usa el método de aislamiento de red heredado para los puntos de conexión en línea administrados. En este método, Azure Machine Learning crea una red virtual administrada para cada implementación en un punto de conexión.
Compruebe si la
egress-public-network-access
marca tiene un valor dedisabled
para la implementación. Si la marca está habilitada y la visibilidad del registro de contenedor es privada, se espera este error.Use el siguiente comando para comprobar el estado de la conexión del punto de conexión privado. Sustituya
<registry-name>
por el nombre del registro de contenedor de Azure para el área de trabajo.az acr private-endpoint-connection list -r <registry-name> --query "[?privateLinkServiceConnectionState.description=='Egress for Microsoft.MachineLearningServices/workspaces/onlineEndpoints'].{ID:id, status:privateLinkServiceConnectionState.status}"
En el código de respuesta, compruebe que en el campo
status
se ha seleccionadoApproved
. Si el valor no esApproved
, use el siguiente comando para aprobar la conexión. Reemplace por<private-endpoint-connection-ID>
el identificador que devuelve el comando anterior.az network private-endpoint-connection approve --id <private-endpoint-connection-ID> --description "Approved"
No se puede resolver el punto de conexión de puntuación
Compruebe que el cliente que emite la solicitud de puntuación es una red virtual que puede acceder al área de trabajo de Azure Machine Learning.
Use el
nslookup
comando en el nombre de host del punto de conexión para recuperar la información de la dirección IP:nslookup <endpoint-name>.<endpoint-region>.inference.ml.azure.com
Por ejemplo, el comando podría tener un aspecto similar al siguiente:
nslookup endpointname.westcentralus.inference.ml.azure.com
La respuesta contiene una dirección que debe estar en el rango proporcionado por la red virtual.
Nota:
- Para el punto de conexión en línea de Kubernetes, el nombre de host del punto de conexión debe ser el CName (nombre de dominio) especificado en el clúster de Kubernetes.
- Si el punto de conexión usa HTTP, la dirección IP se encuentra en el URI del punto de conexión, que puede obtener de la interfaz de usuario de Studio.
- Para obtener más formas de obtener la dirección IP del punto de conexión, consulte Actualización del DNS con un FQDN.
Si el
nslookup
comando no resuelve el nombre de host, realice las acciones de una de las secciones siguientes.
Puntos de conexión en línea administrados
Use el siguiente comando para comprobar si existe un registro A en la zona privada del sistema de nombres de dominio (DNS) de la red virtual.
az network private-dns record-set list -z privatelink.api.azureml.ms -o tsv --query [].name
Los resultados deberían contener una entrada similar a
*.<GUID>.inference.<region>
.Si no se devuelve ningún valor de inferencia, elimine el punto de conexión privado del área de trabajo y vuelva a crearlo. Para obtener más información, consulte Configuración de un punto de conexión privado.
Si el área de trabajo con un punto de conexión privado usa un servidor DNS personalizado, ejecute el siguiente comando para comprobar que la resolución del servidor DNS personalizado funciona correctamente:
dig <endpoint-name>.<endpoint-region>.inference.ml.azure.com
Puntos de conexión en línea de Kubernetes
Compruebe la configuración de DNS en el clúster de Kubernetes.
Compruebe si el enrutador de inferencia de Azure Machine Learning,
azureml-fe
, funciona según lo previsto. Para realizar esta comprobación, siga estos pasos:Ejecute el siguiente comando en el
azureml-fe
pod:kubectl exec -it deploy/azureml-fe -- /bin/bash
Ejecute uno de los siguientes comandos:
curl -vi -k https://localhost:<port>/api/v1/endpoint/<endpoint-name>/swagger.json "Swagger not found"
En el caso de HTTP, use el siguiente comando:
curl https://localhost:<port>/api/v1/endpoint/<endpoint-name>/swagger.json "Swagger not found"
Si se produce un error en el comando HTTPS de curl o se agota el tiempo de espera, pero el comando HTTP funciona, compruebe si el certificado es válido.
Si el proceso anterior no se resuelve en el registro A, use el siguiente comando para comprobar si la resolución funciona desde la dirección IP pública virtual de Azure DNS, 168.63.129.16:
dig @168.63.129.16 <endpoint-name>.<endpoint-region>.inference.ml.azure.com
Si el comando anterior se ejecuta correctamente, solucione los problemas del reenviador condicional para Azure Private Link en un DNS personalizado.
No se pueden puntuar las implementaciones en línea
Ejecute el comando siguiente para ver el estado de una implementación que no se puede puntuar:
az ml online-deployment show -e <endpoint-name> -n <deployment-name> --query '{name:name,state:provisioning_state}'
Un valor de
Succeeded
para elstate
campo indica una implementación correcta.Para una implementación correcta, use el siguiente comando para comprobar que el tráfico está asignado a la implementación:
az ml online-endpoint show -n <endpoint-name> --query traffic
La respuesta de este comando debe enumerar el porcentaje de tráfico asignado a cada implementación.
Sugerencia
Este paso no es necesario si se usa el encabezado
azureml-model-deployment
en la solicitud cuyo objetivo es esta implementación.Si las asignaciones de tráfico o el encabezado de implementación se establecen correctamente, use el siguiente comando para obtener los registros del punto de conexión:
az ml online-deployment get-logs -e <endpoint-name> -n <deployment-name>
Revise los registros para ver si hay un problema al ejecutar el código de puntuación al enviar una solicitud a la implementación.