Bearbeiten

Share via


Sichere MLOps-Lösungen mit Azure-Netzwerksicherheit

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

Machine Learning DevOps (MLOps), das erstmals im Jahr 2015 in Hidden Technical Debt in Machine Learning Systems (Versteckte technische Schulden in maschinellen Lernsystemen) hervorgehoben wurde, wächst schnell. Der Markt für MLOps wird voraussichtlich bis 2025 4 Milliarden US-Dollar erreichen. In der Zwischenzeit wird der Schutz von MLOps-Lösungen immer wichtiger.

In diesem Artikel wird beschrieben, wie MLOps-Lösungen mithilfe von Azure-Netzwerksicherheitsfunktionen wie Azure Virtual Network, Netzwerkpeering, Azure Private Link und Azure DNS geschützt werden. Außerdem wird die Verwendung folgender Komponenten erläutert:

  • Azure Pipelines zum Zugreifen auf Ressourcen im virtuellen Netzwerk
  • Erforderliche Konfigurationen von Azure Container Registry und Azure Machine Learning-Compute-Instanzen und -Clustern in einem virtuellen Netzwerk

Schließlich werden in diesem Artikel die Kosten für die Verwendung der Netzwerksicherheitsdienste beschrieben.

Aufbau

Diagramm der Phasen im MLOps-Prozess, von der Vorbereitung von Daten bis zur Überwachung des Modells.

Laden Sie eine Visio-Datei dieser Architektur herunter.

Datenfluss

Das Architekturdiagramm zeigt eine Beispiel-MLOps-Lösung.

  • Das virtuelle Netzwerk namens AML VNET trägt zum Schutz des Azure Machine Learning-Arbeitsbereichs und seiner zugeordneten Ressourcen bei.

  • Azure Bastion Host und selbstgehostete Agents gehören zu einem anderen virtuellen Netzwerk namens BASTION VNET. Diese Anordnung simuliert, dass eine andere Lösung vorhanden ist, die Zugriff auf die Ressourcen innerhalb des Azure Machine Learning-Netzwerks erfordert.

  • Mit Unterstützung von virtuellen Netzwerk-Peering- und privaten DNS-Zonen können Azure Pipelines auf selbstgehosteten Agents ausgeführt werden und die Azure Machine Learning-Pipelines auslösen, die im Azure Machine Learning-Arbeitsbereich veröffentlicht werden, um die Machine Learning-Modelle zu trainieren, auszuwerten und zu registrieren.

  • Schließlich wird das Modell für Online-Endpunkte oder Batch-Endpunkte bereitgestellt, die von Azure Machine Learning-Compute- oder Azure Kubernetes Service-Clustern unterstützt werden.

Komponenten

Die MLOPs-Beispiellösung besteht aus den folgenden Komponenten:

In diesem Beispielszenario werden auch die folgenden Dienste verwendet, um die MLOps-Lösung zu schützen:

Szenariodetails

MLOps ist eine Reihe von Praktiken an der Schnittstelle von Machine Learning, DevOps und Datentechnik, die darauf abzielt, Machine Learning-Modelle in der Produktion zuverlässig und effizient bereitzustellen und zu verwalten.

Das folgende Diagramm zeigt ein vereinfachtes MLOps-Prozessmodell. Dieses Modell bietet eine Lösung, die die Datenaufbereitung, Modelltraining, Modellauswertung, Modellregistrierung, Modellimplementierung und -überwachung automatisiert.

Diagramm der Phasen im MLOps-Prozess, von der Aufbereitung von Daten bis zur Überwachung des Modells.

Wenn Sie eine MLOps-Lösung implementieren, sollten Sie die folgenden Ressourcen schützen:

  • DevOps-Pipelines
  • Machine Learning-Trainingsdaten
  • Machine Learning-Pipelines
  • Machine Learning-Modelle

