Gestion des vulnérabilités pour Azure Machine Learning

La gestion des vulnérabilités implique la détection des failles de sécurité qui existent dans les systèmes et les logiciels d’une organisation, leur évaluation, leur atténuation et la création de rapports les concernant. La gestion des vulnérabilités est une responsabilité partagée entre vous et Microsoft.

Cet article aborde ces responsabilités et décrit les contrôles de gestion des vulnérabilités fournis par Azure Machine Learning. Vous allez apprendre à mettre à jour votre instance de service et vos applications avec les derniers correctifs de sécurité et à réduire la fenêtre d’opportunité pour les attaquants.

Images de machines virtuelles gérées par Microsoft

Azure Machine Learning gère les images de machine virtuelle du système d’exploitation hôte pour les instances de calcul Azure Machine Learning, les clusters de calcul Azure Machine Learning et les instances Data Science Virtual Machine. La fréquence de mise à jour est mensuelle et comprend les détails suivants :

  • Pour chaque nouvelle version d’image de machine virtuelle, les dernières mises à jour sont issues de l’éditeur d’origine du système d’exploitation. L’utilisation des dernières mises à jour vous permet de vous assurer que vous disposez de tous les correctifs applicables liés au système d’exploitation. Pour Azure Machine Learning, l’éditeur est canonique pour toutes les images Ubuntu. Ces images sont utilisées pour les instances de calcul Azure Machine Learning, les clusters de calcul et les machines virtuelles Data Science Virtual Machine.

  • Les images de machine virtuelle sont mises à jour tous les mois.

  • Outre les correctifs appliqués par l’éditeur d’origine, Azure Machine Learning met à jour les packages système lorsque des mises à jour sont disponibles.

  • Azure Machine Learning vérifie et valide tous les packages Machine Learning pouvant nécessiter une mise à niveau. Dans la plupart des cas, les nouvelles images de machine virtuelle contiennent les versions de package les plus récentes.

  • Toutes les images de machine virtuelle s’appuient sur des abonnements sécurisés qui exécutent régulièrement une analyse des vulnérabilités. Azure Machine Learning signale toutes les vulnérabilités non traitées et les corrige dans la version suivante.

  • La fréquence est un intervalle d’un mois pour la plupart des images. Pour les instances de calcul, la version de l’image est alignée sur la cadence de publication du Kit de développement logiciel (SDK) Azure Machine Learning préinstallé dans l’environnement.

En plus de la cadence de publication régulière, Azure Machine Learning applique des correctifs logiciels si des vulnérabilités apparaissent. Microsoft déploie des correctifs logiciels dans un délai de 72 heures pour les clusters de calcul Azure Machine Learning et dans un délai d’une semaine pour les instances de calcul.

Remarque

Le système d’exploitation hôte n’est pas la version du système d’exploitation que vous pouvez spécifier pour un environnement lors de la formation ou du déploiement d’un modèle. Les environnements s’exécutent dans Docker. Docker s’exécute sur le système d’exploitation hôte.

Images conteneur gérées par Microsoft

Les images Docker de base gérées par Azure Machine Learning reçoivent fréquemment des correctifs de sécurité pour résoudre les vulnérabilités récemment découvertes.

Azure Machine Learning publie des mises à jour pour les images prises en charge toutes les deux semaines afin de corriger les vulnérabilités. Nous nous engageons à faire en sorte de n’avoir aucune vulnérabilité de plus de 30 jours dans la version la plus récente des images prises en charge.

Les images corrigées sont publiées sous une nouvelle étiquette immuable et sous une étiquette :latest mise à jour. Vous pouvez opter pour l’utilisation de l’étiquette :latest ou l’épinglage à une version d’image particulière, ce qui peut être un compromis entre sécurité et reproductibilité de l’environnement pour votre travail Machine Learning.

Gestion des environnements et des images conteneur

La reproductibilité est un aspect clé du développement logiciel et de l’expérimentation Machine Learning. L’objectif principal du composant Environnement Azure Machine Learning est de garantir la reproductibilité de l’environnement dans lequel le code de l’utilisateur est exécuté. Pour garantir la reproductibilité de tout travail Machine Learning, les images générées précédemment sont extraites vers les nœuds de calcul sans qu’il soit nécessaire de les rematérialiser.

Bien qu’Azure Machine Learning corrige les images de base avec chaque version, le fait d’utiliser ou non la dernière image peut être un compromis entre reproductibilité et gestion des vulnérabilités. Il vous appartient de choisir la version de l’environnement que vous utilisez pour vos travaux ou modèles de déploiement.

