Sécuriser un environnement d’entraînement Azure Machine Learning à l’aide de réseaux virtuels

S’APPLIQUE À : Kit de développement logiciel (SDK) Python azure-ai-mlv2 (préversion)

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.

L’instance de calcul, le calcul serverless et le cluster de calcul Azure Machine Learning peuvent être utilisés pour entraîner des modèles de manière sécurisée dans un réseau virtuel Azure. Quand vous planifiez votre environnement, vous pouvez configurer le cluster/l’instance de calcul ou le calcul serverless avec ou sans adresse IP publique. Les différences générales entre les deux sont les suivantes :

  • Aucune IP publique : réduit les coûts, car n’a pas les mêmes besoins de ressources réseau. Améliore la sécurité en supprimant l’exigence de trafic entrant à partir d’Internet. Toutefois, des changements de configuration supplémentaires sont nécessaires pour permettre l’accès sortant vers les ressources nécessaires (Microsoft Entra ID, Azure Resource Manager, etc.).
  • IP publique : fonctionne par défaut, mais coûte plus cher en raison des ressources réseau Azure supplémentaires. Nécessite une communication entrante du service Azure Machine Learning sur l’Internet public.

Le tableau suivant contient les différences entre ces configurations :

Configuration Avec une IP publique Sans IP publique
Trafic entrant Étiquette de service AzureMachineLearning. Aucun
Trafic sortant Par défaut, peut accéder à l’Internet public sans restriction.
Vous pouvez restreindre ce à quoi il peut accéder en utilisant un groupe de sécurité réseau ou un pare-feu.
Par défaut, peut accéder au réseau public à l’aide de l’accès sortant par défaut fourni par Azure.
Nous vous recommandons de plutôt utiliser une passerelle NAT de réseau virtuel ou un pare-feu si vous devez router le trafic sortant vers les ressources nécessaires sur Internet.
Ressources réseau Azure Adresse IP publique, équilibreur de charge, interface réseau None

Vous pouvez également utiliser Azure Databricks ou HDInsight pour entraîner des modèles dans un réseau virtuel.

Important

Les éléments marqués (préversion) dans cet article sont actuellement en préversion publique. La préversion est fournie sans contrat de niveau de service et n’est pas recommandée pour les charges de travail en production. Certaines fonctionnalités peuvent être limitées ou non prises en charge. Pour plus d’informations, consultez Conditions d’Utilisation Supplémentaires relatives aux Évaluations Microsoft Azure.

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 un tutoriel sur la création d’un espace de travail sécurisé, consultez Tutoriel : Créer un espace de travail sécurisé, Modèle Bicep ou Modèle Terraform.

Dans cet article, vous découvrirez comment sécuriser les ressources de calcul d’entraînement dans un réseau virtuel :

  • Cluster de calcul Azure Machine Learning
  • Instance de calcul Azure Machine Learning
  • Calcul serverless Azure Machine Learning
  • Azure Databricks
  • Machine virtuelle
  • Cluster HDInsight

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.

  • Un réseau virtuel et un sous-réseau existants à utiliser avec vos ressources de calcul. Le VNet doit être dans le même abonnement que votre espace de travail Azure Machine Learning.

    • Nous vous recommandons de placer les comptes de stockage utilisés par votre espace de travail et vos travaux d’entraînement dans la région Azure que vous utilisez pour les instances de calcul, le calcul serverless et les clusters. S’ils ne sont pas dans la même région Azure, vous pouvez avoir des coûts de transfert de données et une plus grande latence réseau.
    • Vérifiez que la communication WebSocket est autorisée vers *.instances.azureml.net et *.instances.azureml.ms dans votre VNet. Les WebSockets sont utilisés par Jupyter sur les instances de calcul.
  • Un sous-réseau existant dans le réseau virtuel. Ce sous-réseau est utilisé pour la création des instances de calcul, des clusters et des nœuds pour le calcul serverless.

    • Vérifiez que le sous-réseau n’est pas délégué à d’autres services Azure.
    • Vérifiez que le sous-réseau contient suffisamment d’adresses IP libres. Chaque instance de calcul nécessite une adresse IP. Chaque nœud dans un cluster de calcul et chaque nœud de calcul serverless nécessite une adresse IP.
  • Si vous avez votre propre serveur DNS, nous vous recommandons d’utiliser le transfert DNS pour résoudre les noms de domaine complets (FQDN) des clusters et des instances de calcul. Pour plus d’informations, consultez Utiliser un DNS personnalisé avec Azure Machine Learning.

  • 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.

