Isolement réseau avec les registres Azure Machine Learning

Dans cet article, vous apprenez à sécuriser un registre Azure Machine Learning avec un réseau virtuel Azure et des points de terminaison privés.

Les points de terminaison privés sur Azure fournissent un isolement réseau en permettant aux services Azure d’être accessibles sur une adresse IP privée au sein d’un réseau virtuel (VNet). Le VNet sécurise les connexions entre les ressources Azure et empêche l’exposition de données sensibles sur l’Internet public.

L’utilisation de l’isolement réseau avec des points de terminaison privés empêche le trafic réseau de passer sur l’Internet public et fournit le service de registre Azure Machine Learning à votre réseau virtuel. Tout le trafic réseau se produit sur Azure Private Link quand des points de terminaison privés sont utilisés.

Prérequis

Sécurisation d’un registre Azure Machine Learning

Notes

Pour simplifier, nous désignons l’espace de travail, ses ressources associées et le réseau virtuel dont elles font partie comme une configuration d’espace de travail sécurisée. Nous explorons comment ajouter des registres Azure Machine Learning dans le cadre de la configuration existante.

Le diagramme suivant montre une configuration réseau de base et comment s’y intègre le registre Azure Machine Learning. Si vous utilisez déjà un espace de travail Azure Machine Learning et avez une configuration d’espace de travail sécurisée où toutes les ressources font partie d’un réseau virtuel, vous pouvez créer un point de terminaison privé à partir du réseau virtuel existant vers le registre Azure Machine Learning et ses ressources associées (stockage et ACR).

Si vous n’avez pas de configuration d’espace de travail sécurisé, vous pouvez en créer une en utilisant l’article Créer un espace de travail sécurisé dans le portail Azure, Modèle Bicep ou Modèle Terraform.

Diagramme d’un registre connecté au réseau virtuel contenant l’espace de travail et les ressources associées en utilisant un point de terminaison privé.

Limites

Si vous utilisez un registre Azure Machine Learning avec isolation réseau, vous pouvez afficher modèle ressources dans Azure Machine Learning Studio. Vous ne pourrez pas afficher d’autres types de ressources. Vous ne pourrez pas effectuer d’opérations sur le registre Azure Machine Learning ou les ressources qu’il contient à l’aide de Studio. Utilisez plutôt la CLI Azure Machine Learning ou le kit de développement logiciel (SDK).

Scénario : la configuration d’espace de travail est sécurisée et le registre Azure Machine Learning est public

Cette section décrit les scénarios et la configuration réseau nécessaire si vous avez une configuration d’espace de travail sécurisée, mais utilisez un registre public.

Créer des ressources dans le registre à partir de fichiers locaux

L’identité (par exemple, l’identité d’utilisateur Microsoft Entra d’un scientifique des données) utilisée pour créer des ressources dans le registre doit avoir le rôle Utilisateur, Propriétaire ou Contributeur de registre AzureML dans le contrôle d’accès en fonction du rôle Azure. Pour plus d’informations, consultez l’article Gérer l’accès à Azure Machine Learning.

Partager des ressources de l’espace de travail avec le registre

Remarque

Le partage d’un composant à partir de l’espace de travail Azure Machine Learning vers le registre Azure Machine Learning n’est pas pris en charge actuellement.

En raison de la protection contre l’exfiltration des données, vous ne pouvez pas partager une ressource d’espace de travail sécurisé avec un registre public si l’accès public au compte de stockage contenant la ressource est désactivé. Pour activer le partage de ressources à partir de l’espace de travail vers le registre :

  • Accédez à la section Mise en réseau du compte de stockage attaché à l’espace de travail (à partir de laquelle vous souhaitez autoriser le partage de ressources au Registre)
  • Définissez Accès au réseau public sur Activé à partir des réseaux virtuels et adresses IP sélectionnés
  • Faites défiler vers le bas et accédez à la section Instances de ressources. Sélectionnez Type de ressource dans Microsoft.MachineLearningServices/registries et définissez Nom de l’instance sur le nom de la ressource de registre Azure Machine Learning dont vous souhaitez activer le partage depuis l'espace de travail.
  • Veillez à vérifier le reste des paramètres en fonction de votre configuration réseau.

