Partager via


Sécuriser un espace de travail Azure Machine Learning à l’aide de réseaux virtuels (v1)

S’APPLIQUE À :extension Azure CLI ml v1Kit de développement logiciel (SDK) Python azureml v1

Dans cet article, vous apprenez à sécuriser un espace de travail Azure Machine Learning et ses ressources associées dans un Réseau virtuel Azure.

Conseil

Vous pouvez utiliser des réseaux virtuels managés d’Azure Machine Learning au lieu de suivre les étapes décrites dans cet article. Avec un réseau virtuel managé, Azure Machine Learning gère le travail d’isolement réseau pour votre espace de travail et vos calculs managés. Vous pouvez également ajouter des points de terminaison privés pour les ressources dont l’espace de travail a besoin, par exemple un compte de stockage Azure. Pour plus d’informations, consultez Isolation de réseau gérée d’espace de travail.

Cet article fait partie d’une série sur la sécurisation d’un workflow Azure Machine Learning. Consultez les autres articles de cette série :

Pour obtenir un tutoriel sur la création d’un espace de travail sécurisé, consultez le Tutoriel : Créer un espace de travail sécurisé ou les articles Modèle Bicep ou Modèle Terraform.

Dans cet article, vous découvrirez comment activer les ressources d’espaces de travail suivantes dans un réseau virtuel :

  • Espace de travail Azure Machine Learning
  • Comptes de stockage Azure
  • Magasins de données et jeux de données Azure Machine Learning
  • Azure Key Vault
  • Azure Container Registry

