Bewerken

Delen via


MLOps-oplossingen beveiligen met Azure-netwerkbeveiliging

Azure DevOps
Azure DNS
Azure Machine Learning
Azure Private Link
Azure Virtual Network

Machine Learning DevOps (MLOps), voor het eerst gemarkeerd in Verborgen technische schulden in Machine Learning Systems in 2015, groeit snel. De markt voor MLOps zal naar verwachting in 2025 $ 4 miljard bereiken. Ondertussen wordt het steeds belangrijker om MLOps-oplossingen te beveiligen.

In dit artikel wordt beschreven hoe u MLOps-oplossingen kunt beveiligen met behulp van azure-netwerkbeveiligingsmogelijkheden zoals Azure Virtual Network, netwerkpeering, Azure Private Link en Azure DNS. Ook wordt uitgelegd hoe u het volgende kunt gebruiken:

  • Azure Pipelines voor toegang tot resources in het virtuele netwerk
  • De vereiste configuraties van Azure Container Registry en Azure Machine Learning-rekeninstanties en -clusters in een virtueel netwerk.

Ten slotte beschrijft dit artikel de kosten voor het gebruik van de netwerkbeveiligingsservices.

Architectuur

Diagram van de fasen in het MLOps-proces, van het voorbereiden van gegevens tot het bewaken van het model.

Een Visio-bestand van deze architectuur downloaden.

Gegevensstroom

In het architectuurdiagram ziet u een MLOps-voorbeeldoplossing.

  • Het virtuele netwerk met de naam AML VNET helpt de Azure Machine Learning-werkruimte en de bijbehorende resources te beveiligen.

  • De jumphost, Azure Bastion en zelf-hostende agents behoren tot een ander virtueel netwerk met de naam BASTION VNET. Met deze rangschikking wordt gesimuleerd dat er een andere oplossing is die toegang tot de resources in het virtuele Azure Machine Learning-netwerk vereist.

  • Met de ondersteuning van peering van virtuele netwerken en privé-DNS-zones kunnen Azure Pipelines worden uitgevoerd op zelf-hostagenten en de Azure Machine Learning-pijplijnen activeren die zijn gepubliceerd in de Azure Machine Learning-werkruimte om de machine learning-modellen te trainen, evalueren en registreren.

  • Ten slotte wordt het model geïmplementeerd op online-eindpunten of batcheindpunten die worden ondersteund door Azure Machine Learning Compute- of Azure Kubernetes Service-clusters.

Onderdelen

De MLOps-voorbeeldoplossing bestaat uit deze onderdelen:

In dit voorbeeldscenario worden ook de volgende services gebruikt om de MLOps-oplossing te beveiligen:

Scenariodetails

MLOps is een reeks procedures op het snijpunt van Machine Learning, DevOps en data engineering die is gericht op het implementeren en onderhouden van machine learning-modellen in productie betrouwbaar en efficiënt.

In het volgende diagram ziet u een vereenvoudigd MLOps-procesmodel. Dit model biedt een oplossing voor het automatiseren van gegevensvoorbereiding, modeltraining, modelevaluatie, modelregistratie, modelimplementatie en bewaking.

Diagram van de fasen in het MLOps-proces, van het voorbereiden van gegevens tot het bewaken van het model.

Wanneer u een MLOps-oplossing implementeert, wilt u deze resources mogelijk beveiligen:

  • DevOps-pijplijnen
  • Machine learning-trainingsgegevens
  • Machine Learning-pijplijnen
  • Machine Learning-modellen