Ziehen Sie zum Schützen von Ressourcen die folgenden Methoden in Betracht:

  • Authentifizierung und Autorisierung

  • Netzwerksicherheit

    • Verwenden Sie Virtual Network, um die Umgebung teilweise oder vollständig aus dem öffentlichen Internet zu isolieren, um die Angriffsfläche und das Potenzial für Datenexfiltration zu reduzieren.
      • Wenn Sie im Azure Machine Learning-Arbeitsbereich noch Azure Machine Learning CLI v1 und Azure Machine Learning Python SDK v1 (etwa die v1-API) verwenden, fügen Sie einen privaten Endpunkt zum Arbeitsbereich hinzu, um Netzwerkisolation für alle Aufgaben außer für CRUD-Vorgänge (Create, Read, Update and Delete) im Arbeitsbereich oder für Computeressourcen bereitzustellen.
      • Um die neuen Features eines Azure Machine Learning-Arbeitsbereichs nutzen zu können, verwenden Sie Azure Machine Learning CLI v2 und Azure Machine Learning Python SDK v2 (etwa die v2-API), da die Aktivierung eines privaten Endpunkts in Ihrem Arbeitsbereich nicht dieselbe Netzwerkisolationsebene bietet. Das virtuelle Netzwerk trägt jedoch weiterhin zum Schutz der Trainingsdaten und Machine Learning-Modelle bei. Es wird empfohlen, die v2-API auszuwerten, ehe Sie sie in Ihre Unternehmenslösungen einführen. Weitere Informationen finden Sie unter Was ist die neue API-Plattform in Azure Resource Manager?.
  • Datenverschlüsselung

  • Azure Policy und Überwachung

    • Verwenden Sie Azure Policy und Microsoft Defender for Cloud, um Richtlinien zu erzwingen.
    • Verwenden Sie Azure Monitor, um Daten (z. B. Metriken und Protokolle) aus verschiedenen Quellen in einer gemeinsamen Datenplattform für Analysen, Visualisierungen und Warnungen zu sammeln und zu aggregieren.

Der Azure Machine Learning-Arbeitsbereich ist die Ressource auf oberster Ebene für Azure Machine Learning und die Kernkomponente einer MLOps-Lösung. Der Arbeitsbereich ist ein zentraler Ort für die Arbeit mit allen Buildartefakten, die Sie bei der Verwendung von Azure Machine Learning erstellen.

Wenn Sie einen neuen Arbeitsbereich erstellen, werden darin automatisch mehrere Azure-Ressourcen erstellt, die vom Arbeitsbereich verwendet werden:

  • Azure Application Insights
  • Azure Container Registry
  • Azure-Schlüsseltresor
  • Azure Storage-Konto

Mögliche Anwendungsfälle

Diese Lösung passt zu Szenarien, in denen ein Kunde eine MLOps-Lösung zum Bereitstellen und Verwalten von Machine Learning-Modellen in einer sichereren Umgebung verwendet. Kunden können aus verschiedenen Branchen sein kommen, z. B. Fertigung, Telekommunikation, Einzelhandel, Gesundheitsversorgung usw. Beispiel:

  • Ein Telekommunikationsanbieter schützt die Bilder, Daten und Machine Learning-Modelle eines Kunden in seinem Videoüberwachungssystem für Einzelhandelsgeschäfte.

  • Ein Motorhersteller benötigt eine sicherere Lösung, um die Daten und Machine Learning-Modelle seiner Fabriken und Produkte für sein System zu schützen, das maschinelles Sehen zur Erkennung von Fehlern in Teilen verwendet.

Die MLOps-Lösungen für diese Szenarien und andere können Azure Machine Learning-Arbeitsbereiche, Azure Blob Storage, Azure Kubernetes Service, Container Registry und andere Azure-Dienste verwenden.

Sie können das gesamte Beispiel oder einen Teil davon für jedes ähnliche Szenario verwenden, das über eine MLOps-Umgebung verfügt, die in Azure bereitgestellt wird, und Azure-Sicherheitsfunktionen zum Schutz der relevanten Ressourcen verwendet. Der ursprüngliche Kunde für diese Lösung befindet sich in der Telekommunikationsbranche.

Überlegungen

Diese Überlegungen bilden die Säulen des Azure Well-Architected Framework, einer Reihe von Leitprinzipien, die Sie zur Verbesserung der Qualität eines Workloads verwenden können. Weitere Informationen finden Sie unter Microsoft Azure Well-Architected Framework.