Limites

  • Le déploiement de cluster/d’instance de calcul et de calcul serverless dans un réseau virtuel n’est pas pris en charge avec Azure Lighthouse.

  • Le port 445 doit être ouvert pour les communications dans le réseau privé entre vos instances de calcul et le compte de stockage par défaut pendant l’entraînement. Par exemple, si vos calculs et le compte de stockage se trouvent dans deux réseaux virtuels distincts, ne bloquez pas le port 445 sur le réseau virtuel du compte de stockage.

Cluster de calcul dans un autre réseau virtuel/région de l’espace de travail

Important

Vous ne pouvez pas créer une instance de calcul dans une autre région/réseau virtuel, uniquement un cluster de calcul.

Pour créer un cluster de calcul dans un Réseau virtuel Azure dans une région différente de celle de votre réseau virtuel d’espace de travail, vous disposez de deux options pour activer la communication entre les deux réseaux virtuels.

  • Utilisez Peering de réseaux virtuels.
  • Ajoutez un point de terminaison privé pour votre espace de travail dans le réseau virtuel qui contiendra le cluster de calcul.

Important

Quelle que soit la méthode sélectionnée, vous devez également créer le réseau virtuel pour le cluster de calcul ; Azure Machine Learning ne le créera pas pour vous.

Vous devez également autoriser le compte de stockage par défaut, Azure Container Registry et Azure Key Vault à accéder au réseau virtuel pour le cluster de calcul. Pour ce faire, plusieurs options s’offrent à vous. Par exemple, vous pouvez créer un point de terminaison privé pour chaque ressource du réseau virtuel pour le cluster de calcul, ou vous pouvez utiliser le peering de réseaux virtuels pour permettre au réseau virtuel de l’espace de travail d’accéder au réseau virtuel du cluster de calcul.

Scénario : Peering de réseaux virtuels

  1. Configurez votre espace de travail pour utiliser un Réseau virtuel Azure. Pour plus d’informations, consultez Sécuriser vos ressources d’espace de travail.

  2. Créez un deuxième Réseau virtuel Azure qui sera utilisé pour vos clusters de calcul. Il peut se trouver dans une autre région Azure que celle utilisée pour votre espace de travail.

  3. Configurez le Peering de réseaux virtuels entre les deux réseaux virtuels.

    Conseil

    Attendez que le statut du Peering de réseaux virtuels soit connecté avant de continuer.

  4. Modifiez la zone DNS de privatelink.api.azureml.ms pour ajouter un lien au réseau virtuel pour le cluster de calcul. Cette zone est créée par votre espace de travail Azure Machine Learning lorsqu’il utilise un point de terminaison privé pour participer à un réseau virtuel.

    1. Ajoutez un nouveau lien de réseau virtuel vers une zone DNS. Vous pouvez effectuer cette opération de plusieurs façons :

      • À partir du Portail Azure, accédez à la zone DNS, puis sélectionnez Liens de réseau virtuel. Sélectionnez ensuite + Ajouter, puis sélectionnez le réseau virtuel que vous avez créé pour vos clusters de calcul.
      • À partir de Azure CLI, utilisez la commande az network private-dns link vnet create. Pour plus d’informations, consultez az network private-dns link vnet create.
      • À partir d’Azure PowerShell, exécutez la commande New-AzPrivateDnsVirtualNetworkLink. Pour plus d’informations, consultez New-AzPrivateDnsVirtualNetworkLink.
  5. Répétez l’étape précédente et les sous-étapes pour la zone DNS de privatelink.notebooks.azure.net.

  6. Configurez les ressources Azure suivantes pour autoriser l’accès à partir des deux réseaux virtuels.

    • Le compte de stockage par défaut de l’espace de travail.
    • L’instance Azure Container Registry de l’espace de travail.
    • Azure Key Vault pour l’espace de travail.

    Conseil

    Il existe plusieurs façons de configurer ces services pour autoriser l’accès aux réseaux virtuels. Par exemple, vous pouvez créer un point de terminaison privé pour chaque ressource dans les deux réseaux virtuels. Ou vous pouvez configurer les ressources pour autoriser l’accès à partir des deux réseaux virtuels.

  7. Créez un cluster de calcul comme vous le feriez normalement lors de l’utilisation d’un réseau virtuel, mais sélectionnez le réseau virtuel que vous avez créé pour le cluster de calcul. Si le réseau virtuel se trouve dans une autre région, sélectionnez cette région lors de la création du cluster de calcul.

    Avertissement

    Lorsque vous définissez la région, s’il s’agit d’une région différente de celle de votre espace de travail ou de vos magasins de données, vous pouvez constater des coûts accrus de latence du réseau et de transfert de données. La latence et les coûts peuvent survenir lors de la création du cluster et lors de l’exécution de travaux sur celui-ci.