Utiliser les ressources du registre dans l’espace de travail

Exemple d’opérations :

  • Envoyer un travail qui utilise une ressource du registre.
  • Utiliser un composant du registre dans un pipeline.
  • Utiliser un environnement du registre dans un composant.

L’utilisation des ressources du registre dans un espace de travail sécurisé nécessite la configuration de l’accès sortant au registre.

Déployer un modèle du registre dans l’espace de travail

Pour déployer un modèle à partir d’un registre sur un point de terminaison en ligne managé sécurisé, le déploiement doit avoir egress_public_network_access=disabled défini. Azure Machine Learning crée les points de terminaison privés nécessaires dans le registre pendant le déploiement de point de terminaison. Pour plus d’informations, consultez Créer des points de terminaison en ligne managés sécurisés.

Configuration réseau sortante pour accéder à un registre Azure Machine Learning

Balise du service Protocole et ports Objectif
AzureMachineLearning TCP : 443, 877, 18881
UDP : 5831
Utilisation d’Azure Machine Learning Services.
Storage.<region> TCP : 443 Accédez aux données stockées dans le compte de stockage Azure pour les clusters et les instances de calcul. Ce trafic sortant peut être utilisé pour exfiltrer des données. Pour plus d’informations, consultez Protection contre l’exfiltration de données.
MicrosoftContainerRegistry.<region> TCP : 443 Accédez aux images Docker fournies par Microsoft.
AzureContainerRegistry.<region> TCP : 443 Accédez aux images Docker pour les environnements.

Scénario : la configuration de l’espace de travail est sécurisée et le registre Azure Machine Learning est connecté à des réseaux virtuels avec des points de terminaison privés

Cette section décrit les scénarios et la configuration réseau nécessaire si vous avez une configuration d’espace de travail sécurisée avec des registres Azure Machine Learning connectés à un réseau virtuel avec un point de terminaison privé.

Le registre Azure Machine Learning a des instances de service de stockage/ACR associées. Ces instances de service peuvent également être connectées au VNet avec des points de terminaison privés pour sécuriser la configuration. Pour plus d’informations, consultez la section Comment créer un point de terminaison privé.

Comment trouver le compte de stockage Azure et le registre de conteneurs Azure utilisés par votre registre

Le compte de stockage et l’ACR utilisés par votre registre Azure Machine Learning sont créés sous un groupe de ressources managé dans votre abonnement Azure. Le nom du groupe de ressources managé suit le modèle azureml-rg-<name-of-your-registry>_<GUID>. Le GUID est une chaîne générée de manière aléatoire. Par exemple, si le nom de votre registre est « contosoreg », le nom du groupe de ressources managé est azureml-rg-contosoreg_<GUID>.

Dans le portail Azure, vous pouvez trouver ce groupe de ressources en recherchant azureml_rg-<name-of-your-registry>. Toutes les ressources de stockage et ACR de votre registre sont disponibles sous ce groupe de ressources.

Créer des ressources dans le registre à partir de fichiers locaux

Notes

La création d’une ressource d’environnement n’est pas prise en charge dans un registre privé où l’ACR associé a l’accès public désactivé. Pour contourner ce problème, vous pouvez créer un environnement dans l’espace de travail Azure Machine Learning et le partager avec le registre Azure Machine Learning.

Les clients doivent être connectés au VNet auquel le registre est connecté avec un point de terminaison privé.

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

Pour vous connecter à un registre sécurisé derrière un VNet, utilisez 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. Parce qu’elle est dans le VNet, elle peut accéder directement au registre.

Partager des ressources de l’espace de travail avec le registre

Remarque

Le partage d’un composant à partir de l’espace de travail Azure Machine Learning vers le registre Azure Machine Learning n’est pas pris en charge actuellement.