Sicherheit

Sicherheit bietet mehr Schutz vor vorsätzlichen Angriffen und dem Missbrauch Ihrer wertvollen Daten und Systeme. Weitere Informationen finden Sie unter Übersicht über die Säule „Sicherheit“.

Überlegen Sie schon bei der Entwicklung der Architektur, wie Sie Ihre MLOps-Lösung schützen wollen. Entwicklungsumgebungen benötigen möglicherweise keine erhebliche Sicherheit, aber sie ist in den Staging- und Produktionsumgebungen wichtig.

Kostenoptimierung

Bei der Kostenoptimierung geht es um die Suche nach Möglichkeiten, unnötige Ausgaben zu reduzieren und die Betriebseffizienz zu verbessern. Weitere Informationen finden Sie unter Übersicht über die Säule „Kostenoptimierung“.

Das Konfigurieren von Virtual Network ist kostenlos, es fallen jedoch Gebühren für die anderen Dienste an, die für Ihr Szenario unter Umständen erforderlich sind, z. B. private Verbindungen, DNS-Zonen und Peering virtueller Netzwerke. In der folgenden Tabelle werden die Gebühren für diese Dienste und andere beschrieben, die möglicherweise erforderlich sind.

Azure-Dienst Preise
Virtual Network Kostenlos.
Private Link Sie zahlen nur für die Stunden, die Sie für private Endpunkt-Ressourcen aufwenden und für die Daten, die über Ihren privaten Endpunkt verarbeitet werden.
Private Azure DNS-Zone Die Abrechnung von Azure DNS-Zonen basiert auf der Anzahl von DNS-Zonen, die in Azure gehostet werden, sowie auf der Anzahl von empfangenen DNS-Abfragen.
Peering virtueller Netzwerke Eingehender und ausgehender Datenverkehr wird an beiden Enden des Peering-Netzwerks in Rechnung gestellt.
VPN Gateway Gebühren fallen basierend auf der Bereitstellungs- und Verfügbarkeitsdauer des Gateways an.
ExpressRoute Gebühren gelten für ExpressRoute- und ExpressRoute-Gateways.
Azure Bastion Die Preise für Azure Bastion setzen sich aus einer Kombination der Stundenpreise basierend auf der SKU, den Skalierungseinheiten und den Datenübertragungsraten zusammen.

Optimaler Betrieb

Die Säule „Optimaler Betrieb“ deckt die Betriebsprozesse ab, die für die Bereitstellung einer Anwendung und deren Ausführung in der Produktion sorgen. Weitere Informationen finden Sie unter Übersicht über die Säule „Optimaler Betrieb“.

Um die Continuous Integration und Continuous Delivery (CI/CD) (kontinuierliche Integration und kontinuierliche Übermittlung) zu optimieren, empfiehlt es sich, Tools und Dienste für die Infrastruktur als Code (IaC) wie Terraform oder Azure Resource Manager-Vorlagen, Azure DevOps und Azure Pipelines zu verwenden.

Bereitstellen dieses Szenarios

In den folgenden Abschnitten wird beschrieben, wie Sie Ressourcen in diesem Beispielszenario bereitstellen, schützen und darauf zugreifen.

Virtual Network

Der erste Schritt zum Schutz der MLOps-Umgebung besteht darin, den Azure Machine Learning-Arbeitsbereich und seine zugeordneten Ressourcen zu schützen. Eine effektive Schutzmethode ist die Verwendung von Virtual Network. Virtual Network ist der grundlegende Baustein für Ihr privates Netzwerk in Azure. Mit Virtual Network können zahlreiche Arten von Azure-Ressourcen sicher untereinander sowie mit dem Internet und lokalen Netzwerken kommunizieren.

Durch das Platzieren des Azure Machine Learning-Arbeitsbereichs und der zugeordneten Ressourcen in einem virtuellen Netzwerk wird sichergestellt, dass Komponenten miteinander kommunizieren können, ohne sie für das öffentliche Internet verfügbar zu machen. Dadurch wird ihre Angriffsfläche reduziert und die Datenexfiltration verhindert.