Scénario : point de terminaison privé

  1. Configurez votre espace de travail pour utiliser un Réseau virtuel Azure. Pour plus d’informations, consultez Sécuriser vos ressources d’espace de travail.

  2. Créez un deuxième Réseau virtuel Azure qui sera utilisé pour vos clusters de calcul. Il peut se trouver dans une autre région Azure que celle utilisée pour votre espace de travail.

  3. Créez un nouveau point de terminaison privé pour votre espace de travail dans le réseau virtuel qui contiendra le cluster de calcul.

    • Pour ajouter un nouveau point de terminaison privé à l’aide du Portail Azure, sélectionnez votre espace de travail, puis Mise en réseau. Sélectionnez Connexions de point de terminaison privé, + Point de terminaison privé et utilisez les champs pour créer un point de terminaison privé.

      • Lorsque vous sélectionnez la Région, sélectionnez la même région que celle de votre réseau virtuel.
      • Lorsque vous sélectionnez le Type de ressource, utilisez Microsoft.MachineLearningServices/workspaces.
      • Définissez la Ressource sur le nom de votre espace de travail.
      • Définissez le réseau virtuel et le sous-réseau sur le réseau virtuel et le sous-réseau que vous avez créés pour vos clusters de calcul.

      Pour finir, sélectionnez Créer pour créer le point de terminaison privé.

    • Pour ajouter un nouveau point de terminaison privé à l’aide d’Azure CLI, utilisez az network private-endpoint create. Pour obtenir un exemple d’utilisation de cette commande, consultez Configurer un point de terminaison privé pour l’espace de travail Azure Machine Learning.

  4. Créez un cluster de calcul comme vous le feriez normalement lors de l’utilisation d’un réseau virtuel, mais sélectionnez le réseau virtuel que vous avez créé pour le cluster de calcul. Si le réseau virtuel se trouve dans une autre région, sélectionnez cette région lors de la création du cluster de calcul.

    Avertissement

    Lorsque vous définissez la région, s’il s’agit d’une région différente de celle de votre espace de travail ou de vos magasins de données, vous pouvez constater des coûts accrus de latence du réseau et de transfert de données. La latence et les coûts peuvent survenir lors de la création du cluster et lors de l’exécution de travaux sur celui-ci.

Cluster/instance de calcul ou calcul serverless sans adresse IP publique

Important

Ces informations sont valides uniquement lors de l’utilisation d’un Réseau virtuel Azure. Si vous utilisez un réseau virtuel managé, vous ne pouvez pas déployer de ressources de calcul dans votre réseau virtuel Azure. Pour plus d’informations sur l’utilisation d’un réseau virtuel managé, consultez Calcul managé avec un réseau managé.

Important

Si vous utilisez des instances de calcul ou des clusters de calcul configurés pour ne pas utiliser d’IP publique et que vous n’être pas inscrit à la préversion, vous devez les supprimer et les recréer après le 20 janvier 2023 (quand la fonctionnalité sera mise à disposition générale).

Si vous avez utilisé la préversion qui n’utilise pas d’IP publique, vous devez peut-être également modifier le trafic entrant et sortant que vous autorisez, car les exigences ont changé pour la disponibilité générale :

  • Exigences de trafic sortant : deux trafics sortants supplémentaires, utilisés uniquement pour la gestion des clusters et des instances de calcul. La destination de ces étiquettes de service appartient à Microsoft :
    • AzureMachineLearning balise de service sur le port UDP 5831.
    • BatchNodeManagement balise de service sur le port TCP 443.