Als u resources wilt beveiligen, kunt u de volgende methoden overwegen:

  • Verificatie en autorisatie

  • Netwerkbeveiliging

    • Gebruik Virtual Network om de omgeving gedeeltelijk of volledig te isoleren van het openbare internet om het kwetsbaarheid voor aanvallen en het potentieel voor gegevensexfiltratie te verminderen.
      • Als u in de Azure Machine Learning-werkruimte nog steeds Azure Machine Learning CLI v1 en Azure Machine Learning Python SDK v1 (zoals v1-API) gebruikt, voegt u een privé-eindpunt toe aan de werkruimte om netwerkisolatie te bieden voor alles behalve cruD-bewerkingen (maken, lezen, bijwerken en verwijderen) in de werkruimte of rekenresources.
      • Als u wilt profiteren van de nieuwe functies van een Azure Machine Learning-werkruimte, gebruikt u Azure Machine Learning CLI v2 en Azure Machine Learning Python SDK v2 (zoals v2-API), waarin het inschakelen van een privé-eindpunt in uw werkruimte niet hetzelfde niveau van netwerkisolatie biedt. Het virtuele netwerk helpt echter nog steeds om de trainingsgegevens en machine learning-modellen te beveiligen. U wordt aangeraden v2-API te evalueren voordat u deze in uw bedrijfsoplossingen gaat gebruiken. Zie Wat is het nieuwe API-platform in Azure Resource Manager voor meer informatie.
  • Gegevensversleuteling

  • Beleid en bewaking

    • Gebruik Azure Policy en Microsoft Defender voor Cloud om beleid af te dwingen.
    • Gebruik Azure Monitor om gegevens (zoals metrische gegevens en logboeken) uit verschillende bronnen te verzamelen en samen te voegen tot een gemeenschappelijk gegevensplatform voor analyse, visualisatie en waarschuwingen.

De Azure Machine Learning-werkruimte is de resource op het hoogste niveau voor Azure Machine Learning en het kernonderdeel van een MLOps-oplossing. De werkruimte biedt een centrale plek om te werken met alle artefacten die u maakt wanneer u Azure Machine Learning gebruikt.

Wanneer u een nieuwe werkruimte maakt, worden automatisch de volgende Azure-resources gemaakt die door de werkruimte worden gebruikt:

  • Azure Application Insights
  • Azure Container Registry
  • Azure Key Vault
  • Azure-opslagaccount

Potentiële gebruikscases

Deze oplossing past bij scenario's waarin een klant een MLOps-oplossing gebruikt om machine learning-modellen in een veiligere omgeving te implementeren en te onderhouden. Klanten kunnen afkomstig zijn uit verschillende branches, zoals productie, telecommunicatie, detailhandel, gezondheidszorg, enzovoort. Voorbeeld:

  • Een telecommunicatieprovider beschermt de foto's, gegevens en machine learning-modellen van een klant in het videobewakingssysteem voor winkels.

  • Een fabrikant van een motor heeft een veiligere oplossing nodig om de gegevens- en machine learning-modellen van zijn fabrieken en producten te beschermen voor het systeem dat computer vision gebruikt om defecten in onderdelen te detecteren.

De MLOps-oplossingen voor deze scenario's en anderen maken mogelijk gebruik van Azure Machine Learning-werkruimten, Azure Blob Storage, Azure Kubernetes Service, Container Registry en andere Azure-services.

U kunt alle of een deel van dit voorbeeld gebruiken voor een vergelijkbaar scenario met een MLOps-omgeving die is geïmplementeerd in Azure en maakt gebruik van Azure-beveiligingsmogelijkheden om de relevante resources te beveiligen. De oorspronkelijke klant voor deze oplossing bevindt zich in de telecommunicatie-industrie.

Overwegingen

Met deze overwegingen worden de pijlers van het Azure Well-Architected Framework geïmplementeerd. Dit is een set richtlijnen die de kwaliteit van een workload verbeteren wanneer deze wordt toegepast. Zie Microsoft Azure Well-Architected Framework voor meer informatie.

Beveiliging

Beveiliging biedt meer garanties tegen opzettelijke aanvallen en het misbruik van uw waardevolle gegevens en systemen. Zie Overzicht van de beveiligingspijler voor meer informatie.

Overweeg hoe u uw MLOps-oplossing kunt beveiligen vanaf het architectuurontwerp. Ontwikkelomgevingen hebben mogelijk geen aanzienlijke beveiliging nodig, maar het is belangrijk in de faserings- en productieomgevingen.

Kostenoptimalisatie

Kostenoptimalisatie gaat over manieren om onnodige uitgaven te verminderen en operationele efficiëntie te verbeteren. Zie Overzicht van de pijler kostenoptimalisatie voor meer informatie.

Het configureren van virtueel netwerk is gratis, maar er zijn kosten in rekening gebracht voor de andere services die uw scenario mogelijk vereist, zoals privékoppelingen, DNS-zones en peering van virtuele netwerken. In de volgende tabel worden de kosten voor deze services en andere services beschreven die mogelijk vereist zijn.