Der folgende Terraform-Codeausschnitt zeigt, wie Sie einen Computecluster für Azure Machine Learning erstellen, an einen Arbeitsbereich anfügen und in ein Subnetz eines virtuellen Netzwerks einfügen.

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 ermöglicht den Zugriff über einen privaten Endpunkt in Ihrem virtuellen Netzwerk auf Azure Platform-as-a-Service (PaaS)-Optionen wie Azure Machine Learning-Arbeitsbereiche und Azure Storage sowie auf in Azure gehostete kundeneigene Dienste oder Partnerdienste Ein privater Endpunkt ist eine Netzwerkschnittstelle, die nur eine Verbindung mit bestimmten Ressourcen herstellt, was zum Schutz vor Datenexfiltration beiträgt.

In diesem Beispielszenario gibt es vier private Endpunkte, die an Azure PaaS-Optionen gebunden sind und von einem Subnetz im virtuellen Azure Machine Learning-Netzwerk verwaltet werden, wie im Architekturdiagramm gezeigt. Daher sind diese Dienste nur für die Ressourcen innerhalb desselben virtuellen Netzwerks, des virtuellen Azure Machine Learning-Netzwerks, zugänglich. Diese Dienste sind:

  • Azure Machine Learning-Arbeitsbereich
  • Azure Blob Storage
  • Azure Container Registry
  • Azure-Schlüsseltresor

Der folgende Terraform-Codeausschnitt zeigt, wie Sie einen privaten Endpunkt verwenden, um eine Verknüpfung mit einem Azure Machine Learning-Arbeitsbereich herzustellen, der durch das virtuelle Netzwerk besser geschützt ist. Der Codeausschnitt zeigt auch die Verwendung einer privaten DNS-Zone, die im Abschnitt Azure Private DNS-Zonen beschrieben wird.

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

Der obige Code für azurerm_machine_learning_workspace verwendet standardmäßig die v2-API-Plattform. Wenn Sie dennoch die v1-API verwenden möchten oder aufgrund einer Unternehmensrichtlinie keine Mitteilungen über öffentliche Netzwerke senden dürfen, können Sie den Parameter v1_legacy_mode_enabled aktivieren, wie im folgenden Codeausschnitt gezeigt. Wenn dieser Parameter aktiviert ist, wird die v2 API für Ihren Arbeitsbereich deaktiviert.

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

Private Azure-DNS-Zonen

Azure DNS bietet einen zuverlässigen, sichereren DNS-Dienst zum Verwalten und Auflösen von Domänennamen in einem virtuellen Netzwerk, ohne dass Sie eine benutzerdefinierte DNS-Lösung hinzufügen müssen. Durch die Verwendung privater DNS-Zonen können Sie benutzerdefinierte Domänennamen anstelle der von Azure bereitgestellten Namen verwenden. Die DNS-Auflösung für eine private DNS-Zone funktioniert nur aus virtuellen Netzwerken, die damit verknüpft sind.

Diese Beispiellösung verwendet private Endpunkte für den Azure Machine Learning-Arbeitsbereich und für seine zugeordneten Ressourcen wie Azure Storage, Azure Key Vault oder Container Registry. Daher müssen Sie die DNS-Einstellungen ordnungsgemäß konfigurieren, um die IP-Adresse der privaten Endpunkte in den vollqualifizierten Domänennamen (FQDN) der Verbindungszeichenfolge aufzulösen.

Sie können eine private DNS-Zone mit einem virtuellen Netzwerk verknüpfen, um bestimmte Domänen aufzulösen.

Der Terraform-Codeausschnitt in Azure Private Link und privater Azure-Endpunkt erstellt zwei private DNS-Zonen mithilfe der Zonennamen, die in DNS-Zonenkonfiguration der Azure-Dienste empfohlen werden:

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

Peering virtueller Netzwerke