En raison de la protection contre l’exfiltration des données, vous ne pouvez pas partager une ressource d’espace de travail sécurisé avec un registre privé si l’accès public au compte de stockage contenant la ressource est désactivé. Pour activer le partage de ressources à partir de l’espace de travail vers le registre :

  • Accédez à la section Mise en réseau du compte de stockage attaché à l’espace de travail (à partir de laquelle vous souhaitez autoriser le partage de ressources au Registre)
  • Définissez Accès au réseau public sur Activé à partir des réseaux virtuels et adresses IP sélectionnés
  • Faites défiler vers le bas et accédez à la section Instances de ressources. Sélectionnez Type de ressource dans Microsoft.MachineLearningServices/registries et définissez Nom de l’instance sur le nom de la ressource de registre Azure Machine Learning dont vous souhaitez activer le partage depuis l'espace de travail.
  • Veillez à vérifier le reste des paramètres en fonction de votre configuration réseau.

Utiliser les ressources du registre dans l’espace de travail

Exemple d’opérations :

  • Envoyer un travail qui utilise une ressource du registre.
  • Utiliser un composant du registre dans un pipeline.
  • Utiliser un environnement du registre dans un composant.

Créez un point de terminaison privé pour le registre, le stockage et l’ACR à partir du VNet de l’espace de travail. Si vous essayez de vous connecter à plusieurs registres, créez un point de terminaison privé pour chaque registre, ainsi que pour le stockage et les ACR associés. Pour plus d’informations, consultez la section Comment créer un point de terminaison privé.

Déployer un modèle du registre dans l’espace de travail

Pour déployer un modèle à partir d’un registre sur un point de terminaison en ligne managé sécurisé, le déploiement doit avoir egress_public_network_access=disabled défini. Azure Machine Learning crée les points de terminaison privés nécessaires dans le registre pendant le déploiement de point de terminaison. Pour plus d’informations, consultez Créer des points de terminaison en ligne managés sécurisés.

Guide pratique pour créer un point de terminaison privé

Utilisez les onglets pour voir les instructions permettant d’ajouter un point de terminaison privé à un registre existant ou de créer un registre qui a un point de terminaison privé :

  1. Dans le portail Azure, recherchez Point de terminaison privé, puis sélectionnez l’entrée Points de terminaison privés pour accéder au Centre de liaisons privées.

  2. Dans la page de présentation du Centre de liaisons privées, sélectionnez + Créer.

  3. Fournissez les informations demandées. Pour le champ Région, sélectionnez la même région que celle de votre réseau virtuel Azure. Sélectionnez Suivant.

  4. Sous l’onglet Ressource, quand vous sélectionnez Type de ressource, sélectionnez Microsoft.MachineLearningServices/registries. Définissez le champ Ressource sur le nom de votre registre Azure Machine Learning, puis sélectionnez Suivant.

  5. Sous l’onglet Réseau virtuel, sélectionnez le réseau virtuel et le sous-réseau de vos ressources Azure Machine Learning. Sélectionnez Suivant pour continuer.

  6. Sous l’onglet DNS, gardez les valeurs par défaut, sauf si vous avez des exigences d’intégration DNS privées spécifiques. Sélectionnez Suivant pour continuer.

  7. Sous l’onglet Vérifier + créer, sélectionnez Créer pour créer le point de terminaison privé.

  8. Si vous voulez définir l’accès au réseau public sur désactivé, utilisez la commande suivante. Vérifiez que le stockage et l’ACR ont également l’accès au réseau public désactivé.

    az ml registry update --set publicNetworkAccess=Disabled --name <name-of-registry>
    

Comment trouver le compte de stockage Azure et le registre de conteneurs Azure utilisés par votre registre

Le compte de stockage et l’ACR utilisés par votre registre Azure Machine Learning sont créés sous un groupe de ressources managé dans votre abonnement Azure. Le nom du groupe de ressources managé suit le modèle azureml-rg-<name-of-your-registry>_<GUID>. Le GUID est une chaîne générée de manière aléatoire. Par exemple, si le nom de votre registre est « contosoreg », le nom du groupe de ressources managé est azureml-rg-contosoreg_<GUID>.

Dans le portail Azure, vous pouvez trouver ce groupe de ressources en recherchant azureml_rg-<name-of-your-registry>. Toutes les ressources de stockage et ACR de votre registre sont disponibles sous ce groupe de ressources.

Comment créer un point de terminaison privé pour le compte de stockage Azure