Les configurations suivantes s’ajoutent à celles listées dans la section Prérequis et sont propres à la création des clusters/instances de calcul configurés pour ne pas utiliser d’IP publique. Elles s’appliquent également au calcul serverless :

  • Vous devez utiliser un point de terminaison privé d’espace de travail pour la ressource de calcul afin de communiquer avec les services Azure Machine Learning à partir du réseau virtuel. Pour plus d’informations, consultez Configurer un point de terminaison privé pour un espace de travail Azure Machine Learning.

  • Dans votre VNet, autorisez le trafic sortant vers les étiquettes de service ou les noms de domaine complets (FQDN) suivants :

    Balise du service Protocol Port Notes
    AzureMachineLearning TCP
    UDP
    443/8787/18881
    5831
    Communication avec le service Azure Machine Learning.
    BatchNodeManagement.<region> ANY 443 Remplacez <region> par la région Azure qui contient votre espace de travail Azure Machine Learning. Communication avec Azure Batch. L’instance de calcul et le cluster de calcul sont implémentés avec le service Azure Batch.
    Storage.<region> TCP 443 Remplacez <region> par la région Azure qui contient votre espace de travail Azure Machine Learning. Cette étiquette de service est utilisée pour communiquer avec le compte de stockage Azure utilisé par Azure Batch.

    Important

    L’accès sortant vers Storage.<region> peut être utilisé pour exfiltrer des données de votre espace de travail. À l’aide d’une stratégie de point de terminaison de service, vous pouvez atténuer cette vulnérabilité. Pour plus d’informations, consultez l’article Prévention de l’exfiltration de données Azure Machine Learning.

    FQDN Protocol Port Notes
    <region>.tundra.azureml.ms UDP 5831 Remplacez <region> par la région Azure qui contient votre espace de travail Azure Machine Learning.
    graph.windows.net TCP 443 Communication avec Microsoft API Graph.
    *.instances.azureml.ms TCP 443/8787/18881 Communication avec Azure Machine Learning.
    *.<region>.batch.azure.com ANY 443 Remplacez <region> par la région Azure qui contient votre espace de travail Azure Machine Learning. Communication avec Azure Batch.
    *.<region>.service.batch.azure.com ANY 443 Remplacez <region> par la région Azure qui contient votre espace de travail Azure Machine Learning. Communication avec Azure Batch.
    *.blob.core.windows.net TCP 443 Communication avec le stockage Blob Azure.
    *.queue.core.windows.net TCP 443 Communication avec le stockage File d’attente Azure.
    *.table.core.windows.net TCP 443 Communication avec le stockage Table Azure.
  • Par défaut, une instance de calcul/un cluster configuré pour aucune adresse IP publique n’a pas d’accès sortant à Internet. Si vous pouvez accéder à Internet à partir de l’instance ou du cluster, c’est en raison de l’accès sortant par défaut Azure et du fait que vous avez un groupe de sécurité réseau qui autorise le trafic sortant vers Internet. Toutefois, nous ne recommandons pas l’utilisation de l’accès sortant par défaut. Si vous avez besoin d’un accès sortant à Internet, nous vous recommandons d’utiliser un pare-feu et des règles de trafic sortant ou une passerelle NAT et des groupes de services réseau pour autoriser le trafic sortant à la place.

    Pour plus d’informations sur le trafic sortant utilisé par Azure Machine Learning, consultez les articles suivants :

    Pour plus d’informations sur les étiquettes de service qui peuvent être utilisées avec Pare-feu Azure, consultez l’article Balises de service de réseau virtuel.

Utilisez les informations suivantes pour créer un cluster ou une instance de calcul sans adresse IP publique :

Dans la commande az ml compute create, remplacez les valeurs suivantes :

  • rg: groupe de ressources dans lequel le calcul sera créé.
  • ws: nom de l’espace de travail Azure Machine Learning.
  • yourvnet: Réseau virtuel Azure.
  • yoursubnet: sous-réseau à utiliser pour le calcul.
  • AmlCompute ou ComputeInstance: la AmlCompute spécification crée un cluster de calcul. ComputeInstance crée une instance de calcul.