Das Peering virtueller Netzwerke ermöglicht den Zugriff durch virtuelle Bastion Host-Computer (VM) oder selbstgehostete Agent-VMs im virtuellen Azure Bastion-Netzwerk auf die Ressourcen im virtuellen Azure Machine Learning-Netzwerk. Für Verbindungszwecke arbeiten die beiden virtuellen Netze wie ein einziges. Der Datenverkehr zwischen VMs und Azure Machine Learning-Ressourcen in virtuellen Peer-Netzwerken verwendet die Azure-Backbone-Infrastruktur. Der Datenverkehr zwischen den virtuellen Netzwerken wird über das private Netzwerk von Azure weitergeleitet.

Der folgende Terraform-Codeausschnitt richtet das Peering virtueller Netzwerke zwischen dem virtuellen Azure Machine Learning-Netzwerk und dem virtuellen Azure Bastion-Netzwerk ein.

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

Zugreifen auf die Ressourcen im virtuellen Netzwerk

Um auf den Azure Machine Learning-Arbeitsbereich in einem virtuellen Netzwerk zuzugreifen, z. B. das virtuelle Azure Machine Learning-Netzwerk in diesem Szenario, verwenden Sie eine der folgenden Methoden:

  • Azure VPN Gateway
  • Azure ExpressRoute
  • Azure Bastion und der Bastion Host-VM

Weitere Informationen finden Sie unter Herstellen einer Verbindung mit dem Arbeitsbereich.

Ausführen von Azure Pipelines, die auf die Ressourcen im virtuellen Netzwerk zugreifen

Azure Pipelines erstellt und testet Ihre Codeprojekte automatisch, um sie für andere Benutzer verfügbar zu machen. Azure Pipelines kombiniert CI/CD, um Ihren Code zu testen, zu erstellen und an ein beliebiges Ziel zu senden.

Von Azure gehostete Agents im Vergleich zu selbstgehosteten Agents

Die MLOps-Lösung in diesem Beispielszenario besteht aus zwei Pipelines, die Azure Machine Learning-Pipelines auslösen und auf zugeordnete Ressourcen zugreifen können. Da sich der Azure Machine Learning-Arbeitsbereich und seine zugeordnete Ressource in einem virtuellen Netzwerk befinden, muss dieses Szenario eine Möglichkeit bieten, dass ein Azure Pipelines-Agent darauf zugreifen kann. Ein Agent ist die Computinginfrastruktur mit installierter Agent-Software, die Aufträge von Azure Pipelines nacheinander ausführt. Es gibt mehrere Möglichkeiten zum Implementieren des Zugriffs:

  • Verwenden Sie selbstgehostete Agents im selben virtuellen Netzwerk oder im virtuellen Peering-Netzwerk, wie im Architekturdiagramm gezeigt.

  • Verwenden Sie von Azure gehostete Agents, und fügen Sie deren IP-Adressbereiche zu einer Zulassungsliste in den Firewalleinstellungen der ausgewählten Azure-Dienste hinzu.

  • Verwenden Sie von Azure gehostete Agents (als VPN-Clients) und VPN Gateway.

Jede dieser Optionen verfügt über Vor- und Nachteile. In der folgenden Tabelle werden von Azure gehostete Agents mit selbstgehosteten Agents verglichen.

Verwenden eines von Azure gehosteten Agents Selbstgehosteter Agent
Kosten Beginnen Sie kostenlos mit einem Parallelauftrag mit 1.800 Minuten pro Monat und einer Gebühr für jeden von Azure gehosteten CI/CD-Parallelauftrag. Beginnen Sie kostenlos mit einem Parallelauftrag mit unbegrenzten Minuten pro Monat und einer Gebühr für jeden zusätzlichen selbst gehosteten CI/CD-Parallelauftrag mit unbegrenzten Minuten. Diese Option bietet günstigere Parallelaufträge.
Wartung Wird von Microsoft für Sie erledigt. Von Ihnen verwaltet, mit mehr Kontrolle über die Installation der von Ihnen gewünschten Software.
Buildzeit Mehr Zeitaufwand, da es jedes Mal, wenn Sie einen Build starten, vollständig aktualisiert wird, und Sie immer von vorne anfangen müssen. Spart Zeit, da alle Dateien und Caches beibehalten werden.