Pour créer un point de terminaison privé pour le compte de stockage utilisé par votre registre, utilisez les étapes suivantes :

  1. Dans le portail Azure, recherchez Point de terminaison privé, puis sélectionnez l’entrée Points de terminaison privés pour accéder au Centre de liaisons privées.
  2. Dans la page de présentation du Centre de liaisons privées, sélectionnez + Créer.
  3. Fournissez les informations demandées. Pour le champ Région, sélectionnez la même région que celle de votre réseau virtuel Azure. Sélectionnez Suivant.
  4. Sous l’onglet Ressource, quand vous sélectionnez Type de ressource, sélectionnez Microsoft.Storage/storageAccounts. Définissez le champ Ressource sur le nom du compte de stockage. Définissez la Sous-ressource sur Blob, puis sélectionnez Suivant.
  5. Sous l’onglet Réseau virtuel, sélectionnez le réseau virtuel et le sous-réseau de vos ressources Azure Machine Learning. Sélectionnez Suivant pour continuer.
  6. Sous l’onglet DNS, gardez les valeurs par défaut, sauf si vous avez des exigences d’intégration DNS privées spécifiques. Sélectionnez Suivant pour continuer.
  7. Sous l’onglet Vérifier + créer, sélectionnez Créer pour créer le point de terminaison privé.

Protection contre l’exfiltration de données

Pour un registre Azure Machine Learning créé par l’utilisateur, nous vous recommandons d’utiliser un point de terminaison privé pour le registre, le compte de stockage managé et l’ACR managé.

Pour un registre système, nous vous recommandons de créer une stratégie de point de terminaison de service pour le compte de stockage en utilisant l’alias /services/Azure/MachineLearning. Pour plus d’informations, consultez Configurer la prévention de l’exfiltration des données.

Comment trouver le nom de domaine complet du registre

Remarque

Assurez-vous que votre DNS est en mesure de résoudre le nom de domaine complet privé du Registre, qui se trouve dans ce format : <registry-guid>.registry.<region>.privatelink.api.azureml.ms il n’existe aucun nom de domaine complet spécifique à une ressource publique qui est résolu de manière récursive par Azure DNS.

Les exemples suivants montrent comment utiliser l’URL de découverte pour obtenir le nom de domaine complet (FQDN) de votre registre. Quand vous appelez l’URL de découverte, vous devez fournir un jeton d’accès Azure dans l’en-tête de demande. Les exemples suivants montrent comment obtenir un jeton d’accès et appeler l’URL de découverte :

Conseil

Le format de l’URL de découverte est https://<region>.api.azureml.ms/registrymanagement/v1.0/registries/<registry_name>/discovery, où <region> est la région où se trouve votre registre et <registry_name> est le nom de votre registre. Pour appeler l’URL, effectuez une demande GET :

   GET https://<region>.api.azureml.ms/registrymanagement/v1.0/registries/<registry_name>/discovery 
$region = "<region>"
$registryName = "<registry_name>"
$accessToken = (az account get-access-token | ConvertFrom-Json).accessToken 
(Invoke-RestMethod -Method Get `
                   -Uri "https://$region.api.azureml.ms/registrymanagement/v1.0/registries/$registryName/discovery" `
                   -Headers @{ Authorization="Bearer $accessToken" }).registryFqdns
  • REST API

Notes

Pour plus d’informations sur l’utilisation des API REST Azure, consultez les informations de référence de l’API REST Azure.

  1. Obtenez le jeton d’accès Azure. Vous pouvez utiliser la commande Azure CLI suivante pour obtenir un jeton :

    az account get-access-token --query accessToken
    
  2. Utilisez un client REST comme Curl pour envoyer une demande GET à l’URL de découverte. Utilisez le jeton d’accès récupéré à l’étape précédente pour l’autorisation. Dans l’exemple suivant, remplacez <region> par la région où se trouve votre registre et <registry_name> par le nom de votre registre. Remplacez <token> par le jeton d’accès que vous avez récupéré à l’étape précédente :

    curl -X GET "https://<region>.api.azureml.ms/registrymanagement/v1.0/registries/<registry_name>/discovery" -H "Authorization: Bearer <token>" -H "Content-Type: application/json"
    

Étape suivante

Découvrez comment Partager des modèles, des composants et des environnements entre les espaces de travail avec des registres.