Azure-service Prijzen
Virtual Network Gratis.
Private Link Betaal alleen voor resourceuren voor privé-eindpunten en de gegevens die worden verwerkt via uw privé-eindpunt.
Azure DNS, privézone Facturering is gebaseerd op het aantal DNS-zones dat wordt gehost in Azure en het aantal DNS-query's dat wordt ontvangen.
Peering van virtuele netwerken Voor inkomend en uitgaand verkeer worden kosten in rekening gebracht aan beide uiteinden van de peernetwerken.
VPN Gateway De kosten zijn gebaseerd op de hoeveelheid tijd die de gateway heeft ingericht en beschikbaar is.
ExpressRoute Kosten zijn voor ExpressRoute- en ExpressRoute-gateways.
Azure Bastion Facturering omvat een combinatie van uurprijzen die zijn gebaseerd op SKU, schaaleenheden en tarieven voor gegevensoverdracht.

Operationele uitmuntendheid

Operationele uitmuntendheid omvat de operationele processen die een toepassing implementeren en deze in productie houden. Zie Overzicht van de operationele uitmuntendheidpijler voor meer informatie.

Om continue integratie en continue levering (CI/CD) te stroomlijnen, kunt u het beste hulpprogramma's en services gebruiken voor infrastructuur als code (IaC), zoals Terraform- of Azure Resource Manager-sjablonen, Azure DevOps en Azure Pipelines.

Dit scenario implementeren

In de volgende secties wordt beschreven hoe u resources in dit voorbeeldscenario implementeert, opent en beveiligt.

Virtual Network

De eerste stap bij het beveiligen van de MLOps-omgeving is het beveiligen van de Azure Machine Learning-werkruimte en de bijbehorende resources. Een effectieve beveiligingsmethode is het gebruik van Virtual Network. Virtual Network is de fundamentele bouwsteen voor uw privénetwerk in Azure. Met Virtual Network kunnen veel soorten Azure-resources veiliger met elkaar, internet en on-premises netwerken communiceren.

Als u de Azure Machine Learning-werkruimte en de bijbehorende resources in een virtueel netwerk plaatst, zorgt u ervoor dat onderdelen met elkaar kunnen communiceren zonder ze beschikbaar te maken voor het openbare internet. Dit vermindert de kwetsbaarheid voor aanvallen en helpt bij het voorkomen van gegevensexfiltratie.

In het volgende Terraform-fragment ziet u hoe u een rekencluster voor Azure Machine Learning maakt, deze koppelt aan een werkruimte en in een subnet van een virtueel netwerk plaatst.

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 maakt toegang mogelijk via een privé-eindpunt in uw virtuele netwerk naar PaaS-opties (Platform as a Service), zoals een Azure Machine Learning-werkruimte en Azure Storage, en tot door Azure gehoste services die eigendom zijn van klanten en partners. Een privé-eindpunt is een netwerkinterface die alleen verbinding maakt met specifieke resources, waardoor u zich kunt beschermen tegen gegevensexfiltratie.

In dit voorbeeldscenario zijn er vier privé-eindpunten die zijn gekoppeld aan Azure PaaS-opties en worden beheerd door een subnet in het virtuele Azure Machine Learning-netwerk, zoals wordt weergegeven in het architectuurdiagram. Daarom zijn deze services alleen toegankelijk voor de resources binnen hetzelfde virtuele netwerk, het virtuele Azure Machine Learning-netwerk. Deze services zijn:

  • Azure Machine Learning-werkruimte
  • Azure Blob-opslag
  • Azure Container Registry
  • Azure Key Vault

In het volgende Terraform-fragment ziet u hoe u een privé-eindpunt gebruikt om een koppeling te maken naar een Azure Machine Learning-werkruimte, die als gevolg hiervan beter wordt beveiligd door het virtuele netwerk. Het codefragment toont ook het gebruik van een privé-DNS-zone, die wordt beschreven in Azure Privé-DNS zones.

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]
}

De voorgaande code voor azurerm_machine_learning_workspace het v2 API-platform wordt standaard gebruikt. Als u nog steeds de v1-API wilt gebruiken of een bedrijfsbeleid wilt hebben dat het verzenden van communicatie via openbare netwerken verbiedt, kunt u de v1_legacy_mode_enabled parameter inschakelen, zoals wordt weergegeven in het volgende codefragment. Wanneer deze parameter is ingeschakeld, wordt de v2-API voor uw werkruimte uitgeschakeld.

