MLOps (DevOps pour le machine learning), mentionné pour la première fois en 2015 dans l’article Hidden Technical Debt in Machine Learning Systems, affiche une croissance rapide. Le marché du MLOps devrait atteindre 4 milliards de dollars d’ici 2025. En attendant, la sécurisation des solutions MLOps devient de plus en plus importante.
Cet article explique comment protéger les solutions MLOps à l’aide de fonctionnalités de sécurité réseau Azure telles que le service Réseau virtuel Azure, le peering de réseaux, Azure Private Link et Azure DNS. Il montre également comment utiliser :
- Azure Pipelines pour accéder aux ressources du réseau virtuel
- Les configurations nécessaires des clusters et instances de calcul d’Azure Machine Learning et d’Azure Container Registry dans un réseau virtuel.
Enfin, cet article décrit les coûts d’utilisation des services de sécurité réseau.
Architecture
Téléchargez un fichier Visio de cette architecture.
Dataflow
Le diagramme de l’architecture montre un exemple de solution MLOps.
Le réseau virtuel nommé AML VNET permet de protéger l’espace de travail Azure Machine Learning et ses ressources associées.
L’hôte de saut Azure Bastion et les agents autohébergés appartiennent à un autre réseau virtuel nommé BASTION VNET. Cette disposition simule l’existence d’une autre solution qui exige un accès aux ressources dans le réseau virtuel Azure Machine Learning.
Avec la prise en charge de l’appairage de réseaux virtuels et des zones DNS privées, Azure Pipelines peut s’exécuter sur des agents auto-hébergés et déclencher les pipelines Azure Machine Learning qui sont publiés dans l’espace de travail Azure Machine Learning pour entraîner, évaluer et inscrire les modèles Machine Learning.
Enfin, le modèle est déployé sur des points de terminaison en ligne ou des points de terminaison de traitement par lots pris en charge par les clusters Azure Kubernetes Service ou de calcul Azure Machine Learning.
Composants
L’exemple de solution MLOps comprend les composants suivants :
- Stockage des données : Stockage Blob Azure pour le stockage des données.
- Entraînement, validation et inscription du modèle : espace de travail Azure Machine Learning
- Modèle de déploiement : Points de terminaison Azure Machine Learning et Azure Kubernetes Service
- Analyse du modèle : Azure Monitor pour Application Insights
- Pipelines MLOps : Azure DevOps et Azure Pipelines
Cet exemple de scénario utilise également les services suivants pour protéger la solution MLOps :
Détails du scénario
MLOps est un ensemble de pratiques à l’intersection du Machine Learning, de DevOps et de l’engineering données, qui vise à déployer et à gérer de manière fiable et efficace des modèles Machine Learning en production.
Le diagramme suivant illustre un modèle de processus MLOps simplifié. Ce modèle offre une solution qui automatise la préparation des données, l’entraînement du modèle, l’évaluation du modèle, l’inscription du modèle, le déploiement du modèle et le monitoring.
Quand vous implémentez une solution MLOps, vous pouvez être amené à sécuriser les ressources suivantes :
- Pipelines DevOps
- Données d’entraînement de Machine Learning
- Pipelines de Machine Learning
- Modèles Machine Learning
Pour sécuriser les ressources, tenez compte des méthodes suivantes :
Authentification et autorisation
- Utilisez des principaux de serviceou des identités managées à la place d’une authentification interactive.
- Utilisez le contrôle d’accès en fonction du rôle pour définir l’étendue de l’accès d’un utilisateur aux ressources.
Sécurité du réseau
- Utilisez un réseau virtuel pour isoler partiellement ou entièrement l’environnement par rapport au réseau Internet public afin de réduire la surface d’attaque et le potentiel d’exfiltration de données.
- Dans l’espace de travail Azure Machine Learning, si vous utilisez toujours l’interface CLI Azure Machine Learning v1 et le kit SDK Python Azure Machine Learning v1 (par exemple l’API v1), ajoutez un point de terminaison privé à l’espace de travail pour isoler le réseau de tout, à l’exception des opérations de création, de lecture, de mise à jour et de suppression (CRUD) sur l’espace de travail ou les ressources de calcul.
- Pour tirer parti des nouvelles fonctionnalités d’un espace de travail Azure Machine Learning, utilisez l’interface CLI Azure Machine Learning v2 et le kit SDK Python Azure Machine Learning v2 (par exemple l’API v2), dans lesquels l’activation d’un point de terminaison privé sur votre espace de travail n’offre pas le même niveau d’isolement réseau. Toutefois, le réseau virtuel permet toujours de protéger les données d’entraînement et les modèles Machine Learning. Nous vous recommandons d’évaluer l’API v2 avant de l’adopter dans vos solutions d’entreprise. Pour plus d’informations, consultez Qu’est-ce que la nouvelle plateforme d’API sur Azure Resource Manager.
- Utilisez un réseau virtuel pour isoler partiellement ou entièrement l’environnement par rapport au réseau Internet public afin de réduire la surface d’attaque et le potentiel d’exfiltration de données.
Chiffrement des données
- Chiffrez les données d’entraînement en transit et au repos à l’aide de clés d’accès gérées par la plateforme ou gérées par le client.
Stratégie et monitoring
- Utilisez Azure Policy et Microsoft Defender pour le cloud pour appliquer des stratégies.
- Utilisez Azure Monitor pour collecter et agréger des données (telles que des métriques et des journaux) à partir de diverses sources dans une plateforme de données commune pour l’analyse, la visualisation et l’alerte.
L’espace de travail Azure Machine Learning est la ressource de niveau supérieur pour Azure Machine Learning et le composant central d’une solution MLOps. Cet espace de travail fournit un emplacement centralisé pour utiliser tous les artefacts que vous créez lorsque vous utilisez Azure Machine Learning.
Lorsque vous créez un nouvel espace de travail, celui-ci crée automatiquement les ressources Azure suivantes qui sont utilisées par l’espace de travail :
- Azure Application Insights
- Azure Container Registry
- Azure Key Vault
- Compte Stockage Azure
Cas d’usage potentiels
Cette solution convient aux scénarios dans lesquels un client utilise une solution MLOps pour déployer et gérer des modèles Machine Learning dans un environnement plus sécurisé. Les clients peuvent provenir de divers secteurs, par exemple l’industrie, les télécommunications, la vente au détail, la santé, etc. Par exemple :
Un opérateur de télécommunications protège les images, les données et les modèles Machine Learning d’un client dans son système de vidéosurveillance pour des magasins de vente au détail.
Un fabricant de moteurs a besoin d’une solution plus sécurisée pour protéger les données et les modèles Machine Learning de ses usines et de ses produits pour son système, qui utilise la vision par ordinateur afin de détecter les défauts des pièces.
Les solutions MLOps pour ces scénarios et d’autres peuvent utiliser des espaces de travail Azure Machine Learning, le Stockage Blob Azure, Azure Kubernetes Service, Container Registry et d’autres services Azure.
Vous pouvez utiliser tout ou partie de cet exemple pour un scénario similaire dans lequel un environnement MLOps est déployé sur Azure avec les fonctionnalités de sécurité Azure pour protéger les ressources appropriées. Le client d’origine pour cette solution est dans le secteur des télécommunications.
Considérations
Ces considérations mettent en œuvre les piliers d’Azure Well-Architected Framework, un ensemble de principes directeurs dont l’application améliore la qualité d’une charge de travail. Pour plus d’informations, consultez Microsoft Azure Well-Architected Framework.
Sécurité
La sécurité fournit davantage de garanties contre les attaques délibérées, et contre l’utilisation abusive de vos données et systèmes ayant une grande valeur. Pour en savoir plus, consultez Liste de contrôle de l'examen de la conception pour la sécurité.
Découvrez comment sécuriser votre solution MLOps en commençant par la conception de l’architecture. Les environnements de développement peuvent ne pas avoir besoin d’une sécurité importante, mais la sécurité est primordiale dans les environnements de préproduction et de production.
Optimisation des coûts
L’optimisation des coûts consiste à examiner les moyens de réduire les dépenses inutiles et d’améliorer l’efficacité opérationnelle. Pour plus d'informations, consultez Liste de contrôle de la révision de la conception pour l'optimisation des coûts.
La configuration du réseau virtuel est gratuite. Toutefois, des frais sont facturés pour les autres services que votre scénario peut nécessiter, par exemple les liaisons privées, les zones DNS et le peering de réseaux virtuels. Le tableau suivant indique les frais liés à ces services et à d’autres services susceptibles d’être requis.
Service Azure | Tarifs |
---|---|
Réseau virtuel | Gratuit |
Liaison privée | Payez uniquement pour les heures de ressource du point de terminaison privé et les données traitées via le point de terminaison privé. |
Azure DNS, zone privée | La facturation se base sur le nombre de zones DNS hébergées dans Azure et sur le nombre de requêtes DNS reçues. |
Appairage de réseaux virtuels | Le trafic entrant et sortant est facturé aux deux extrémités des réseaux appairés. |
Passerelle VPN | Les frais se basent sur la durée pendant laquelle la passerelle est provisionnée et disponible. |
ExpressRoute | Des frais sont facturés pour ExpressRoute et les passerelles ExpressRoute. |
Azure Bastion | La facturation implique une combinaison de tarifs horaires basés sur la référence SKU, les unités d’échelle et les vitesses de transfert de données. |
Excellence opérationnelle
L’excellence opérationnelle couvre les processus opérationnels qui déploient une application et la maintiennent en production. Pour plus d’informations, consultez la Liste de contrôle de l'examen de la conception pour l'excellence opérationnelle.
Pour rationaliser l’intégration continue et la livraison continue (CI/CD), la bonne pratique consiste à utiliser des outils et des services d’infrastructure en tant que code (IaC), tels que Terraform ou les modèles Azure Resource Manager, Azure DevOps ou Azure Pipelines.
Déployer ce scénario
Les sections suivantes expliquent comment déployer les ressources, comment y accéder et comment les sécuriser dans cet exemple de scénario.
Réseau virtuel
La première étape de la sécurisation de l’environnement MLOps consiste à protéger l’espace de travail Azure Machine Learning et ses ressources associées. L’utilisation du service Réseau virtuel est une méthode de protection efficace. Un réseau virtuel est le bloc de construction fondamental de votre réseau privé dans Azure. Le service Réseau virtuel permet à de nombreux types de ressource Azure de communiquer de manière plus sécurisée entre eux, avec Internet et avec les réseaux locaux.
Le fait de placer l’espace de travail Azure Machine Learning et ses ressources associées dans un réseau virtuel permet de garantir la communication entre les composants sans qu’ils soient exposés au réseau Internet public. Cela permet de réduire leur surface d’attaque et d’éviter l’exfiltration de données.
L’extrait de code Terraform suivant montre comment créer un cluster de calcul pour Azure Machine Learning, l’attacher à un espace de travail et le placer dans un sous-réseau d’un réseau virtuel.
resource "azurerm_machine_learning_compute_cluster" "compute_cluster" {
name = "my_compute_cluster"
location = "eastasia"
vm_priority = "LowPriority"
vm_size = "Standard_NC6s_v3"
machine_learning_workspace_id = azurerm_machine_learning_workspace.my_workspace.id
subnet_resource_id = azurerm_subnet.compute_subnet.id
ssh_public_access_enabled = false
scale_settings {
min_node_count = 0
max_node_count = 3
scale_down_nodes_after_idle_duration = "PT30S"
}
identity {
type = "SystemAssigned"
}
}
Private Link et point de terminaison privé Azure
Private Link permet d’accéder, via un point de terminaison privé de votre réseau virtuel, aux options PaaS (platform as a service) Azure, par exemple un espace de travail Azure Machine Learning et le service Stockage Azure ainsi qu’aux services appartenant aux clients et aux partenaires hébergés par Azure. Un point de terminaison privé est une interface réseau qui se connecte uniquement à des ressources spécifiques, ce qui contribue à le protéger contre l’exfiltration de données.
Dans cet exemple de scénario, quatre points de terminaison privés sont liés aux options PaaS Azure, et sont gérés par un sous-réseau au sein du réseau virtuel Azure Machine Learning, comme le montre le diagramme d’architecture. Par conséquent, ces services sont accessibles uniquement aux ressources au sein du même réseau virtuel, le réseau virtuel Azure Machine Learning. Ces services sont les suivants :
- Espace de travail Azure Machine Learning
- Stockage Blob Azure
- Azure Container Registry
- Azure Key Vault
L’extrait Terraform suivant montre comment utiliser un point de terminaison privé pour établir une liaison avec un espace de travail Azure Machine Learning, qui est ainsi mieux protégé par le réseau virtuel. L’extrait montre également l’utilisation d’une zone DNS privée, qui est décrite dans Zones Azure DNS privé.
resource "azurerm_machine_learning_workspace" "aml_ws" {
name = "my_aml_workspace"
friendly_name = "my_aml_workspace"
location = "eastasia"
resource_group_name = "my_resource_group"
application_insights_id = azurerm_application_insights.my_ai.id
key_vault_id = azurerm_key_vault.my_kv.id
storage_account_id = azurerm_storage_account.my_sa.id
container_registry_id = azurerm_container_registry.my_acr_aml.id
identity {
type = "SystemAssigned"
}
}
# Configure private DNS zones
resource "azurerm_private_dns_zone" "ws_zone_api" {
name = "privatelink.api.azureml.ms"
resource_group_name = var.RESOURCE_GROUP
}
resource "azurerm_private_dns_zone" "ws_zone_notebooks" {
name = "privatelink.notebooks.azure.net"
resource_group_name = var.RESOURCE_GROUP
}
# Link DNS zones to the virtual network
resource "azurerm_private_dns_zone_virtual_network_link" "ws_zone_api_link" {
name = "ws_zone_link_api"
resource_group_name = "my_resource_group"
private_dns_zone_name = azurerm_private_dns_zone.ws_zone_api.name
virtual_network_id = azurerm_virtual_network.aml_vnet.id
}
resource "azurerm_private_dns_zone_virtual_network_link" "ws_zone_notebooks_link" {
name = "ws_zone_link_notebooks"
resource_group_name = "my_resource_group"
private_dns_zone_name = azurerm_private_dns_zone.ws_zone_notebooks.name
virtual_network_id = azurerm_virtual_network.aml_vnet.id
}
# Configure private endpoints
resource "azurerm_private_endpoint" "ws_pe" {
name = "my_aml_ws_pe"
location = "eastasia"
resource_group_name = "my_resource_group"
subnet_id = azurerm_subnet.my_subnet.id
private_service_connection {
name = "my_aml_ws_psc"
private_connection_resource_id = azurerm_machine_learning_workspace.aml_ws.id
subresource_names = ["amlworkspace"]
is_manual_connection = false
}
private_dns_zone_group {
name = "private-dns-zone-group-ws"
private_dns_zone_ids = [azurerm_private_dns_zone.ws_zone_api.id, azurerm_private_dns_zone.ws_zone_notebooks.id]
}
# Add the private link after configuring the workspace
depends_on = [azurerm_machine_learning_compute_instance.compute_instance, azurerm_machine_learning_compute_cluster.compute_cluster]
}
Le code précédent pour azurerm_machine_learning_workspace
utilise la plateforme d’API v2 par défaut. Si vous souhaitez toujours utiliser l’API v1, ou disposer d’une stratégie d’entreprise qui interdit l’envoi de communications sur les réseaux publics, vous pouvez activer le paramètre v1_legacy_mode_enabled
, comme le montre l’extrait de code suivant. Lorsqu’il est activé, ce paramètre désactive l’API v2 pour votre espace de travail.
resource "azurerm_machine_learning_workspace" "aml_ws" {
...
public_network_access_enabled = false
v1_legacy_mode_enabled = true
}
Zones Azure DNS privé
Azure DNS fournit un service DNS fiable et plus sécurisé pour gérer et résoudre les noms de domaine dans un réseau virtuel sans avoir à ajouter de solution DNS personnalisée. Avec les zones DNS privées, vous pouvez utiliser des noms de domaine personnalisés à la place des noms fournis par Azure. La résolution des enregistrements DNS sur une zone DNS privée fonctionne uniquement à partir de réseaux virtuels qui sont liés à cette zone.
Cet exemple de solution utilise des points de terminaison privés pour l’espace de travail Azure Machine Learning ainsi que pour ses ressources associées, par exemple Stockage Azure, Azure Key Vault ou Container Registry. Vous devez donc configurer vos paramètres DNS pour résoudre les adresses IP des points de terminaison privés à partir du nom de domaine complet (FQDN) de la chaîne de connexion.
Vous pouvez lier une zone DNS privée à un réseau virtuel pour résoudre des domaines spécifiques.
L’extrait de code Terraform dans Private Link et le point de terminaison privé Azure crée deux zones DNS privées à l’aide des noms de zone recommandés dans la configuration de la zone DNS des services Azure:
privatelink.api.azureml.ms
privatelink.notebooks.azure.net
Appairage de réseaux virtuels
L’appairage de réseaux virtuels permet l’accès de la machine virtuelle de l’hôte de saut ou des machines virtuelles d’agent auto-hébergées dans le réseau virtuel Azure Bastion aux ressources du réseau virtuel Azure Machine Learning. À des fins de connectivité, les deux réseaux virtuels fonctionnent comme un seul. Le trafic entre les machines virtuelles et les ressources Azure Machine Learning dans les réseaux virtuels appairés utilise l’infrastructure principale Azure. Le trafic entre les réseaux virtuels est routé via le réseau privé d’Azure.
L’extrait de code Terraform suivant configure l’appairage de réseaux virtuels entre le réseau virtuel Azure Machine Learning et le réseau virtuel Azure Bastion.
# Virtual network peering for AML VNET and BASTION VNET
resource "azurerm_virtual_network_peering" "vp_amlvnet_basvnet" {
name = "vp_amlvnet_basvnet"
resource_group_name = "my_resource_group"
virtual_network_name = azurerm_virtual_network.amlvnet.name
remote_virtual_network_id = azurerm_virtual_network.basvnet.id
allow_virtual_network_access = true
allow_forwarded_traffic = true
}
resource "azurerm_virtual_network_peering" "vp_basvnet_amlvnet" {
name = "vp_basvnet_amlvnet"
resource_group_name = "my_resource_group"
virtual_network_name = azurerm_virtual_network.basvnet.name
remote_virtual_network_id = azurerm_virtual_network.amlvnet.id
allow_virtual_network_access = true
allow_forwarded_traffic = true
}
Accéder aux ressources dans le réseau virtuel
Pour accéder à l’espace de travail Azure Machine Learning dans un réseau virtuel, comme le réseau virtuel Azure Machine Learning dans ce scénario, utilisez l’une des méthodes suivantes :
- Passerelle VPN Azure
- Azure ExpressRoute
- Azure Bastion et la machine virtuelle d’hôte de saut
Pour plus d’informations, consultez Se connecter à l’espace de travail.
Exécuter Azure Pipelines qui accèdent aux ressources dans le réseau virtuel
Azure Pipelines génère et teste automatiquement vos projets de code, et les met à la disposition d’autres personnes. Azure Pipelines combine CI/CD pour tester et générer votre code, et l’expédier vers n’importe quelle cible.
Agents hébergés par Azure et agents auto-hébergés
La solution MLOps de cet exemple de scénario se compose de deux pipelines, qui peuvent déclencher des pipelines Azure Machine Learning et accéder aux ressources associées. Dans la mesure où l’espace de travail Azure Machine Learning et sa ressource associée se trouvent dans un réseau virtuel, ce scénario doit permettre à un agent Azure Pipelines d’y accéder. Un agent est une infrastructure informatique avec un logiciel agent installé, qui exécute les travaux Azure Pipelines un par un. Il existe plusieurs façons d’implémenter l’accès :
Utilisez des agents auto-hébergés dans le même réseau virtuel ou dans le réseau virtuel d’appairage, comme illustré dans le diagramme d’architecture.
Utilisez des agents hébergés par Azure et ajoutez leurs plages d’adresses IP à une liste d’autorisation dans les paramètres de pare-feu des services Azure ciblés.
Utilisez des agents hébergés par Azure (en tant que clients VPN) et la passerelle VPN.
Chacun de ces choix présente des avantages et des inconvénients. Le tableau suivant compare les agents hébergés par Azure aux agents auto-hébergés.
Agent hébergé par Azure | Agent auto-hébergé | |
---|---|---|
Coût | Commencez gratuitement pour un travail parallèle avec 1 800 minutes par mois et des frais pour chaque travail parallèle CI/CD hébergé par Azure. | Commencez gratuitement pour un travail parallèle avec un nombre illimité de minutes par mois. Des frais sont facturés pour chaque travail parallèle CI/CD autohébergé supplémentaire avec un nombre illimité de minutes. Cette option offre des travaux parallèles moins coûteux. |
Maintenance | Prise en charge pour vous par Microsoft. | Vous effectuez la maintenance avec un contrôle plus important sur l’installation des logiciels de votre choix. |
Temps de création | Peut prendre plus de temps, car le système est complètement actualisé chaque fois que vous démarrez une build et parce que vous générez toujours la build à partir de zéro. | Économise du temps, car il conserve tous vos fichiers et vos caches. |
Notes
Pour connaître les prix actuels, consultez Tarification pour Azure DevOps.
En fonction des comparaisons indiquées dans le tableau et des considérations relatives à la sécurité et à la complexité, cet exemple de scénario utilise un agent autohébergé pour Azure Pipelines afin de déclencher des pipelines Azure Machine Learning dans le réseau virtuel.
Pour configurer un agent autohébergé, vous disposez des options suivantes :
Installez l’agent sur des machines virtuelles Azure.
Installez les agents sur un groupe de machines virtuelles identiques Azure, qui peut faire l’objet d’une mise à l’échelle automatique pour répondre à la demande.
Installez l’agent sur un conteneur Docker. Cela n’est pas possible, car ce scénario peut nécessiter l’exécution du conteneur Docker au sein de l’agent pour l’entraînement du modèle Machine Learning.
L’exemple de code suivant provisionne deux agents auto-hébergés en créant des machines virtuelles et des extensions Azure :
resource "azurerm_linux_virtual_machine" "agent" {
...
}
resource "azurerm_virtual_machine_extension" "update-vm" {
count = 2
name = "update-vm${format("%02d", count.index)}"
publisher = "Microsoft.Azure.Extensions"
type = "CustomScript"
type_handler_version = "2.1"
virtual_machine_id = element(azurerm_linux_virtual_machine.agent.*.id, count.index)
settings = <<SETTINGS
{
"script": "${base64encode(templatefile("../scripts/terraform/agent_init.sh", {
AGENT_USERNAME = "${var.AGENT_USERNAME}",
ADO_PAT = "${var.ADO_PAT}",
ADO_ORG_SERVICE_URL = "${var.ADO_ORG_SERVICE_URL}",
AGENT_POOL = "${var.AGENT_POOL}"
}))}"
}
SETTINGS
}
Comme illustré dans le bloc de code précédent, le script Terraform appelle agent_init.sh, illustré dans le bloc de code suivant, pour installer les logiciels de l’agent et les bibliothèques requises sur la machine virtuelle de l’agent selon les exigences du client.
#!/bin/sh
# Install other required libraries
...
# Creates directory and downloads Azure DevOps agent installation files
# Find more agent versions at https://github.com/microsoft/azure-pipelines-agent/releases
AGENT_VERSION="3.240.1"
sudo mkdir /myagent
cd /myagent
sudo wget https://vstsagentpackage.azureedge.net/agent/${AGENT_VERSION}/vsts-agent-linux-x64-${AGENT_VERSION}.tar.gz
sudo tar zxvf ./vsts-agent-linux-x64-${AGENT_VERSION}.tar.gz
sudo chmod -R 777 /myagent
# Unattended installation
sudo runuser -l ${AGENT_USERNAME} -c '/myagent/config.sh --unattended --url ${ADO_ORG_SERVICE_URL} --auth pat --token ${ADO_PAT} --pool ${AGENT_POOL}'
cd /myagent
#Configure as a service
sudo ./svc.sh install ${AGENT_USERNAME}
#Start service
sudo ./svc.sh start
Utiliser Container Registry dans le réseau virtuel
Il existe certaines conditions préalables pour sécuriser un espace de travail Azure Machine Learning dans un réseau virtuel. Pour plus d’informations, consultez Prérequis. Container Registry est un service obligatoire quand vous utilisez un espace de travail Azure Machine Learning pour entraîner et déployer des modèles.
Dans cet exemple de scénario, pour garantir que l’agent auto-hébergé peut accéder au registre de conteneurs dans le réseau virtuel, nous utilisons l’appairage de réseaux virtuels et ajoutons un lien de réseau virtuel pour lier la zone DNS privée, privatelink.azurecr.io
, au réseau virtuel Azure Bastion. L’extrait de code Terraform suivant montre cette implémentation.
# Azure Machine Learning Container Registry is for private access
# by the Azure Machine Learning workspace
resource "azurerm_container_registry" "acr" {
name = "my_acr"
resource_group_name = "my_resource_group"
location = "eastasia"
sku = "Premium"
admin_enabled = true
public_network_access_enabled = false
}
resource "azurerm_private_dns_zone" "acr_zone" {
name = "privatelink.azurecr.io"
resource_group_name = "my_resource_group"
}
resource "azurerm_private_dns_zone_virtual_network_link" "acr_zone_link" {
name = "link_acr"
resource_group_name = "my_resource_group"
private_dns_zone_name = azurerm_private_dns_zone.acr_zone.name
virtual_network_id = azurerm_virtual_network.amlvnet.id
}
resource "azurerm_private_endpoint" "acr_ep" {
name = "acr_pe"
resource_group_name = "my_resource_group"
location = "eastasia"
subnet_id = azurerm_subnet.aml_subnet.id
private_service_connection {
name = "acr_psc"
private_connection_resource_id = azurerm_container_registry.acr.id
subresource_names = ["registry"]
is_manual_connection = false
}
private_dns_zone_group {
name = "private-dns-zone-group-app-acr"
private_dns_zone_ids = [azurerm_private_dns_zone.acr_zone.id]
}
}
Cet exemple de scénario garantit également que le registre de conteneurs dispose d’un rôle de contributeur pour l’identité managée affectée par le système de l’espace de travail Azure Machine Learning.
Utiliser une instance ou un cluster de calcul dans le réseau virtuel
Une instance ou un cluster de calcul Azure Machine Learning dans un réseau virtuel exige un groupe de sécurité réseau (NSG) avec certaines règles spécifiques pour son sous-réseau. Pour obtenir la liste de ces règles, consultez Limites.
Notez également que pour l’instance ou le cluster de calcul, vous pouvez désormais supprimer l’adresse IP publique, ce qui permet d’améliorer la protection des ressources de calcul dans la solution MLOps. Pour plus d’informations, consultez Aucune adresse IP publique pour les instances de calcul.
Contributeurs
Cet article est géré par Microsoft. Il a été écrit à l’origine par les contributeurs suivants.
Auteurs principaux :
- Gary Wang | Ingénieur logiciel principal
Autres contributeurs :
- Gary Moore | Programmeur/rédacteur
Pour afficher les profils LinkedIn non publics, connectez-vous à LinkedIn.
Étapes suivantes
- Documentation relative à Terraform sur Azure
- Exemples Terraform d’Entreprise Azure Machine Learning
- Référentiel GitHub Azure MLOps v2
- Tarification du réseau virtuel Azure
- Tarification d’Azure DevOps