Par défaut, les dépendances sont superposées aux images de base fournies par Azure Machine Learning lorsque vous créez des environnements. Vous pouvez également utiliser vos propres images de base lorsque vous utilisez des environnements dans Azure Machine Learning. Une fois que vous avez installé des dépendances supplémentaires sur les images fournies par Microsoft ou que vous avez apporté vos propres images de base, la gestion des vulnérabilités devient votre responsabilité.

Une instance d’Azure Container Registry qui fonctionne en tant que cache pour les images conteneur est associée à votre espace de travail Azure Machine Learning. Toute image matérialisée est envoyée (push) au registre de conteneurs. L’espace de travail l’utilise si l’expérimentation ou le déploiement est déclenché pour l’environnement correspondant.

Azure Machine Learning ne supprime aucune image de votre registre de conteneurs. Il vous incombe d’évaluer la nécessité d’une image au fil du temps. Pour superviser et assurer l’hygiène de l’environnement, vous pouvez utiliser Microsoft Defender pour Container Registry pour vous aider à analyser vos images à la recherche de vulnérabilités. Pour automatiser vos processus en fonction des déclencheurs de Microsoft Defender, consultez Automatiser les réponses de correction.

Utilisation d’un référentiel de packages privés

Azure Machine Learning utilise Conda et Pip pour installer des packages Python. Par défaut, Azure Machine Learning télécharge les packages à partir de référentiels publics. Si votre organisation exige que les packages proviennent uniquement de référentiels privés tels que des flux Azure DevOps, vous pouvez écraser la configuration Conda et Pip dans le cadre de vos images de base et de vos configurations d’environnement pour les instances de calcul.

L’exemple de configuration suivant montre comment supprimer les canaux par défaut et ajouter vos propres flux Conda et Pip privés. Nous vous recommandons d’utiliser des scripts de configuration d’instance de calcul pour l’automatisation.

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/

Pour savoir comment spécifier vos propres images de base dans Azure Machine Learning, consultez Créer un environnement à partir d’un contexte de build Docker. Pour plus d’informations sur la configuration des environnements Conda, consultez Créer manuellement un fichier d’environnement sur le site de Conda.

Gestion des vulnérabilités sur les hôtes de calcul

Les nœuds de calcul managés dans Azure Machine Learning utilisent des images de machine virtuelle de système d’exploitation gérées par Microsoft. Quand vous approvisionnez un nœud, il extrait la dernière image de machine virtuelle mise à jour. Ce comportement s’applique aux options d’instance de calcul, de cluster de calcul, de calcul serverless (préversion) et de calcul d’inférence managée.

Bien que les images de machine virtuelle de système d’exploitation soient régulièrement corrigées, Azure Machine Learning n’analyse pas activement les nœuds de calcul à la recherche de vulnérabilités pendant leur utilisation. Pour une couche de protection supplémentaire, pensez à l’isolement réseau de votre calcul.

S’assurer que votre environnement est à jour et que les nœuds de calcul utilisent la dernière version du système d’exploitation est une responsabilité partagée entre vous et Microsoft. Vous ne pouvez pas mettre à jour les nœuds qui ne sont pas inactifs vers l’image de machine virtuelle la plus récente. Les considérations sont légèrement différentes pour chaque type de calcul, comme indiqué dans les sections suivantes.

Instance de calcul

Les instances de calcul obtiennent les images de machine virtuelle les plus récentes au moment du provisionnement. Microsoft publie de nouvelles images de machine virtuelle tous les mois. Une fois déployée, une instance de calcul n’est pas activement mise à jour. Vous pouvez exécuter une requête pour obtenir la version du système d’exploitation d’une instance. Pour rester au fait des mises à jour de logiciels et des correctifs de sécurité les plus récents, vous pouvez utiliser l’une des méthodes suivantes :

  • Recréer une instance de calcul pour obtenir la dernière image du système d’exploitation (recommandé).

    Si vous utilisez cette méthode, vous perdez les données et les personnalisations (notamment les packages installés) stockées sur le système d’exploitation et les disques temporaires de l’instance.

    Lorsque vous recréez votre instance :

    Pour plus d’informations sur les versions d’images, consultez Notes de publication de l’image d’instance de calcul Azure Machine Learning.

  • Mettre à jour régulièrement le système d’exploitation et les packages Python.

    • Utilisez les outils de gestion de packages Linux pour mettre à jour la liste des packages avec les dernières versions :

      sudo apt-get update
      
    • Utilisez les outils de gestion des packages Linux pour mettre à niveau les packages vers les dernières versions. Des conflits entre packages peuvent survenir lorsque vous utilisez cette approche.

      sudo apt-get upgrade
      
    • Utilisez les outils de gestion de packages Python pour mettre à niveau les packages et rechercher les mises à jour :

      pip list --outdated
      