resource "azurerm_machine_learning_workspace" "aml_ws" {
  ...
  public_network_access_enabled = false
  v1_legacy_mode_enabled  = true
}

Privé-DNS-zones van Azure

Azure DNS biedt een betrouwbare, veiligere DNS-service voor het beheren en omzetten van domeinnamen in een virtueel netwerk zonder dat u een aangepaste DNS-oplossing hoeft toe te voegen. Met behulp van privé-DNS-zones kunt u aangepaste domeinnamen gebruiken in plaats van de namen van Azure. DNS-omzetting voor een privé-DNS-zone werkt alleen vanuit virtuele netwerken die eraan zijn gekoppeld.

Deze voorbeeldoplossing maakt gebruik van privé-eindpunten voor de Azure Machine Learning-werkruimte en voor de bijbehorende resources, zoals Azure Storage, Azure Key Vault of Container Registry. Daarom moet u uw DNS-instellingen configureren om de IP-adressen van de privé-eindpunten op te lossen vanaf de FQDN (Fully Qualified Domain Name) van de verbindingsreeks.

U kunt een privé-DNS-zone koppelen aan een virtueel netwerk om specifieke domeinen op te lossen.

Met het Terraform-fragment in Private Link en Azure Private Endpoint worden twee privé-DNS-zones gemaakt met behulp van de zonenamen die worden aanbevolen in de dns-zoneconfiguratie van Azure-services:

  • privatelink.api.azureml.ms
  • privatelink.notebooks.azure.net

Peering van virtuele netwerken

Peering van virtuele netwerken maakt het mogelijk om toegang te krijgen tot de virtuele machine (VM) van de jump-host of zelf-hostende agent-VM's in het virtuele Azure Bastion-netwerk naar de resources in het virtuele Azure Machine Learning-netwerk. Voor connectiviteitsdoeleinden werken de twee virtuele netwerken als één. Het verkeer tussen VM's en Azure Machine Learning-resources in gekoppelde virtuele netwerken maakt gebruik van de Azure-backbone-infrastructuur. Verkeer tussen de virtuele netwerken wordt gerouteerd via het privénetwerk van Azure.

Met het volgende Terraform-fragment wordt peering van virtuele netwerken ingesteld tussen het virtuele Azure Machine Learning-netwerk en het virtuele Azure Bastion-netwerk.

# 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
}

Toegang tot de resources in het virtuele netwerk

Gebruik een van de volgende methoden om toegang te krijgen tot de Azure Machine Learning-werkruimte in een virtueel netwerk, zoals het virtuele Azure Machine Learning-netwerk in dit scenario:

  • Azure VPN-gateway
  • Azure ExpressRoute
  • Azure Bastion en de jumphost-VM

Zie Verbinding maken naar de werkruimte voor meer informatie.

Azure Pipelines uitvoeren die toegang hebben tot de resources in het virtuele netwerk

Azure-pijplijnen ontwikkelt en test automatisch codeprojecten om ze beschikbaar te maken voor anderen. Azure Pipelines combineert CI/CD om uw code te testen en te bouwen en naar elk doel te verzenden.

Door Azure gehoste agents versus zelf-hostende agents

De MLOps-oplossing in dit voorbeeldscenario bestaat uit twee pijplijnen, die Azure Machine Learning-pijplijnen kunnen activeren en toegang kunnen krijgen tot gekoppelde resources. Omdat de Azure Machine Learning-werkruimte en de bijbehorende resource zich in een virtueel netwerk bevinden, moet dit scenario een manier bieden voor toegang tot een Azure Pipelines-agent. Een agent is een computerinfrastructuur met geïnstalleerde agentsoftware waarmee taken van de Azure Pipelines één voor één worden uitgevoerd. Er zijn meerdere manieren om toegang te implementeren:

  • Gebruik zelf-hostende agents in hetzelfde virtuele netwerk of het peering-virtuele netwerk, zoals wordt weergegeven in het architectuurdiagram.

  • Gebruik door Azure gehoste agents en voeg hun IP-adresbereiken toe aan een acceptatielijst in de firewallinstellingen van de beoogde Azure-services.

  • Gebruik door Azure gehoste agents (als VPN-clients) en VPN Gateway.