Prérequis

  • Lisez l’article Vue d’ensemble de la sécurité réseau pour comprendre les scénarios courants des réseaux virtuels et l’architecture globale des réseaux virtuels.

  • Pour plus d’informations sur les meilleures pratiques, consultez Meilleures pratiques en lien avec Azure Machine Learning pour la sécurité de l’entreprise.

  • Un réseau virtuel et un sous-réseau existants à utiliser avec vos ressources de calcul.

    Avertissement

    N’utilisez pas la plage d’adresses IP 172.17.0.0/16 pour votre réseau virtuel. Il s’agit de la plage de sous-réseaux par défaut utilisée par le réseau de pont Docker. Si vous l’utilisez pour votre réseau virtuel, des erreurs se produisent. D’autres plages peuvent également être en conflit, en fonction de ce que vous souhaitez connecter au réseau virtuel. Par exemple, si vous envisagez de connecter votre réseau local au réseau virtuel, et que votre réseau local utilise également la plage 172.16.0.0/16. Au bout du compte, il vous appartient de planifier votre infrastructure réseau.

  • Pour déployer des ressources dans un réseau virtuel ou un sous-réseau, votre compte d’utilisateur doit disposer d’autorisations pour les actions suivantes dans le contrôle d’accès en fonction du rôle Azure (Azure RBAC) :

    • « Microsoft.Network/*/read » sur la ressource de réseau virtuel. Cette autorisation n’est pas nécessaire pour les déploiements de modèles Azure Resource Manager (ARM).
    • « Microsoft.Network/virtualNetworks/join/action » sur la ressource de réseau virtuel.
    • "Microsoft.Network/virtualNetworks/subnets/join/action" sur la ressource de sous-réseau.

    Pour plus d’informations sur Azure RBAC avec la mise en réseau, consultez Rôles intégrés pour la mise en réseau.

Azure Container Registry

  • Vous devez disposer de la version Premium d’Azure Container Registry. Pour plus d'informations sur la mise à niveau, consultez Changer de référence SKU.

  • Si votre instance Azure Container Registry utilise un point de terminaison privé, celui-ci doit être dans le même réseau virtuel que le compte de stockage et les cibles de calcul utilisés pour l’entraînement ou l'inférence. S’il utilise un point de terminaison de service, il doit être dans le même réseau virtuel et le même sous-réseau que le compte de stockage et les cibles de calcul.

  • Votre espace de travail Azure Machine Learning doit contenir un cluster de calcul Azure Machine Learning.

Limites

Compte Stockage Azure

  • Si vous envisagez d’utiliser Azure Machine Learning studio et que le compte de stockage est également dans le réseau virtuel, des exigences de validation supplémentaires sont requises :

    • Si le compte de stockage utilise un point de terminaison de service, le point de terminaison privé de l’espace de travail et le point de terminaison du service de stockage doivent être dans le même sous-réseau du réseau virtuel.
    • Si le compte de stockage utilise un point de terminaison privé, le point de terminaison privé de l’espace de travail et le point de terminaison privé du stockage doivent se trouver dans le même réseau virtuel. Dans ce cas, ils peuvent se trouver dans des sous-réseaux différents.

Azure Container Instances

Lorsque votre espace de travail Azure Machine Learning est configuré avec un point de terminaison privé, le déploiement sur Azure Container Instances dans un réseau virtuel n’est pas pris en charge. Au lieu de cela, envisagez d’utiliser un point de terminaison en ligne managé avec l’isolation réseau.

Azure Container Registry

Quand ACR se trouve derrière un réseau virtuel, Azure Machine Learning ne peut pas l’utiliser pour créer directement des images Docker. Le cluster de calcul est alors utilisé pour créer les images.

Important

Le cluster de calcul utilisé pour créer des images Docker doit être en mesure d’accéder aux référentiels de packages utilisés pour l’apprentissage et le déploiement de vos modèles. Il se peut que vous deviez ajouter des règles de sécurité réseau qui autorisent l’accès aux référentiels publics, utiliser des packages Python privés, ou utiliser des images Docker personnalisées incluant déjà les packages.

Avertissement

Si votre instance Azure Container Registry utilise un point de terminaison privé ou un point de terminaison de service pour communiquer avec le réseau virtuel, vous ne pouvez pas utiliser une identité managée avec un cluster de calcul Azure Machine Learning.

Azure Monitor

Avertissement

Azure Monitor prend en charge l’utilisation d’Azure Private Link pour se connecter à un réseau virtuel. Toutefois, vous devez utiliser le mode de liaison privée ouverte dans Azure Monitor. Pour plus d’informations, consultez Modes d’accès aux liaisons privées : privé uniquement et ouvert.

Accès Internet public obligatoire

Azure Machine Learning nécessite un accès entrant et sortant à l’Internet public. Les tableaux suivants fournissent une vue d’ensemble de l’accès requis et de son rôle. Pour les balises de service se terminant par .region, remplacez region par la région Azure qui contient votre espace de travail. Par exemple, Storage.westus:

Conseil

L’onglet obligatoire liste la configuration entrante et sortante nécessaire. L’onglet situationnel liste les configurations entrantes et sortantes facultatives nécessaires pour des configurations spécifiques que vous pouvez être amené à activer.

Sens Protocole et
ports
Balise du service Objectif
Règle de trafic sortant TCP : 80, 443 AzureActiveDirectory Authentification à l’aide de Microsoft Entra ID.
Règle de trafic sortant TCP : 443, 18881
UDP : 5831
AzureMachineLearning Utilisation d’Azure Machine Learning Services.
Python intellisense dans les notebooks utilise le port 18881.
La création, la mise à jour et la suppression d’une instance de calcul Azure Machine Learning utilisent le port 5831.
Règle de trafic sortant ANY : 443 BatchNodeManagement.region Communication avec le back-end Azure Batch pour les clusters/instances de calcul Azure Machine Learning.
Règle de trafic sortant TCP : 443 AzureResourceManager Création de ressources Azure avec Azure Machine Learning, Azure CLI et le SDK Azure Machine Learning.
Règle de trafic sortant TCP : 443 Storage.region Accédez aux données stockées dans le compte Stockage Azure pour le cluster et l’instance de calcul. Pour plus d’informations sur la prévention de l’exfiltration de données sur ce trafic sortant, consultez Protection contre l’exfiltration de données.
Règle de trafic sortant TCP : 443 AzureFrontDoor.FrontEnd
* Non nécessaire dans Microsoft Azure géré par 21Vianet.
Point d’entrée global pour Azure Machine Learning studio. Stockez des images et des environnements pour AutoML. Pour plus d’informations sur la prévention de l’exfiltration de données sur ce trafic sortant, consultez Protection contre l’exfiltration de données.
Règle de trafic sortant TCP : 443 MicrosoftContainerRegistry.region
Notez que cette étiquette a une dépendance sur l’étiquette AzureFrontDoor.FirstParty
Accès aux images Docker fournies par Microsoft. Configuration du routeur Azure Machine Learning pour Azure Kubernetes Service.

Conseil

Si vous avez besoin des adresses IP au lieu des balises de service, utilisez l’une des options suivantes :

Les adresses IP peuvent périodiquement changer.

Vous devrez peut-être également autoriser le trafic sortant vers des sites Visual Studio Code et non-Microsoft pour l’installation des packages requis par votre projet Machine Learning. Le tableau suivant répertorie les référentiels couramment utilisés pour l’apprentissage automatique :

Nom de l’hôte Objectif
anaconda.com
*.anaconda.com
Utilisé pour installer les packages par défaut.
*.anaconda.org Utilisé pour récupérer les données des dépôts.
pypi.org Utilisé pour lister les dépendances de l’index par défaut, le cas échéant, et si l’index n’a pas été remplacé par les paramètres utilisateur. Si l’index a été remplacé, vous devez également autoriser *.pythonhosted.org.
cloud.r-project.org Utilisé lors de l’installation des packages CRAN pour le développement R.
*.pytorch.org Utilisé par certains exemples basés sur PyTorch.
*.tensorflow.org Utilisé par certains exemples basés sur Tensorflow.
code.visualstudio.com Obligatoire pour télécharger et installer Visual Studio Code Desktop. Cela n’est pas obligatoire pour Visual Studio Code Web.
update.code.visualstudio.com
*.vo.msecnd.net
Utilisé pour récupérer les bits du serveur Visual Studio Code qui sont installés sur l’instance de calcul par le biais d’un script d’installation.
marketplace.visualstudio.com
vscode.blob.core.windows.net
*.gallerycdn.vsassets.io
Obligatoire pour télécharger et installer les extensions Visual Studio Code. Ces hôtes activent la connexion à distance pour calculer les instances fournies par l’extension Azure ML pour Visual Studio Code. Pour plus d’informations, consultez Se connecter à une instance de calcul Azure Machine Learning dans Visual Studio Code
raw.githubusercontent.com/microsoft/vscode-tools-for-ai/master/azureml_remote_websocket_server/* Utilisé pour récupérer les bits du serveur websocket installés sur l’instance de calcul. Le serveur websocket est utilisé pour transmettre les requêtes du client Visual Studio Code (application de bureau) au serveur Visual Studio Code s’exécutant sur l’instance de calcul.

Notes

Lors de l’utilisation de l’extension Visual Studio Code d’Azure Machine Learning, un accès aux dépôts publics est nécessaire à l’instance de calcul distante pour installer les packages demandés par l’extension. Lorsqu’un proxy est nécessaire à l’instance de calcul pour accéder à ces dépôts publics ou à Internet, vous devez définir et exporter les variables d’environnement HTTP_PROXY et HTTPS_PROXY dans le fichier ~/.bashrc de l’instance de calcul. Vous pouvez automatiser ce processus lors de l’approvisionnement en utilisant un script personnalisé.

Lorsque vous utilisez Azure Kubernetes Service (AKS) avec Azure Machine Learning, le trafic suivant doit être autorisé vers le réseau virtuel AKS :

Pour plus d’informations sur l’utilisation d’une solution de pare-feu, consultez Utiliser un pare-feu avec Azure Machine Learning.

Sécuriser l’espace de travail avec point de terminaison privé

Azure Private Link vous permet de vous connecter à votre espace de travail à l’aide d’un point de terminaison privé. Le point de terminaison privé est un ensemble d’adresses IP privées au sein de votre réseau virtuel. Vous pouvez alors limiter l’accès à votre espace de travail pour qu’il ne se fasse que sur les adresses IP privées. Un point de terminaison privé permet de réduire le risque d’exfiltration de données.

Pour plus d’informations sur la configuration d’un point de terminaison privé pour votre espace de travail, consultez Guide pratique pour configurer un point de terminaison privé.

Avertissement

La sécurisation d’un espace de travail avec des points de terminaison privés ne suffit pas à garantir une sécurité de bout en bout. Vous devez suivre les étapes décrites dans le reste de cet article et dans la série d’articles traitant des réseaux virtuels pour sécuriser des composants individuels de votre solution. Par exemple, si vous utilisez un point de terminaison privé pour l’espace de travail, mais que votre compte de stockage Azure ne se trouve pas derrière le réseau virtuel, le trafic entre l’espace de travail et le stockage n’utilise pas le réseau virtuel pour la sécurité.

Sécuriser des comptes de Stockage Azure

Azure Machine Learning prend en charge les comptes de stockage configurés pour utiliser un point de terminaison privé ou un point de terminaison de service.

  1. Dans le portail Azure, sélectionnez le compte de stockage Azure.

  2. Utilisez les informations dans Utiliser des points de terminaison privés pour le Stockage Azure afin d’ajouter des points de terminaison privés pour les ressources de stockage suivantes :

    • Objet blob
    • File
    • File d’attente : nécessaire uniquement si vous envisagez d’utiliser ParallelRunStep dans un pipeline Azure Machine Learning.
    • Tableau : nécessaire uniquement si vous envisagez d’utiliser ParallelRunStep dans un pipeline Azure Machine Learning.

    Capture d’écran montrant la page de configuration du point de terminaison privé avec les options d’objets blob et de fichier

    Conseil

    Lors de la configuration d’un compte de stockage qui n’est pas le stockage par défaut, sélectionnez le type de sous-ressource cible correspondant au compte de stockage que vous souhaitez ajouter.

  3. Après avoir créé les points de terminaison privés pour les ressources de stockage, sélectionnez l’onglet Pare-feu et réseaux virtuels sous Mise en réseau pour le compte de stockage.

  4. Choisissez Réseaux sélectionnés, puis, sous Instances de ressource, sélectionnez Microsoft.MachineLearningServices/Workspace comme Type de ressource. Sélectionnez votre espace de travail à l’aide du nom de l’instance. Pour plus d’informations, consultez Accès approuvé basé sur l’identité managée affectée par le système.

    Conseil

    Vous pouvez également sélectionner Autoriser les services Azure de la liste des services approuvés à accéder à ce de stockage afin d’autoriser plus largement l’accès à partir de services de confiance. Pour plus d’informations, consultez Configurer Pare-feu et réseaux virtuels dans Stockage Azure.

    Zone Mise en réseau sur la page Stockage Azure dans le portail Azure lors de l’utilisation d’un point de terminaison privé

  5. Sélectionnez Enregistrer pour enregistrer la configuration.

Conseil

Lorsque vous utilisez un point de terminaison privé, vous pouvez également désactiver l’accès anonyme. Si vous souhaitez en savoir plus, veuillez consulter la rubrique interdire l’accès anonyme.

Sécuriser un coffre de clés Azure Key Vault

Azure Machine Learning utilise une instance Key Vault associée pour stocker les informations d’identification suivantes :

  • Chaîne de connexion du compte de stockage associé
  • Mots de passe pour les instances Azure Container Repository
  • Chaînes de connexion aux magasins de données

Le coffre de clés Azure peut être configuré pour utiliser un point de terminaison privé ou un point de terminaison de service. Pour utiliser les fonctionnalités d’expérimentation Azure Machine Learning avec Azure Key Vault derrière un réseau virtuel, effectuez les étapes suivantes :

Conseil

Que vous utilisiez un point de terminaison privé ou un point de terminaison de service, le coffre de clés doit se trouver sur le même réseau que le point de terminaison privé de l’espace de travail.

Pour plus d’informations sur l’utilisation d’un point de terminaison privé avec Azure Key Vault, consultez Intégrer Key Vault avec Azure Private Link.

Activer ACR (Azure Container Registry)

Conseil

Si vous n’avez pas utilisé un Azure Container Registry (ACR) existant lors de la création de l’espace de travail, il se peut qu’il n’y en ait pas. Par défaut, l’espace de travail ne crée pas d’instance ACR tant qu’il n’en a pas besoin. Pour forcer la création d’une instance, formez ou déployez un modèle à l’aide de votre espace de travail avant de suivre les étapes décrites dans cette section.

Azure Container Registry peut être configuré pour utiliser un point de terminaison privé. Procédez comme suit pour configurer votre espace de travail afin qu’il utilise ACR quand il se trouve dans le réseau virtuel :

  1. Recherchez le nom de l'instance Azure Container Registry de votre espace de travail en utilisant l'une des méthodes suivantes :

    S’APPLIQUE À : Extension ml Azure CLI v1

    Si vous avez installé l’extension Machine Learning v1 pour Azure CLI, vous pouvez utiliser la commande az ml workspace show pour afficher les informations de l’espace de travail.

    az ml workspace show -w yourworkspacename -g resourcegroupname --query 'containerRegistry'
    

    Cette commande renvoie une valeur semblable "/subscriptions/{GUID}/resourceGroups/{resourcegroupname}/providers/Microsoft.ContainerRegistry/registries/{ACRname}". La dernière partie de la chaîne correspond au nom de l'instance Azure Container Registry de l'espace de travail.

  2. Limitez l’accès à votre réseau virtuel à l’aide de la procédure décrite dans Établir une connexion privée à une instance Azure Container Registry. Lors de l'ajout du réseau virtuel, sélectionnez le réseau virtuel et le sous-réseau de vos ressources Azure Machine Learning.

  3. Configurez l’ACR pour l’espace de travail afin d’autoriser l’accès de services approuvés.

  4. Créer un cluster de calcul Azure Machine Learning Ce cluster est utilisé pour créer des images Docker quand ACR se trouve derrière un réseau virtuel. Pour plus d’informations, consultez Créer un cluster de calcul.

  5. Utilisez l’une des méthodes suivantes pour configurer l’espace de travail et créer des images Docker à l’aide du cluster de calcul.

    Important

    Les limitations suivantes s’appliquent lors de l’utilisation d’un cluster de calcul pour les builds d’image :

    • Seul un SKU UC est pris en charge.
    • Si vous utilisez un cluster de calcul configuré pour aucune adresse IP publique, vous devez proposer un moyen pour que le cluster accède à l’Internet public. L’accès à Internet est nécessaire pour accéder aux images stockées sur Microsoft Container Registry, aux packages installés sur Pypi, Conda, etc. Vous avez besoin de configurer le routage défini par l’utilisateur (UDR) pour atteindre une adresse IP publique afin d’accéder à Internet. Par exemple, vous pouvez utiliser l’adresse IP publique de votre pare-feu ou le service NAT de réseau virtuel avec une adresse IP publique. Pour plus d’informations, consultez Guide pratique pour entraîner de manière sécurisée dans un réseau virtuel.

    Vous pouvez utiliser la commande az ml workspace update pour définir un calcul de création. La commande est la même pour les extensions Azure CLI v1 et v2 pour machine learning. Dans la commande suivante, remplacez myworkspace par le nom de votre espace de travail, myresourcegroup par le groupe de ressources qui contient l’espace de travail et mycomputecluster par le nom du cluster de calcul :

    az ml workspace update --name myworkspace --resource-group myresourcegroup --image-build-compute mycomputecluster
    

Conseil

Quand ACR se trouve derrière un réseau virtuel, vous pouvez également désactiver l’accès public à celui-ci.

Magasins de données et jeux de données

Le tableau suivant liste les services pour lesquels vous devez ignorer la validation :

Service Omission nécessaire de la validation ?
Stockage Blob Azure Oui
Partage de fichiers Azure Oui
Azure Data Lake Store Gen1 Non
Azure Data Lake Store Gen2 Non
Azure SQL Database Oui
PostgreSQL Oui

Notes

Azure Data Lake Store Gen1 et Azure Data Lake Store Gen2 ignorent la validation par défaut ; vous n’avez donc rien à faire.

L’exemple de code suivant crée un magasin de données d’objets blob Azure et définit skip_validation=True.

blob_datastore = Datastore.register_azure_blob_container(workspace=ws,  

                                                         datastore_name=blob_datastore_name,  

                                                         container_name=container_name,  

                                                         account_name=account_name, 

                                                         account_key=account_key, 

                                                         skip_validation=True ) // Set skip_validation to true

Utiliser des jeux de données

La syntaxe permettant d’ignorer la validation du jeu de données est similaire pour les types de jeu de données suivants :

  • Fichier délimité
  • JSON
  • Parquet
  • SQL
  • Fichier

Le code suivant crée un jeu de données JSON et définit validate=False.

json_ds = Dataset.Tabular.from_json_lines_files(path=datastore_paths, 

validate=False) 

Sécuriser Azure Monitor et Application Insights

Pour activer l’isolement réseau pour Azure Monitor et l’instance Application Insights pour l’espace de travail, utilisez les étapes suivantes :

  1. Ouvrez votre ressource Application Insights dans le portail Azure. L’onglet Vue d’ensemble peut avoir ou non une propriété Espace de travail. S’il n’a pas la propriété, effectuez l’étape 2. Si c’est le cas, vous pouvez passer directement à l’étape 3.

    Conseil

    Les nouveaux espaces de travail créent une ressource Application Insights basée sur un espace de travail par défaut. Si votre espace de travail a été créé récemment, vous n’avez pas besoin d’effectuer l’étape 2.

  2. Mettez à niveau l’instance Application Insights pour votre espace de travail. Pour connaître la procédure de mise à niveau, consultez Migrer vers des ressources Application Insights basées sur un espace de travail.

  3. Créez une étendue de liaison privée Azure Monitor et ajoutez l’instance Application Insights de l’étape 1 à l’étendue. Pour savoir comment procéder, consultez Configurer votre liaison privée Azure Monitor.

Vous connecter à votre espace de travail de manière sécurisée

Pour vous connecter à un espace de travail sécurisé derrière un réseau virtuel, utilisez l’une des méthodes suivantes :

  • Passerelle VPN Azure – Connecte des réseaux locaux au réseau virtuel via une connexion privée. La connexion est établie via l’Internet public. Il existe deux types de passerelles VPN que vous pouvez utiliser :

    • Point à site : chaque ordinateur client utilise un client VPN pour se connecter au réseau virtuel.
    • Site à site : un périphérique VPN connecte le réseau virtuel à votre réseau local.
  • ExpressRoute – Connecte les réseaux locaux au cloud via une connexion privée. La connexion est établie à l’aide d’un fournisseur de connectivité.

  • Bastion Azure – Dans ce scénario, vous créez une machine virtuelle Azure (parfois appelée « jump box ») à l’intérieur du réseau virtuel. Vous vous connectez ensuite à la machine virtuelle à l’aide d’Azure Bastion. Bastion vous permet de vous connecter à la machine virtuelle à l’aide d’une session RDP ou SSH à partir de votre navigateur web local. Vous utilisez ensuite la jump box comme environnement de développement. Comme elle figure dans le réseau virtuel, elle peut accéder directement à l’espace de travail. Pour obtenir un exemple d’utilisation d’une machine virtuelle jumpbox, consultez Tutoriel : Créer un espace de travail sécurisé.

Important

Quand vous utilisez une passerelle VPN ou ExpressRoute, vous devez planifier le fonctionnement de la résolution de noms entre vos ressources locales et celles se trouvant dans le réseau virtuel. Pour plus d’informations, consultez Utiliser un serveur DNS personnalisé.

Si vous rencontrez des problèmes de connexion à l’espace de travail, consultez Résoudre les problèmes de connectivité sécurisée de l’espace de travail.

Diagnostics de l’espace de travail

Vous pouvez exécuter des diagnostics sur votre espace de travail à partir d’Azure Machine Learning studio ou du kit de développement logiciel (SDK) Python. Une fois les diagnostics exécutés, une liste de tous les problèmes détectés est retournée. Cette liste contient des liens vers des solutions possibles. Pour plus d’informations, consultez Comment utiliser les diagnostics de l’espace de travail.

Étapes suivantes

Cet article fait partie d’une série sur la sécurisation d’un workflow Azure Machine Learning. Consultez les autres articles de cette série :