Hinweis

Aktuelle Preisinformationen finden Sie unter Azure DevOps – Preise.

Basierend auf den Vergleichen in der Tabelle und den Überlegungen zur Sicherheit und Komplexität verwendet dieses Beispielszenario einen selbstgehosteten Agent für Azure Pipelines, um Azure Machine Learning-Pipelines im virtuellen Netzwerk auszulösen.

Zum Konfigurieren eines selbstgehosteten Agents haben Sie folgende Optionen:

  • Installieren Sie den Agent auf Azure Virtual Machines.

  • Installieren Sie die Agents in einer Azure-VM-Skalierungsgruppe, die automatisch skaliert werden kann, um die Nachfrage zu erfüllen.

  • Installieren Sie den Agent auf einem Docker-Container. Diese Option ist nicht möglich, da dieses Szenario möglicherweise das Ausführen des Docker-Containers innerhalb des Agents für das Training des Machine Learning-Modells erfordert.

Im folgenden Beispielcode werden zwei selbstgehostete Agents bereitgestellt, indem Azure-VMs und -Erweiterungen erstellt werden:

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
}

Wie im vorhergehenden Codeblock gezeigt, ruft das Terraform-Skript agent_init.sh auf, wie im folgenden Codeblock gezeigt, um die Agent-Software und die erforderlichen Bibliotheken auf der Agent-VM gemäß den Anforderungen des Kunden zu installieren.

#!/bin/sh
# Install other required libraries 
...

# Creates directory and downloads Azure DevOps agent installation files
sudo mkdir /myagent 
cd /myagent
sudo wget https://vstsagentpackage.azureedge.net/agent/2.194.0/vsts-agent-linux-x64-2.194.0.tar.gz
sudo tar zxvf ./vsts-agent-linux-x64-2.194.0.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

Azure Container Registry in einem virtuellen Netzwerk

Es gibt einige Voraussetzungen zum Sichern eines Azure Machine Learning-Arbeitsbereichs in einem virtuellen Netzwerk. Weitere Informationen finden Sie unter Voraussetzungen. Container Registry ist ein erforderlicher Dienst, wenn Sie einen Azure Machine Learning-Arbeitsbereich verwenden, um die Modelle zu trainieren und bereitzustellen.

Um sicherzustellen, dass der selbstgehostete Agent auf die Containerregistrierung im virtuellen Netzwerk zugreifen kann, verwenden wir in diesem Beispielszenario Peering virtueller Netzwerke und fügen einen virtuellen Netzwerk-Link hinzu, um die private DNS-Zone privatelink.azurecr.io mit dem virtuellen Azure Bastion-Netzwerk zu verbinden. Der folgende Terraform-Codeausschnitt zeigt die Implementierung.

# 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 diesem Beispielszenario wird auch sichergestellt, dass die Containerregistrierung über eine Mitwirkenderolle für die systemseitig zugewiesene verwaltete Identität des Azure Machine Learning-Arbeitsbereichs verfügt.

Verwenden eines Computeclusters oder einer Instanz im virtuellen Netzwerk

Ein Azure Machine Learning-Computecluster oder eine Instanz in einem virtuellen Netzwerk erfordert eine Netzwerksicherheitsgruppe (NSG) mit einigen spezifischen Regeln für das Subnetz. Eine Liste dieser Regeln finden Sie unter Einschränkungen.

Beachten Sie außerdem, dass der Computecluster oder die Compute-Instanz jetzt die öffentliche IP-Adresse entfernen kann, wodurch ein besserer Schutz für Computeressourcen in der MLOps-Lösung möglich ist. Weitere Informationen finden Sie unter Keine öffentliche IP-Adresse für Compute-Instanzen.

Beitragende

Dieser Artikel wird von Microsoft gepflegt. Er wurde ursprünglich von folgenden Mitwirkenden geschrieben:

Hauptautoren:

Andere Mitwirkende:

Melden Sie sich bei LinkedIn an, um nicht öffentliche LinkedIn-Profile anzuzeigen.

Nächste Schritte