# create a compute cluster with no public IP
az ml compute create --name cpu-cluster --resource-group rg --workspace-name ws --vnet-name yourvnet --subnet yoursubnet --type AmlCompute --set enable_node_public_ip=False

# create a compute instance with no public IP
az ml compute create --name myci --resource-group rg --workspace-name ws --vnet-name yourvnet --subnet yoursubnet --type ComputeInstance --set enable_node_public_ip=False

Utilisez les informations suivantes pour configurer des nœuds de calcul serverless sans adresse IP publique dans le réseau virtuel pour un espace de travail spécifique :

Important

Si vous utilisez un calcul serverless sans adresses IP publiques et que l’espace de travail utilise une liste verte d’adresses IP, vous devez ajouter un point de terminaison privé sortant à l’espace de travail. Le calcul serverless doit communiquer avec l’espace de travail, mais lorsqu’il est configuré pour aucune adresse IP publique, il utilise le trafic sortant par défaut Azure pour l’accès à Internet. L’adresse IP publique de ce trafic sortant est dynamique et ne peut pas être ajoutée à la liste verte d’adresses IP. La création d’un point de terminaison privé sortant vers l’espace de travail permet au trafic provenant du calcul serverless limité à l’espace de travail de contourner la liste verte d’adresses IP.

Créez un espace de travail :

az ml workspace create -n <workspace-name> -g <resource-group-name> --file serverlesscomputevnetsettings.yml
name: testserverlesswithnpip
location: eastus
public_network_access: Disabled
serverless_compute:
  custom_subnet: /subscriptions/<sub id>/resourceGroups/<resource group>/providers/Microsoft.Network/virtualNetworks/<vnet name>/subnets/<subnet name>
  no_public_ip: true

Mettez à jour l’espace de travail :

az ml workspace update -n <workspace-name> -g <resource-group-name> --file serverlesscomputevnetsettings.yml
serverless_compute:
  custom_subnet: /subscriptions/<sub id>/resourceGroups/<resource group>/providers/Microsoft.Network/virtualNetworks/<vnet name>/subnets/<subnet name>
  no_public_ip: true

Cluster/instance de calcul ou calcul serverless avec adresse IP publique

Important

Ces informations sont valides uniquement lors de l’utilisation d’un Réseau virtuel Azure. Si vous utilisez un réseau virtuel managé, vous ne pouvez pas déployer de ressources de calcul dans votre réseau virtuel Azure. Pour plus d’informations sur l’utilisation d’un réseau virtuel managé, consultez Calcul managé avec un réseau managé.

