Protección de un área de trabajo de Azure Machine Learning con redes virtuales
SE APLICA A:Extensión ML de la CLI de Azure v2 (actual)SDK de Python azure-ai-ml v2 (actual)
Sugerencia
Puede usar redes virtuales administradas de Azure Machine Learning en lugar de los pasos descritos en este artículo. Con una red virtual administrada, Azure Machine Learning se hace cargo del trabajo de aislamiento de red para el área de trabajo y los procesos administrados. También puede agregar puntos de conexión privados para los recursos necesarios para el área de trabajo, como la cuenta de Azure Storage. Para más información, consulte Aislamiento de red gestionada del área de trabajo.
En este artículo, aprenderá a proteger un área de trabajo de Azure Machine Learning y sus recursos asociados en una red virtual de Azure.
Este artículo forma parte de una serie sobre la protección de un flujo de trabajo de Azure Machine Learning. Consulte los demás artículos de esta serie:
- Información general sobre redes virtuales
- Protección del entorno de entrenamiento
- Protección del entorno de inferencia
- Habilitación de la función de Studio
- Uso de un DNS personalizado
- Uso de un firewall
- Aislamiento de red de la plataforma de API
Para obtener un tutorial sobre cómo crear un área de trabajo segura, vea Tutorial: Creación de un área de trabajo segura, Plantilla de Bicep o Plantilla de Terraform.
En este artículo aprenderá a habilitar los siguientes recursos de áreas de trabajo en una red virtual:
- Área de trabajo de Azure Machine Learning
- Cuentas de Azure Storage
- Azure Key Vault
- Azure Container Registry
Requisitos previos
Lea el artículo Introducción a la seguridad de red para comprender los escenarios comunes de redes virtuales y la arquitectura de red virtual general.
Lea el artículo Procedimientos recomendados de Azure Machine Learning para la seguridad empresarial para información sobre los procedimientos recomendados.
Una red virtual y una subred existentes que se usarán con los recursos de proceso.
Advertencia
No use el intervalo de direcciones IP 172.17.0.0/16 para la red virtual. Este es el intervalo de subred predeterminado que usa la red de puente de Docker y producirá errores si se usa para la red virtual. Otros intervalos también pueden estar en conflicto en función de lo que quiera conectarse a la red virtual. Por ejemplo, si planea conectar la red local a la red virtual y la red local también usa el intervalo 172.16.0.0/16. En última instancia, el usuario es el responsable de planear la infraestructura de red.
Para implementar recursos en una red virtual o subred, la cuenta de usuario debe tener permisos para realizar las siguientes acciones en los controles de acceso basados en roles de Azure (Azure RBAC):
- "Microsoft.Network/*/read" en el recurso de red virtual. Este permiso no es necesario para las implementaciones de plantillas de Azure Resource Manager (ARM).
- "Microsoft.Network/virtualNetworks/join/action" en el recurso de red virtual.
- "Microsoft.Network/virtualNetworks/subnets/join/action" en el recurso de subred.
Para obtener más información sobre Azure RBAC con redes, consulte los roles integrados de redes.
Azure Container Registry
La instancia de Azure Container Registry debe tener la versión Prémium. Para más información sobre la actualización, vea Cambio de SKU.
Si la instancia de Azure Container Registry usa un punto de conexión privado, se recomienda que esté en la misma red virtual que la cuenta de almacenamiento y los destinos de proceso utilizados para entrenamiento o inferencia. Sin embargo, también puede estar en una red virtual emparejada.
Si usa un punto de conexión de servicio, debe estar en la misma red virtual y subred que la cuenta de almacenamiento y los destinos de proceso.
El área de trabajo de Azure Machine Learning debe contener un clúster de proceso de Azure Machine Learning.
Limitaciones
Cuenta de almacenamiento de Azure
Si tiene previsto usar Estudio de Azure Machine Learning y la cuenta de almacenamiento también se encuentra en la red virtual, existen requisitos de validación adicionales:
- Si la cuenta de almacenamiento usa un punto de conexión de servicio, el punto de conexión privado del área de trabajo y el punto de conexión de servicio de almacenamiento deben estar en la misma subred de la red virtual.
- Si la cuenta de almacenamiento usa un punto de conexión privado, el punto de conexión privado del área de trabajo y el punto de conexión privado del almacenamiento deben estar en la misma red virtual. En este caso, pueden estar en subredes diferentes.
Azure Container Instances
Cuando el área de trabajo de Azure Machine Learning está configurada con un punto de conexión privado, no soporta la implementación en Azure Container Instances en una red virtual. En su lugar, considere la posibilidad de usar un punto de conexión en línea administrado con aislamiento de red.
Azure Container Registry
Cuando el área de trabajo de Azure Machine Learning o cualquier recurso está configurado con un punto de conexión privado, puede que sea necesario configurar un clúster de proceso administrado por el usuario para las compilaciones de imágenes del entorno de AzureML. El escenario predeterminado aprovecha proceso sin servidor y actualmente está pensado para escenarios sin restricciones de red en los recursos asociados al área de trabajo de AzureML.
Importante
El clúster de proceso que se usa para compilar imágenes de Docker debe poder acceder a los repositorios de paquetes que se usan para entrenar e implementar los modelos. Es posible que tenga que agregar reglas de seguridad de red que permitan el acceso a repositorios públicos, usar paquetes de Python privados o usar imágenes de Docker personalizadas (SDK v1) que ya incluyan los paquetes.
Advertencia
Si Azure Container Registry usa un punto de conexión privado o un punto de conexión de servicio para comunicarse con la red virtual, no podrá usarse una identidad administrada con un clúster de proceso de Azure Machine Learning.
Azure Monitor
Advertencia
Azure Monitor admite el uso Azure Private Link para conectarse a una red virtual. Sin embargo, debe usar el modo de Private Link abierto en Azure Monitor. Para obtener más información, consulte Modos de acceso de Private Link: Solo privado frente a abierto.
Acceso obligatorio a una red de Internet pública
Azure Machine Learning requiere acceso entrante y saliente a la red pública de Internet. En las tablas siguientes se proporciona información general sobre el acceso necesario y para qué sirve. En el caso de las etiquetas de servicio que terminan en .region
, reemplace region
por la región de Azure que contiene el área de trabajo. Por ejemplo, Storage.westus
:
Sugerencia
En la pestaña requerida se enumera la configuración necesaria de entrada y de salida. La pestaña situacional muestra configuraciones opcionales de entrada y de salida que necesitan algunas configuraciones específicas que quizás quiera habilitar.
Dirección | Protocolo y ports |
Etiqueta de servicio | Propósito |
---|---|---|---|
Salida | TCP: 80, 443 | AzureActiveDirectory |
Autenticación mediante Microsoft Entra ID. |
Salida | TCP: 443, 18881 UDP: 5831 |
AzureMachineLearning |
Usar los servicios de Azure Machine Learning. IntelliSense de Python en cuadernos usa el puerto 18881. La creación, actualización y eliminación de una instancia de proceso de Azure Machine Learning usa el puerto 5831. |
Salida | ANY: 443 | BatchNodeManagement.region |
Comunicación con el back-end de Azure Batch para las instancias o clústeres de proceso de Azure Machine Learning. |
Salida | TCP: 443 | AzureResourceManager |
Creación de recursos de Azure con Azure Machine Learning, CLI de Azure y el SDK de Azure Machine Learning. |
Salida | TCP: 443 | Storage.region |
Acceda a los datos almacenados en la cuenta de Azure Storage para el clúster de proceso y la instancia de proceso. Para obtener información sobre cómo evitar la filtración de datos en esta salida, consulte Protección contra la filtración de datos. |
Salida | TCP: 443 | AzureFrontDoor.FrontEnd * No es necesario en Microsoft Azure operado por 21Vianet. |
Establecer un punto de entrada global para Estudio de Azure Machine Learning. Almacene imágenes y entornos para AutoML. Para obtener información sobre cómo evitar la filtración de datos en esta salida, consulte Protección contra la filtración de datos. |
Salida | TCP: 443 | MicrosoftContainerRegistry.region Sepa que esta etiqueta tiene una dependencia en la etiqueta AzureFrontDoor.FirstParty |
Acceder a las imágenes de Docker proporcionadas por Microsoft. Configurar el enrutador de Azure Machine Learning para Azure Kubernetes Service. |
Sugerencia
Si necesita las direcciones IP, en lugar de etiquetas de servicio, use una de las siguientes opciones:
- Descargue una lista de intervalos de direcciones IP y etiquetas de servicio de Azure.
- Use el comando az network list-service-tags de la CLI de Azure.
- Use el comando Get-AzNetworkServiceTag de Azure PowerShell.
Las direcciones IP pueden cambiar periódicamente.
También es posible que tenga que permitir el tráfico saliente a Visual Studio Code y a sitios que no son de Microsoft para la instalación de los paquetes requeridos por el proyecto de aprendizaje automático. En la tabla siguiente se enumeran los repositorios usados habitualmente para el aprendizaje automático:
Nombre de host | Propósito |
---|---|
anaconda.com *.anaconda.com |
Se usa para instalar paquetes predeterminados. |
*.anaconda.org |
Se usa para obtener datos del repositorio. |
pypi.org |
Se usa para enumerar las dependencias del índice predeterminado, si hay alguna, y el índice no se sobrescribe con la configuración del usuario. Si el índice se sobrescribe, también debe permitir *.pythonhosted.org . |
cloud.r-project.org |
Se usar al instalar paquetes CRAN para el desarrollo en R. |
*.pytorch.org |
Se usa en algunos ejemplos basados en PyTorch. |
*.tensorflow.org |
Se usa en algunos ejemplos basados en TensorFlow. |
code.visualstudio.com |
Necesario para descargar e instalar el escritorio de Visual Studio Code. Esto no es necesario para la versión web de Visual Studio Code. |
update.code.visualstudio.com *.vo.msecnd.net |
Se usa para recuperar bits de servidor de Visual Studio Code que se instalan en la instancia de proceso por medio de un script de instalación. |
marketplace.visualstudio.com vscode.blob.core.windows.net *.gallerycdn.vsassets.io |
Necesario para descargar e instalar extensiones de Visual Studio Code. Estos hosts habilitan la conexión remota con instancias de proceso proporcionadas mediante la extensión de Azure Machine Learning para Visual Studio Code. Para más información, consulte Conexión a una instancia de proceso de Azure Machine Learning en Visual Studio Code. |
raw.githubusercontent.com/microsoft/vscode-tools-for-ai/master/azureml_remote_websocket_server/* |
Se usa para recuperar bits de servidor de WebSocket que se instalan en la instancia de proceso. El servidor de WebSocket se usa para transmitir solicitudes desde el cliente de Visual Studio Code (aplicación de escritorio) al servidor de Visual Studio Code que se ejecuta en la instancia de proceso. |
Nota
Al usar la extensión de VS Code de Azure Machine Learning, la instancia de proceso remota requerirá un acceso a los repositorios públicos para instalar los paquetes requeridos por la extensión. Si la instancia de proceso requiere un proxy para acceder a estos repositorios públicos o a Internet, deberá establecer y exportar las variables de entorno HTTP_PROXY
y HTTPS_PROXY
en el archivo ~/.bashrc
de la instancia de proceso. Este proceso se puede automatizar en el momento del aprovisionamiento mediante un script personalizado.
Al usar Azure Kubernetes Service (AKS) con Azure Machine Learning, habilite el tráfico siguiente a la red virtual de AKS:
- Requisitos generales de entrada y salida para AKS, tal como se describe en el artículo Restricción del tráfico de salida en Azure Kubernetes Service.
- Tráfico de salida a mcr.microsoft.com.
- Al implementar un modelo en un clúster de AKS, use las instrucciones del artículo Implementación de modelos de ML en Azure Kubernetes Service.
Para obtener información sobre el uso de una solución de firewall, consulte Configuración de la comunicación de entrada y salida necesarias.
Protección del área de trabajo con punto de conexión privado
Azure Private Link le permite conectarse a su área de trabajo mediante un punto de conexión privado. El punto de conexión privado es un conjunto de direcciones IP privadas dentro de la red virtual. Después, puede limitar el acceso al área de trabajo para que solo se produzca en las direcciones IP privadas. Un punto de conexión privado ayuda a reducir el riesgo de una filtración de datos.
Para obtener más información sobre cómo configurar un punto de conexión privado para el área de trabajo, vea Procedimientos para configurar un punto de conexión privado.
Advertencia
La protección de un área de trabajo con puntos de conexión privados no garantiza la seguridad de un extremo a otro por sí misma. Debe seguir los pasos que se describen en el resto de este artículo y la serie de redes virtuales para proteger componentes individuales de la solución. Por ejemplo, si usa un punto de conexión privado para el área de trabajo, pero la cuenta de Azure Storage no está detrás de la red virtual, el tráfico entre el área de trabajo y el almacenamiento no usa la red virtual por motivos de seguridad.
Protección de cuentas de Azure Storage
Azure Machine Learning admite cuentas de almacenamiento configuradas para usar un punto de conexión privado o un punto de conexión de servicio.
En Azure Portal, seleccione la cuenta de Azure Storage.
Use la información de Uso de puntos de conexión privados para Azure Storage para agregar puntos de conexión privados para los siguientes recursos de almacenamiento:
- Blob
- Archivo
- Cola: solo es necesario si tiene previsto usar Puntos de conexión de Batch o ParallelRunStep en una canalización de Azure Machine Learning.
- Tabla: solo es necesario si tiene previsto usar Puntos de conexión de Batch o ParallelRunStep en una canalización de Azure Machine Learning.
Sugerencia
Al configurar una cuenta de almacenamiento que no sea el almacenamiento predeterminado, seleccione el tipo Subrecurso de destino correspondiente a la cuenta de almacenamiento que quiere agregar.
Después de crear los puntos de conexión privados para los recursos de almacenamiento, seleccione la pestaña Firewalls y redes virtuales en Redes en la cuenta de almacenamiento.
Seleccione Redes seleccionadas y, a continuación, en Instancias de recursos, seleccione
Microsoft.MachineLearningServices/Workspace
como Tipo de recurso. Seleccione el área de trabajo mediante Nombre de instancia. Para más información, consulte Acceso de confianza basado en la identidad administrada asignada por el sistema.Sugerencia
O bien, seleccione Allow Azure services on the trusted services list to access this storage account (Permitir que los servicios de Azure de la lista de servicios de confianza accedan a esta cuenta de almacenamiento) para permitir un mayor acceso de los servicios de confianza. Para más información, vea Configuración de Firewalls y redes virtuales de Azure Storage.
Para guardar la configuración, seleccione Guardar.
Sugerencia
Al usar un punto de conexión privado, también puede deshabilitar el acceso anónimo. Para más información, consulte no permitir el acceso anónimo.
Protección de Azure Key Vault
Azure Machine Learning usa una instancia de Key Vault asociada para almacenar las siguientes credenciales:
- La cadena de conexión de cuenta de almacenamiento asociada
- Contraseñas para las instancias de Azure Container Repository
- Cadenas de conexión a almacenes de datos
Azure Key Vault se puede configurar para usar un punto de conexión privado o un punto de conexión de servicio. Para usar las funcionalidades de experimentación de Azure Machine Learning con Azure Key Vault detrás de una red virtual, siga los pasos siguientes:
Sugerencia
Se recomienda que el almacén de claves esté en la misma red virtual que el área de trabajo, pero puede estar en una red virtual emparejada.
Para información sobre cómo usar un punto de conexión privado con Azure Key Vault, consulte Integración de Key Vault con Azure Private Link.
Habilitación de un registro de Azure Container Registry (ACR)
Sugerencia
Si no usó una instancia de Azure Container Registry existente al crear el área de trabajo, es posible que no exista ninguna. De forma predeterminada, el área de trabajo no creará ninguna instancia de ACR hasta que necesite una. Para forzar la creación de una, entrene o implemente un modelo mediante el área de trabajo antes de seguir los pasos de esta sección.
Puede configurar Azure Container Registry para usar un punto de conexión privado. Siga estos pasos para configurar el área de trabajo a fin de que use ACR cuando se encuentre en la red virtual:
Busque el nombre de la instancia de Azure Container Registry para el área de trabajo mediante alguno de los métodos siguientes:
SE APLICA A: Extensión de ML de la CLI de Azure v2 (actual)
Si ha instalado la extensión v2 de Machine Learning para la CLI de Azure, puede usar el comando
az ml workspace show
para mostrar la información del área de trabajo. La extensión v1 no devuelve esta información.az ml workspace show -n yourworkspacename -g resourcegroupname --query 'container_registry'
Este comando devuelve un valor similar a
"/subscriptions/{GUID}/resourceGroups/{resourcegroupname}/providers/Microsoft.ContainerRegistry/registries/{ACRname}"
. La última parte de la cadena es el nombre de Azure Container Registry para el área de trabajo.Limite el acceso a la red virtual mediante los pasos descritos en Conexión privada a Azure Container Registry. Al agregar la red virtual, seleccione la red virtual y la subred para los recursos de Azure Machine Learning.
Configure la instancia de ACR del área de trabajo para permitir el acceso de los servicios de confianza.
De manera predeterminada, Azure Machine Learning intentará usar un proceso sin servidor para compilar la imagen. Esto solo funciona cuando los recursos dependientes del área de trabajo, como la cuenta de almacenamiento o Container Registry, no están bajo ninguna restricción de red (puntos de conexión privados). Si los recursos dependientes del área de trabajo están restringidos a la red, use image-build-compute en su lugar.
Para configurar un proceso de compilación de imágenes, cree un clúster de proceso de la SKU de CPU de Azure Machine Learning en la misma red virtual que los recursos dependientes del área de trabajo. Después, este clúster se puede establecer como proceso predeterminado de compilación de imágenes y se usará para compilar todas las imágenes del área de trabajo desde ese punto en adelante. Use uno de los siguientes métodos para configurar el área de trabajo a fin de compilar imágenes de Docker mediante el clúster de proceso.
Importante
Las siguientes limitaciones se aplican al usar un clúster de proceso para las compilaciones de imágenes:
- Solo se admite una SKU de CPU.
- Si usa un clúster de proceso que no está configurado para ninguna IP pública, deberá buscar alguna manera para que el clúster acceda a la red pública de Internet. Se necesita tener acceso a Internet para acceder a imágenes almacenadas en Microsoft Container Registry, paquetes instalados en Pypi, Conda, etc. Debe configurar el enrutamiento definido por el usuario (UDR) para llegar a una IP pública y acceder a Internet. Por ejemplo, puede usar una IP pública del firewall o bien Virtual Network NAT con una IP pública. Para obtener más información, consulte Entrenamiento seguro en una red virtual.
Puede usar el comando
az ml workspace update
para establecer un recurso de proceso de compilación. El comando es el mismo para las extensiones de la versión v1 y v2 de la CLI de Azure para Machine Learning. En el siguiente comando, reemplacemyworkspace
por el nombre del área de trabajo,myresourcegroup
por el grupo de recursos que contiene el área de trabajo ymycomputecluster
por el nombre del clúster de proceso:az ml workspace update --name myworkspace --resource-group myresourcegroup --image-build-compute mycomputecluster
Puede volver al proceso sin servidor ejecutando el mismo comando y haciendo referencia al proceso como un espacio vacío:
--image-build-compute ''
.
Sugerencia
Si ACR está detrás de una red virtual, también puede deshabilitar el acceso público a la misma.
Protección de Azure Monitor y Application Insights
Para habilitar el aislamiento de red para Azure Monitor y la instancia de Application Insights del área de trabajo, siga estos pasos:
Abra su recurso de Application Insights en Azure Portal. La pestaña Información general puede tener o no una propiedad de Área de trabajo. Si no tiene la propiedad, realice el paso 2. Si sí la tiene, puede continuar directamente con el paso 3.
Sugerencia
De manera predeterminada, las nuevas áreas de trabajo crean un recurso de Application Insights basado en áreas de trabajo. Si el área de trabajo se creó recientemente, no tendría que realizar el paso 2.
Actualice la instancia de Application Insights del área de trabajo. Para conocer los pasos sobre cómo actualizar, consulte Migración a recursos de Application Insights basados en áreas de trabajo.
Cree un ámbito de Private Link de Azure Monitor y agregue la instancia de Application Insights del paso 1 al ámbito. Para más información, consulte Configuración del vínculo privado de Azure Monitor.
Conexión segura al área de trabajo
Para conectarse a un área de trabajo protegida en una red virtual, use uno de los métodos siguientes:
Azure VPN Gateway: conecta redes locales a la VNet mediante una conexión privada. La conexión se realiza a través de la red pública de Internet. Hay dos tipos de puertas de enlace de VPN que puede usar:
- De punto a sitio: cada equipo cliente usa un cliente VPN para conectarse a la red virtual.
- De sitio a sitio: un dispositivo VPN conecta la red virtual a la red local.
ExpressRoute: conecta redes locales a la nube mediante una conexión privada. La conexión se realiza mediante un proveedor de conectividad.
Azure Bastion: en este escenario, se crea una máquina virtual de Azure (a veces denominada "jump box") dentro de la VNet. A continuación, se conecta a la máquina virtual mediante Azure Bastion. Bastion permite conectarse a la máquina virtual mediante una sesión RDP o SSH desde el explorador web local. A continuación, use la jump box como entorno de desarrollo. Puesto que está dentro de la VNet, puede acceder directamente al área de trabajo. Para obtener un ejemplo de cómo usar un jumpbox, vea Tutorial: Creación de un área de trabajo segura.
Importante
Al usar una puerta de enlace de VPN o ExpressRoute, deberá planear cómo funciona la resolución de nombres entre los recursos locales y los de la red virtual. Para obtener más información, vea Creación de un servidor DNS personalizado.
Si tiene problemas para conectarse al área de trabajo, consulte Solución de problemas de conectividad segura del área de trabajo.
Diagnóstico del área de trabajo
Puede ejecutar diagnósticos en el área de trabajo desde Azure Machine Learning Studio o el SDK de Python. Después de ejecutar el diagnóstico, se devuelve una lista de los problemas detectados. Esta lista incluye vínculos a posibles soluciones. Para más información, consulte Uso de diagnósticos del área de trabajo.
Acceso público al área de trabajo
Importante
Aunque se trata de una configuración compatible con Azure Machine Learning, Microsoft no la recomienda. Debe comprobar esta configuración con el equipo de seguridad antes de usarla en producción.
En algunos casos, puede que necesite permitir el acceso al área de trabajo desde la red pública (sin conectarse a través de la red virtual usando los métodos detallados en la sección Conectarse de forma segura a su área de trabajo). El acceso a través de la red pública de Internet está protegido mediante TLS.
Para habilitar el acceso a la red pública a un área de trabajo, siga estos pasos:
- Habilite el acceso público al área de trabajo después de configurar el punto de conexión privado del área de trabajo.
- Configure el firewall de Azure Storage para permitir la comunicación con la dirección IP de los clientes que se conectan a través de la red pública de Internet. Es posible que tenga que cambiar la dirección IP permitida si los clientes no tienen una dirección IP estática. Por ejemplo, si uno de sus científicos de datos trabaja desde casa y no puede establecer una conexión VPN a la red virtual.
Pasos siguientes
Este artículo forma parte de una serie sobre la protección de un flujo de trabajo de Azure Machine Learning. Consulte los demás artículos de esta serie:
- Información general sobre redes virtuales
- Protección del entorno de entrenamiento
- Protección del entorno de inferencia
- Habilitación de la función de Studio
- Uso de un DNS personalizado
- Uso de un firewall
- Tutorial: Creación de un área de trabajo segura
- Plantilla de Bicep
- Plantilla de Terraform.
- Aislamiento de red de la plataforma de API