Partager via


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.

Dans cet article, nous allons aborder ces responsabilités et décrire 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 dernières mises à jour de sécurité et à réduire la fenêtre d'opportunité pour les personnes malveillantes.

Images de machines virtuelles gérées par Microsoft

Azure Machine Learning gère les images de machines virtuelles (VM) du système d'exploitation hôte pour les instances de calcul Azure Machine Learning, les clusters de calcul Azure Machine Learning et les machines virtuelles Data Science. La fréquence de mise à jour est mensuelle et comprend les éléments 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 permet de s'assurer que tous les correctifs applicables liés au système d'exploitation sont installés. Pour Azure Machine Learning, l'éditeur est Canonical 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 toute vulnérabilité non traitée et la corrige lors de la version suivante.

  • La fréquence est définie sur un intervalle mensuel pour la plupart des images. Pour les instances de calcul, la version de l'image est alignée sur le rythme de publication du SDK Azure Machine Learning préinstallé dans l'environnement.

En plus du cycle de publication régulier, Azure Machine Learning applique des correctifs urgents (hotfixes) lorsque des vulnérabilités apparaissent. Microsoft déploie les hotfixes sous 72 heures pour les clusters de calcul Azure Machine Learning et sous 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 l'apprentissage 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 obtiennent fréquemment des correctifs de sécurité pour résoudre les vulnérabilités nouvellement 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 également sous une étiquette :latest mise à jour. L'utilisation de l'étiquette :latest ou de l'épinglage à une version d'image particulière peut être un compromis entre la sécurité et la reproductibilité de l'environnement pour votre travail de 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 toute tâche de machine learning, les images générées précédemment sont extraites vers les nœuds de calcul sans nécessiter de rematérialisation.

Même si Azure Machine Learning corrige les images de base avec chaque version, le fait que vous utilisiez la dernière image peut résulter d'un compromis entre la reproductibilité et les gestion des vulnérabilités. Par conséquent, il vous incombe de choisir la version de l'environnement que vous utilisez pour vos déploiements de travaux ou de modèles.

Par défaut, les dépendances sont superposées aux images de base fournies par Azure Machine Learning lors de la création 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 utilisée comme cache pour les images conteneur est associée à votre espace de travail Azure Machine Learning. Toute image matérialisée est envoyée vers le registre de conteneurs. L'espace de travail l'utilise si une phase d'expérimentation ou de déploiement est déclenchée pour l'environnement correspondant.

Azure Machine Learning ne supprime aucune image de votre registre de conteneurs. Il vous appartient d'évaluer, dans le temps, la nécessité de conserver une image. 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 à partir de déclencheurs de Microsoft Defender, reportez-vous à la rubrique Automatiser les réponses de correction.

Pour en savoir plus, reportez-vous à la rubrique Résoudre les vulnérabilités dans les environnements.

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

Azure Machine Learning utilise Conda et Pip pour installer les packages Python. Par défaut, Azure Machine Learning télécharge les packages à partir de dépôts publics. Si votre organisation exige que les packages proviennent uniquement de dépôts privés, comme les flux Azure DevOps, vous pouvez remplacer la configuration de Conda et Pip dans vos images de base et 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 privés Conda et Pip. 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, voir Créer un environnement à partir d'un contexte de build Docker. Pour en savoir plus sur la configuration des environnements Conda, reportez-vous à la rubrique Créer manuellement un fichier d'environnement sur le site Conda.

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

Les nœuds de calcul gérés dans Azure Machine Learning utilisent des images de machines virtuelles du système d'exploitation gérées par Microsoft. Lors du provisionnement d'un nœud, la dernière image de VM mise à jour est récupérée. Ce comportement s'applique aux instances de calcul, aux clusters de calcul, aux capacités de calcul serverless (version préliminaire) et aux options de calcul d'inférence gérées.

Bien que les images de VM du 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 lorsqu'ils sont en cours d'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. Les nœuds qui ne sont pas inactifs ne peuvent pas être mis à jour 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. Après le déploiement d'une instance de calcul, celle-ci n'est pas mise à jour de manière active. Vous pouvez interroger la version du système d'exploitation d'une instance. Pour rester à jour avec les dernières mises à jour logicielles et les correctifs de sécurité, 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 perdrez les données et les personnalisations (comme les packages installés) stockées sur le système d'exploitation de l'instance et sur les disques temporaires.

    Lorsque vous recréez votre instance :

    Pour en savoir plus sur les versions d'images, reportez-vous à la rubrique Notes de publication des images d'instances de calcul Azure Machine Learning.

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

    • Utilisez les outils de gestion des 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 de packages peuvent survenir lorsque vous utilisez cette approche.

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

      pip list --outdated
      

Vous pouvez installer et exécuter des logiciels de scan supplémentaires sur l'instance de calcul afin de détecter les 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étecter les logiciels malveillants. Il est préinstallé sur les instances de calcul.

L'installation de l'agent Microsoft Defender for Servers 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 l'image de machine virtuelle la plus récente. 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 toutes les tâches sont terminées et qu'il est réduit à zéro nœud.

Dans les conditions suivantes, les nœuds du cluster ne se réduisent pas, 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 tâches sont planifiées en continu sur votre cluster.

Il vous incombe de réduire manuellement les nœuds non inactifs du cluster afin d'obtenir les dernières mises à jour de l'image de machine virtuelle du système d'exploitation. Azure Machine Learning n'interrompt 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 géré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 VM dès sa publication. Aucune action de votre part n’est nécessaire.

Clusters Kubernetes managés par les clients

Calcul Kubernetes vous permet de configurer des clusters Kubernetes avec Azure Arc pour 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 machine virtuelle du système d'exploitation et des vulnérabilités liées aux images conteneur sont sous votre responsabilité.

Azure Machine Learning publie fréquemment de nouvelles versions des images de conteneurs de l'extension Azure Machine Learning dans Microsoft Artifact Registry. Microsoft est responsable de garantir que les nouvelles versions d'images sont exemptes 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 version la plus récente de l'image. Lors de la mise à niveau de l'extension amlarc vers sa version la plus récente, nettoyez les anciennes versions de l'image conteneur des clusters, si nécessaire.

Pour vérifier si votre cluster Azure Arc exécute la dernière version de amlarc, utilisez le portail Azure. Sous votre ressource Azure Arc du type Kubernetes - Azure Arc, consultez Extensions pour trouver la version de l'extension amlarc.

Important

Si vous avez désactivé la mise à jour automatique à l'aide du paramètre --auto-upgrade false de la commande az k8s-extension create, vous devez mettre à jour manuellement l'extension à l'aide de az k8s-extension update. Pour plus d'informations sur les versions de cette extension, consultez les notes de publication.

Environnements AutoML et du Concepteur

Pour les expériences d'entraînement basées sur du code, vous pouvez contrôler l'environnement d'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 des calculs que vous avez vous-même configurés, en autorisant des contrôles supplémentaires tels que l'isolement réseau.

Les travaux AutoML s'exécutent sur des environnements qui sont posés en couches sur des images Docker de base Azure Machine Learning.

Les travaux du concepteur sont compartimentés en composants. Chaque composant a son propre environnement qui est posé en couches sur les 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