Administración de vulnerabilidades de Azure Machine Learning
La administración de vulnerabilidades implica detectar, evaluar y mitigar las vulnerabilidades de seguridad que existen en los sistemas y el software de una organización, así como informar sobre ellas. La administración de vulnerabilidades es una responsabilidad compartida entre el usuario y Microsoft.
En este artículo se describen estas responsabilidades y los controles de administración de vulnerabilidades que proporciona Azure Machine Learning. Aprenderá a mantener actualizadas las aplicaciones y la instancia de servicio con las actualizaciones de seguridad más recientes, así como a minimizar la ventana de oportunidad para los atacantes.
Imágenes de máquina virtual administradas por Microsoft
Azure Machine Learning administra las imágenes de máquina virtual (VM) del sistema operativo del host para las instancias de proceso de Azure Machine Learning, los clústeres de proceso de Azure Machine Learning y las instancias de Data Science Virtual Machine. La frecuencia de actualización es mensual e incluye los siguientes detalles:
Para cada nueva versión de imagen de máquina virtual, las actualizaciones más recientes proceden del anunciante original del sistema operativo. El uso de las actualizaciones más recientes ayuda a garantizar que se obtienen todas las revisiones relacionadas con el sistema operativo. En el caso de Azure Machine Learning, Canonical es el anunciante de todas las imágenes de Ubuntu. Estas imágenes se usan para los clústeres y las instancias de proceso de Azure Machine Learning y las instancias de Data Science Virtual Machine.
Las imágenes de máquina virtual se actualizan mensualmente.
Además de las revisiones que aplica el anunciante original, Azure Machine Learning actualiza los paquetes del sistema cuando hay actualizaciones disponibles.
Azure Machine Learning comprueba y valida los paquetes de aprendizaje automático que pueden requerir una actualización. En la mayoría de los casos, las nuevas imágenes de máquina virtual contienen las versiones más recientes de los paquetes.
Todas las imágenes de máquina virtual se compilan en suscripciones seguras que ejecutan el examen de vulnerabilidades periódicamente. Azure Machine Learning marca las vulnerabilidades no actualizadas y las corrige en la siguiente versión.
La frecuencia es un intervalo mensual para la mayoría de las imágenes. En el caso de las instancias de proceso, la versión de imagen se alinea con la cadencia de versión del SDK de Azure Machine Learning preinstalado en el entorno.
Además de la cadencia de versión normal, Azure Machine Learning aplica revisiones si se muestran vulnerabilidades. Microsoft implementa revisiones en un plazo de 72 horas para los clústeres de proceso de Azure Machine Learning y en una semana para las instancias de proceso.
Nota:
El sistema operativo del host no es la versión del sistema operativo que puede especificar para un entorno al entrenar o implementar un modelo. Los entornos se ejecutan dentro de Docker. Docker se ejecuta en el sistema operativo del host.
Imágenes de contenedor administradas por Microsoft
Las imágenes de Docker base que Azure Machine Learning mantiene con frecuencia obtienen revisiones de seguridad para solucionar las vulnerabilidades recién detectadas.
Azure Machine Learning publica actualizaciones para las imágenes admitidas cada dos semanas a fin de abordar las vulnerabilidades. Como compromiso, nuestro objetivo es no tener vulnerabilidades de más de 30 días en la versión más reciente de las imágenes admitidas.
Las imágenes revisadas se publican en una nueva etiqueta inmutable y una etiqueta :latest
actualizada. El uso de la etiqueta :latest
o el anclaje a una versión de imagen determinada puede ser un equilibrio entre la seguridad y la reproducibilidad del entorno para el trabajo de aprendizaje automático.
Administración de entornos e imágenes de contenedor
La reproducibilidad es un aspecto clave del desarrollo de software y la experimentación de aprendizaje automático. El enfoque principal del componente del entorno de Azure Machine Learning es garantizar la reproducibilidad del entorno donde se ejecuta el código del usuario. Para garantizar la reproducibilidad de cualquier trabajo de aprendizaje automático, las imágenes compiladas anteriores se extraen en los nodos de proceso sin necesidad de volver a materializarlas.
Aunque Azure Machine Learning revisa las imágenes base con cada versión, el uso de la imagen más reciente puede ser un equilibrio entre reproducibilidad y administración de vulnerabilidades. Es su responsabilidad elegir la versión del entorno que usa para los trabajos o implementaciones de modelos.
De forma predeterminada, las dependencias se superponen a las imágenes base que proporciona Azure Machine Learning al compilar entornos. También puede usar sus propias imágenes base cuando use entornos en Azure Machine Learning. Después de instalar más dependencias sobre las imágenes proporcionadas por Microsoft o incorpore sus propias imágenes base, la administración de vulnerabilidades pasa a ser su responsabilidad.
Hay una instancia de Azure Container Registry asociada con el área de trabajo de Azure Machine Learning. Dicha instancia funciona como caché para las imágenes de contenedor. Cualquier imagen que materialice se inserta en el registro de contenedor. El área de trabajo la usa si se desencadena la experimentación o la implementación para el entorno correspondiente.
Azure Machine Learning no elimina ninguna imagen del registro de contenedor. Usted es responsable de evaluar la necesidad de una imagen a lo largo del tiempo. Para supervisar y mantener la protección del entorno, puede usar Microsoft Defender para Container Registry a fin de obtener ayuda para examinar las imágenes en busca de vulnerabilidades. Para automatizar los procesos basados en desencadenadores de Microsoft Defender, consulte Automatización de respuestas de corrección.
Uso de un repositorio de paquetes privado
Azure Machine Learning usa Conda y Pip para instalar paquetes de Python. De forma predeterminada, Azure Machine Learning descarga paquetes de repositorios públicos. Si su organización requiere que los paquetes de origen solo se realicen desde repositorios privados, como fuentes de Azure DevOps, puede invalidar la configuración de Conda y Pip como parte de las imágenes base y las configuraciones de entorno para las instancias de proceso.
En la siguiente configuración de ejemplo, se muestra cómo quitar los canales predeterminados y agregar sus propias fuentes privadas de Conda y Pip. Considere la posibilidad de usar scripts de configuración de instancias de proceso para la automatización.
RUN conda config --set offline false \
&& conda config --remove channels defaults || true \
&& conda config --add channels https://my.private.conda.feed/conda/feed \
&& conda config --add repodata_fns <repodata_file_on_your_server>.json
# Configure Pip private indexes and ensure that the client trusts your host
RUN pip config set global.index https://my.private.pypi.feed/repository/myfeed/pypi/ \
&& pip config set global.index-url https://my.private.pypi.feed/repository/myfeed/simple/
# In case your feed host isn't secured through SSL
RUN pip config set global.trusted-host http://my.private.pypi.feed/
Para obtener información sobre cómo especificar sus propias imágenes base en Azure Machine Learning, consulte Creación de un entorno a partir de un contexto de compilación de Docker. Para obtener más información sobre cómo configurar entornos de Conda, consulte Creación manual de un archivo de entorno en el sitio de Conda.
Administración de vulnerabilidades en hosts de proceso
Los nodos de proceso administrados en Azure Machine Learning usan imágenes de máquina virtual del sistema operativo administradas por Microsoft. Al aprovisionar un nodo, extrae la imagen de máquina virtual actualizada más reciente. Este comportamiento se aplica a la instancia de proceso, al clúster de proceso, al proceso sin servidor (versión preliminar) y a las opciones de proceso de inferencia administrada.
Aunque las imágenes de máquina virtual del sistema operativo se revisan periódicamente, Azure Machine Learning no examina activamente los nodos de proceso para detectar vulnerabilidades mientras están en uso. Para obtener una capa adicional de protección, considere la posibilidad de aislar la red del proceso.
Asegurarse de que el entorno está actualizado y que los nodos de proceso usan la versión más reciente del sistema operativo es una responsabilidad compartida entre usted y Microsoft. Los nodos que no están inactivos no se pueden actualizar a la imagen de máquina virtual más reciente. Las consideraciones son ligeramente diferentes para cada tipo de proceso, como se muestra en las secciones siguientes.
Instancia de proceso
Las instancias de proceso obtienen las imágenes de máquina virtual más recientes en el momento del aprovisionamiento. Microsoft publica nuevas imágenes de máquina virtual mensualmente. Después de implementar una instancia de proceso, no se actualiza activamente. Puede consultar la versión del sistema operativo de una instancia. Para mantenerse al día con las actualizaciones de software y las revisiones de seguridad más recientes, puede usar uno de estos métodos:
Volver a crear una instancia de proceso para obtener la imagen más reciente del sistema operativo (recomendado).
Si usa este método, se perderán los datos y las personalizaciones, como los paquetes instalados que están almacenados en el sistema operativo de la instancia y los discos temporales.
Al volver a crear la instancia:
- Almacene cuadernos en los archivos de usuario del directorio para conservarlos.
- Monte los datos para conservar archivos.
Para más información sobre las versiones de imágenes, consulte Notas de la versión de la imagen de instancia de proceso de Azure Machine Learning.
Actualice periódicamente los paquetes del sistema operativo y Python.
Use herramientas de administración de paquetes de Linux para actualizar la lista de paquetes con las versiones más recientes:
sudo apt-get update
Use herramientas de administración de paquetes de Linux para actualizar los paquetes a las versiones más recientes. Es posible que se produzcan conflictos de paquetes al usar este enfoque.
sudo apt-get upgrade
Use herramientas de administración de paquetes de Python para actualizar los paquetes y comprobar si hay actualizaciones:
pip list --outdated
Puede instalar y ejecutar software de detección adicional en la instancia de proceso para buscar problemas de seguridad:
- UseTrivy para detectar puntos vulnerables de nivel de paquete de Python y del sistema operativo.
- Use ClamAV para detectar malware. Viene preinstalado en instancias de proceso.
Actualmente no se admite la instalación del agente de Microsoft Defender para servidores.
Considere la posibilidad de usar scripts de personalización para la automatización. Para ver un script de configuración de ejemplo que combina Trivy y ClamAV, consulte Scripts de configuración de ejemplo de instancia de proceso.
Clústeres de proceso
Los clústeres de proceso actualizan automáticamente los nodos a la imagen de máquina virtual más reciente. Si configura el clúster con min nodes = 0
, actualiza automáticamente los nodos a la versión más reciente de la imagen de máquina virtual cuando se completan todos los trabajos y el clúster se reduce a cero nodos.
En las siguientes condiciones, los nodos de clúster no se reducen verticalmente, por lo que no pueden obtener la imagen de máquina virtual más reciente:
- El número mínimo de nodos del clúster se establece en un valor mayor que cero.
- Los trabajos se programan continuamente en el clúster.
Es responsable de reducir el escalado de los nodos de clúster no inactivos para obtener las actualizaciones más recientes de la imagen de máquina virtual del sistema operativo. Azure Machine Learning no detiene ninguna carga de trabajo en ejecución en los nodos de proceso para emitir actualizaciones de máquinas virtuales. Cambie temporalmente el número mínimo de nodos a cero y permita que el clúster se reduzca a cero nodos.
Puntos de conexión en línea administrados
Los puntos de conexión en línea administrados reciben automáticamente las actualizaciones de la imagen del host del sistema operativo que incluyen correcciones de vulnerabilidades. La frecuencia de actualización de las imágenes es al menos una vez al mes.
Los nodos de proceso se actualizan automáticamente a la versión más reciente de la imagen de máquina virtual cuando se publica esa versión. No tiene que realizar ninguna acción.
Clústeres de Kubernetes administrados por el cliente
El proceso de Kubernetes permite configurar clústeres de Kubernetes para el entrenamiento, realizar inferencias y administrar modelos en Azure Machine Learning.
Como el usuario administra el entorno con Kubernetes, la administración de las vulnerabilidades de las imágenes de contenedor y las vulnerabilidades de la máquina virtual del sistema operativo está bajo su responsabilidad.
Azure Machine Learning publica con frecuencia nuevas versiones de imágenes de contenedor de la extensión Azure Machine Learning en el registro de artefactos Microsoft. Microsoft es responsable de asegurarse de que las nuevas versiones de imagen están libres de vulnerabilidades. Cada versión corrige vulnerabilidades.
Cuando los clústeres ejecutan trabajos sin interrupción, los trabajos en ejecución pueden ejecutar versiones de imágenes de contenedor obsoletas. Después de actualizar la extensión amlarc
a un clúster en ejecución, los trabajos recién enviados comienzan a usar la versión más reciente de la imagen. Cuando actualice la extensión amlarc
a su versión más reciente, limpie las versiones de imagen de contenedor antiguas de los clústeres según sea necesario.
Para observar si el clúster de Azure Arc ejecuta la versión más reciente de amlarc
, use Azure Portal. En el recurso de Azure Arc del tipo Kubernetes: Azure Arc, vaya a Extensiones para buscar la versión de la extensión amlarc
.
Entornos de AutoML y Diseñador
En el caso de las experiencias de entrenamiento basadas en código, puede controlar qué entorno de Azure Machine Learning se va a usar. Con AutoML y el diseñador, el entorno se encapsula como parte del servicio. Estos tipos de trabajos se pueden ejecutar en los procesos que configure, para permitir controles adicionales, como el aislamiento de red.
Los trabajos de AutoML se ejecutan en entornos que se superponen sobre imágenes de Docker base de Azure Machine Learning.
Los trabajos del diseñador se compartimentan en componentes. Cada componente tiene su propio entorno que se superpone sobre las imágenes de Docker base de Azure Machine Learning. Para obtener más información sobre los componentes, consulte la referencia de los componentes.