Elk van deze keuzes heeft voor- en nadelen. In de volgende tabel worden door Azure gehoste agents vergeleken met zelf-hostende agents.

Door Azure gehoste agent Zelf-hostende agent
Kosten Start gratis voor één parallelle taak met 1800 minuten per maand en kosten voor elke door Azure gehoste CI/CD-parallelle taak. Start gratis voor één parallelle taak met onbeperkte minuten per maand en een toeslag voor elke extra zelf-hostende CI/CD-parallelle taak met onbeperkte minuten. Deze optie biedt goedkopere parallelle taken.
Onderhoud Voor u geregeld door Microsoft. Onderhouden door u met meer controle over het installeren van de software die u wilt.
Buildtijd Tijdrovender omdat het elke keer dat u een build start volledig wordt vernieuwd en u altijd helemaal opnieuw bouwt. Bespaart tijd omdat al uw bestanden en caches worden bewaard.

Notitie

Zie Prijzen voor Azure DevOps voor actuele prijzen.

Op basis van de vergelijkingen in de tabel en de overwegingen voor beveiliging en complexiteit gebruikt dit voorbeeldscenario een zelf-hostende agent voor Azure Pipelines om Azure Machine Learning-pijplijnen in het virtuele netwerk te activeren.

Als u een zelf-hostende agent wilt configureren, hebt u de volgende opties:

  • Installeer de agent op virtuele Azure-machines.

  • Installeer de agents in een virtuele-machineschaalset van Azure, die automatisch kunnen worden geschaald om te voldoen aan de vraag.

  • Installeer de agent in een Docker-container. Deze optie is niet haalbaar, omdat voor dit scenario mogelijk het uitvoeren van de Docker-container in de agent nodig is voor het trainen van machine learning-modellen.

De volgende voorbeeldcode richt twee zelf-hostende agents in door azure-VM's en extensies te maken:

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
}

Zoals wordt weergegeven in het voorgaande codeblok, roept het Terraform-script agent_init.sh aan, weergegeven in het volgende codeblok, om agentsoftware en vereiste bibliotheken te installeren op de agent-VM volgens de vereisten van de klant.

#!/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

Container Registry gebruiken in het virtuele netwerk

Er zijn enkele vereisten voor het beveiligen van een Azure Machine Learning-werkruimte in een virtueel netwerk. Zie Vereisten voor meer informatie. Container Registry is een vereiste service wanneer u een Azure Machine Learning-werkruimte gebruikt om de modellen te trainen en te implementeren.

In dit voorbeeldscenario, om ervoor te zorgen dat de zelf-hostende agent toegang heeft tot het containerregister in het virtuele netwerk, gebruiken we peering van virtuele netwerken en voegen we een koppeling voor een virtueel netwerk toe om de privé-DNS-zone privatelink.azurecr.iote koppelen aan het virtuele Azure Bastion-netwerk. In het volgende Terraform-fragment ziet u de implementatie.

# 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]
  }
}

In dit voorbeeldscenario wordt er ook voor gezorgd dat het containerregister een inzenderrol heeft voor de door het systeem toegewezen beheerde identiteit van de Azure Machine Learning-werkruimte.

Een rekencluster of exemplaar gebruiken in het virtuele netwerk

Een Azure Machine Learning-rekencluster of -exemplaar in een virtueel netwerk vereist een netwerkbeveiligingsgroep (NSG) met enkele specifieke regels voor het subnet. Zie Beperkingen voor een lijst met deze regels.

Houd er ook rekening mee dat het voor het rekencluster of het rekenproces nu mogelijk is om het openbare IP-adres te verwijderen. Dit helpt u betere beveiliging te bieden voor rekenresources in de MLOps-oplossing. Zie Geen openbaar IP-adres voor rekeninstanties voor meer informatie.

Medewerkers

Dit artikel wordt onderhouden door Microsoft. De tekst is oorspronkelijk geschreven door de volgende Inzenders.

Belangrijkste auteurs:

Andere Inzenders:

Als u niet-openbare LinkedIn-profielen wilt zien, meldt u zich aan bij LinkedIn.

Volgende stappen