Les configurations suivantes s’ajoutent à celles listées dans la section Prérequis et sont propres à la création des clusters/instances de calcul qui ont une IP publique. Elles s’appliquent également au calcul serverless :

  • Si vous placez plusieurs clusters/instances de calcul dans un réseau virtuel, vous devez peut-être demander une augmentation du quota pour une ou plusieurs de vos ressources. L’instance ou le cluster de calcul Machine Learning alloue automatiquement des ressources réseau au groupe de ressources qui contient le réseau virtuel. Pour chaque instance ou cluster de calcul, le service alloue les ressources suivantes :

    • Un groupe de sécurité réseau (NSG) est créé automatiquement. Ce NSG autorise le trafic TCP entrant sur le port 44224 à partir de l’étiquette de service AzureMachineLearning.

      Important

      L’instance de calcul et le cluster de calcul créent automatiquement un groupe de sécurité réseau avec les règles requises.

      Si vous disposez d’un autre groupe de sécurité réseau au niveau du sous-réseau, les règles du groupe de sécurité réseau au niveau du sous-réseau ne doivent pas entrer en conflit avec les règles du groupe de sécurité réseau créé automatiquement.

      Pour savoir comment les groupes de sécurité réseau filtrent votre trafic réseau, consultez Comment les groupes de sécurité réseau filtrent le trafic réseau.

    • Un seul équilibreur de charge

    Pour les clusters de calcul, ces ressources sont supprimées chaque fois que le cluster effectue un scale-down à 0 nœud et créées chaque fois que le cluster effectue un scale-up.

    Pour une instance de calcul, ces ressources sont conservées jusqu’à ce que l’instance soit supprimée. L’arrêt de l’instance ne supprime pas les ressources.

    Important

    Ces ressources sont limitées par les quotas de ressources de l’abonnement. Si le groupe de ressources du réseau virtuel est verrouillé, la suppression de l’instance/du cluster de calcul échoue. L’équilibreur de charge ne peut pas être supprimé tant que l’instance/le cluster de calcul n’a pas été supprimé. Vérifiez également qu’aucune affectation Azure Policy n’interdit la création de groupes de sécurité réseau.

  • Dans votre VNet, autorisez le trafic TCP entrant sur le port 44224 à partir de l’étiquette de service AzureMachineLearning.

    Important

    Le cluster/l’instance de calcul reçoit une adresse IP attribuée dynamiquement au moment de sa création. Comme l’adresse n’est pas connue avant la création et qu’un accès entrant est nécessaire dans le cadre du processus de création, vous ne pouvez pas l’attribuer de manière statique sur votre pare-feu. À la place, si vous utilisez un pare-feu avec le VNet, vous devez créer une route définie par l’utilisateur pour autoriser ce trafic entrant.

  • Dans votre VNet, autorisez le trafic sortant vers les étiquettes de service suivantes :

    Balise du service Protocol Port Notes
    AzureMachineLearning TCP
    UDP
    443/8787/18881
    5831
    Communication avec le service Azure Machine Learning.
    BatchNodeManagement.<region> ANY 443 Remplacez <region> par la région Azure qui contient votre espace de travail Azure Machine Learning. Communication avec Azure Batch. L’instance de calcul et le cluster de calcul sont implémentés avec le service Azure Batch.
    Storage.<region> TCP 443 Remplacez <region> par la région Azure qui contient votre espace de travail Azure Machine Learning. Cette étiquette de service est utilisée pour communiquer avec le compte de stockage Azure utilisé par Azure Batch.

    Important

    L’accès sortant vers Storage.<region> peut être utilisé pour exfiltrer des données de votre espace de travail. À l’aide d’une stratégie de point de terminaison de service, vous pouvez atténuer cette vulnérabilité. Pour plus d’informations, consultez l’article Prévention de l’exfiltration de données Azure Machine Learning.

    FQDN Protocol Port Notes
    <region>.tundra.azureml.ms UDP 5831 Remplacez <region> par la région Azure qui contient votre espace de travail Azure Machine Learning.
    graph.windows.net TCP 443 Communication avec Microsoft API Graph.
    *.instances.azureml.ms TCP 443/8787/18881 Communication avec Azure Machine Learning.
    *.<region>.batch.azure.com ANY 443 Remplacez <region> par la région Azure qui contient votre espace de travail Azure Machine Learning. Communication avec Azure Batch.
    *.<region>.service.batch.azure.com ANY 443 Remplacez <region> par la région Azure qui contient votre espace de travail Azure Machine Learning. Communication avec Azure Batch.
    *.blob.core.windows.net TCP 443 Communication avec le stockage Blob Azure.
    *.queue.core.windows.net TCP 443 Communication avec le stockage File d’attente Azure.
    *.table.core.windows.net TCP 443 Communication avec le stockage Table Azure.

Utilisez les informations suivantes pour créer une instance de calcul ou un cluster avec une adresse IP publique dans le réseau virtuel :

Dans la commande az ml compute create, remplacez les valeurs suivantes :

  • rg: groupe de ressources dans lequel le calcul sera créé.
  • ws: nom de l’espace de travail Azure Machine Learning.
  • yourvnet: Réseau virtuel Azure.
  • yoursubnet: sous-réseau à utiliser pour le calcul.
  • AmlCompute ou ComputeInstance: la AmlCompute spécification crée un cluster de calcul. ComputeInstance crée une instance de calcul.
# create a compute cluster with a public IP
az ml compute create --name cpu-cluster --resource-group rg --workspace-name ws --vnet-name yourvnet --subnet yoursubnet --type AmlCompute

# create a compute instance with a public IP
az ml compute create --name myci --resource-group rg --workspace-name ws --vnet-name yourvnet --subnet yoursubnet --type ComputeInstance