Vous pouvez installer et exécuter des logiciels d’analyse supplémentaires sur l’instance de calcul pour rechercher des problèmes de sécurité :

  • Utilisez Trivy pour découvrir les vulnérabilités au niveau du système d’exploitation et des packages Python.
  • Utilisez ClamAV pour découvrir les programmes malveillants. Il est préinstallé sur les instances de calcul.

L’installation de l’agent Microsoft Defender pour serveurs n’est actuellement pas prise en charge.

Envisagez d’utiliser des scripts de personnalisation pour l’automatisation. Pour obtenir un exemple de script d’installation combinant Trivy et ClamAV, consultez les exemples de scripts d’installation d’instance de calcul.

Clusters de calcul

Les clusters de calcul mettent automatiquement à niveau les nœuds vers la dernière image de machine virtuelle. Si vous configurez le cluster avec min nodes = 0, il met automatiquement à niveau les nœuds vers la dernière version de l’image de machine virtuelle lorsque tous les travaux sont terminés et que le cluster est réduit à zéro nœud.

Dans les conditions suivantes, les nœuds de cluster ne font pas l’objet d’un scale-down et ne peuvent donc pas obtenir la dernière image de machine virtuelle :

  • Le nombre minimal de nœuds du cluster est défini sur une valeur supérieure à zéro.
  • Les travaux sont planifiés en continu sur votre cluster.

Il vous incombe d’effectuer un scale-down des nœuds de cluster non inactifs pour obtenir les dernières mises à jour de l’image de machine virtuelle du système d’exploitation. Azure Machine Learning n’arrête aucune charge de travail en cours d’exécution sur les nœuds de calcul pour publier des mises à jour de machine virtuelle. Faites passer temporairement le nombre minimal de nœuds à zéro et autorisez le cluster à être réduit à zéro nœud.

Points de terminaison en ligne managés

Les points de terminaison en ligne managés reçoivent automatiquement les mises à jour d’image d’hôte du système d’exploitation qui incluent des correctifs de vulnérabilités. La fréquence de mise à jour des images est d’au moins une fois par mois.

Les nœuds de calcul sont automatiquement mis à niveau vers la dernière version de l’image de machine virtuelle lorsque cette version est publiée. Aucune action de votre part n’est nécessaire.

Clusters Kubernetes gérés par le client

Le calcul Kubernetes vous permet de configurer des clusters Kubernetes pour effectuer l’apprentissage, l’inférence et la gestion de modèles dans Azure Machine Learning.

Étant donné que vous gérez l’environnement avec Kubernetes, la gestion des vulnérabilités de la machine virtuelle du système d’exploitation et des vulnérabilités des images conteneur relève de votre responsabilité.

Azure Machine Learning publie fréquemment de nouvelles versions des images conteneur d’extension Azure Machine Learning dans le Registre des artefacts Microsoft. Microsoft a la responsabilité de s’assurer que les nouvelles versions d’image ne présentent pas de vulnérabilités. Chaque version corrige des vulnérabilités.

Lorsque vos clusters exécutent des travaux sans interruption, les travaux en cours d’exécution peuvent exécuter des versions d’image conteneur obsolètes. Une fois que vous avez mis à niveau l’extension amlarc vers un cluster en cours d’exécution, les travaux récemment envoyés commencent à utiliser la dernière version de l’image. Lorsque vous mettez à niveau l’extension amlarc vers sa dernière version, nettoyez les anciennes versions des images conteneur des clusters, si nécessaire.

Pour déterminer si votre cluster Azure Arc exécute la dernière version de amlarc, utilisez le portail Azure. Sous votre ressource Azure Arc de type Kubernetes – Azure Arc, accédez à Extensions pour trouver la version de l’extension amlarc.

Environnements d’AutoML et du concepteur

Pour les expériences de formation basées sur du code, vous contrôlez l’environnement Azure Machine Learning à utiliser. Avec AutoML et le concepteur, l’environnement est encapsulé dans le cadre du service. Ces types de travaux peuvent s’exécuter sur les calculs que vous configurez pour autoriser des contrôles supplémentaires tels que l’isolement réseau.

Les travaux AutoML s’exécutent sur des environnements superposés aux images Docker de base Azure Machine Learning.

Les travaux du concepteur sont compartimentés en composants. Chaque composant a son propre environnement qui se superpose aux images Docker de base Azure Machine Learning. Pour plus d’informations sur les composants, consultez les informations de référence sur les composants.

Étapes suivantes