Utilisez les informations suivantes pour configurer des nœuds de calcul serverless avec adresse IP publique dans le réseau virtuel pour un espace de travail spécifique :

Créez un espace de travail :

az ml workspace create -n <workspace-name> -g <resource-group-name> --file serverlesscomputevnetsettings.yml
name: testserverlesswithvnet
location: eastus
serverless_compute:
  custom_subnet: /subscriptions/<sub id>/resourceGroups/<resource group>/providers/Microsoft.Network/virtualNetworks/<vnet name>/subnets/<subnet name>
  no_public_ip: false

Mettez à jour l’espace de travail :

az ml workspace update -n <workspace-name> -g <resource-group-name> --file serverlesscomputevnetsettings.yml
serverless_compute:
  custom_subnet: /subscriptions/<sub id>/resourceGroups/<resource group>/providers/Microsoft.Network/virtualNetworks/<vnet name>/subnets/<subnet name>
  no_public_ip: false

Azure Databricks

  • Le réseau virtuel doit être dans les mêmes abonnement et région que l’espace de travail Azure Machine Learning.
  • Si le ou les comptes de stockage Azure pour l’espace de travail sont également sécurisés dans un réseau virtuel, ils doivent se trouver dans le même réseau virtuel que le cluster Azure Databricks.
  • Outre les sous-réseaux databricks-private et databricks-public utilisés par Azure Databricks, le sous-réseau default créé pour le réseau virtuel est également requis.
  • Azure Databricks n’utilise pas de point de terminaison privé pour communiquer avec le réseau virtuel.

Pour obtenir des informations spécifiques sur l’utilisation d’Azure Databricks avec un réseau virtuel, consultez Déployer des Azure Databricks dans votre réseau virtuel Azure.

Machine virtuelle ou cluster HDInsight

Dans cette section, vous allez apprendre à utiliser une machine virtuelle ou un cluster Azure HDInsight dans un réseau virtuel avec votre espace de travail.

Créer la machine virtuelle ou le cluster HDInsight

Important

Azure Machine Learning prend uniquement en charge les machines virtuelles exécutant Ubuntu.

Créez une machine virtuelle ou un cluster HDInsight à l’aide du portail Azure ou de l’interface de ligne de commande Azure, et placez le cluster dans un réseau virtuel Azure. Pour plus d’informations, consultez les articles suivants :

Configurer des ports réseau

Autorisez Azure Machine Learning à communiquer avec le port SSH sur la machine virtuelle ou le cluster, configurez une entrée source pour le groupe de sécurité réseau. Le port SSH est généralement le port 22. Pour autoriser le trafic provenant de cette source, effectuez les actions suivantes :

  1. Dans la liste déroulante Source, sélectionnez Balise de service.

  2. Dans la liste déroulante Balise de service source, sélectionnez AzureMachineLearning.

    Capture d’écran de règles de trafic entrant pour effectuer des expérimentations sur une machine virtuelle ou un cluster HDInsight dans un réseau virtuel.

  3. Dans la liste déroulante Plages de port source, sélectionnez *.

  4. Dans la liste déroulante Destination, sélectionnez Tous.

  5. Dans la liste déroulante Plages de port de destination, sélectionnez 22.

  6. Sous Protocole, sélectionnez Tous.

  7. Sous Action, sélectionnez Autoriser.

Conservez les règles de trafic sortant par défaut pour le groupe de sécurité réseau. Pour plus d’informations, consultez les règles de sécurité par défaut dans Groupes de sécurité.

Si vous ne souhaitez pas utiliser les règles de trafic sortant par défaut et souhaitez limiter l’accès sortant de votre réseau virtuel, consultez la section Accès Internet public obligatoire.

Joindre la machine virtuelle ou le cluster HDInsight

Attachez la machine virtuelle ou le cluster HDInsight à votre espace de travail Azure Machine Learning. Pour plus d’informations, consultez Gérer les ressources informatiques pour l’entraînement et le déploiement de modèles dans le studio.

Accès Internet public requis pour entraîner les modèles

Important

Les sections précédentes de cet article décrivent les configurations nécessaires pour créer des ressources de calcul, et les informations de configuration de cette section sont nécessaires pour utiliser ces ressources afin d’entraîner des modèles.

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.

É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 :