Freigeben über


Schützen Ihrer verwalteten Onlineendpunkte mit Netzwerkisolation

GILT FÜR:Azure CLI ML-Erweiterung v2 (aktuell)Python SDK azure-ai-ml v2 (aktuell)

In diesem Artikel verwenden Sie die Netzwerkisolation, um einen verwalteten Onlineendpunkt zu schützen. Sie erstellen einen verwalteten Onlineendpunkt, der den privaten Endpunkt eines Azure Machine Learning-Arbeitsbereichs für sichere eingehende Kommunikation verwendet. Außerdem konfigurieren Sie den Arbeitsbereich mit einem verwalteten virtuellen Netzwerk, das nur genehmigte ausgehende Kommunikation für Bereitstellungen zulässt. Zu Schluss erstellen Sie eine Bereitstellung, die die privaten Endpunkte des verwalteten virtuellen Netzwerks des Arbeitsbereichs für die ausgehende Kommunikation verwendet.

Beispiele, die die Legacymethode für die Netzwerkisolation verwenden, finden Sie in den Bereitstellungsdateien deploy-moe-vnet-legacy.sh (für die Bereitstellung mit einem generischen Modell) und deploy-moe-vnet-mlflow-legacy.sh (für die Bereitstellung mit einem MLflow-Modell) im GitHub-Repository azureml-examples.

Voraussetzungen

  • Für die Verwendung von Azure Machine Learning ist ein Azure-Abonnement erforderlich. Wenn Sie nicht über ein Azure-Abonnement verfügen, können Sie ein kostenloses Konto erstellen, bevor Sie beginnen. Probieren Sie noch heute die kostenlose oder kostenpflichtige Version von Azure Machine Learning aus.

  • Installieren und konfigurieren Sie die Azure CLI und die ml-Erweiterung für die Azure CLI. Weitere Informationen finden Sie unter Installieren, Einrichten und Verwenden der CLI (v2).

    Tipp

    Das verwaltete virtuelle Azure Machine Learning-Netzwerk wurde am 23. Mai 2023 eingeführt. Wenn Sie über eine ältere Version der ML-Erweiterung verfügen, muss sie für die Beispiele in diesem Artikel möglicherweise aktualisiert werden. Verwenden Sie zum Aktualisieren der Erweiterung den folgenden Azure CLI-Befehl:

    az extension update -n ml
    
  • In den CLI-Beispielen in diesem Artikel wird davon ausgegangen, dass Sie die Bash-Shell (oder eine kompatible Shell) verwenden, beispielsweise über ein Linux-System oder ein Windows-Subsystem für Linux.

  • Sie müssen über eine Azure-Ressourcengruppe verfügen, für die Ihnen (oder dem von Ihnen genutzten Dienstprinzipal) die Zugriffsberechtigung Contributor (Mitwirkender) zugeordnet ist. Sie verfügen über eine solche Ressourcengruppe, wenn Sie Ihre ml-Erweiterung konfiguriert haben.

  • Wenn Sie eine benutzerseitig zugewiesene verwaltete Identität zum Erstellen und Verwalten von Onlineendpunkten und Onlinebereitstellungen verwenden möchten, sollte die Identität über die entsprechenden Berechtigungen verfügen. Ausführliche Informationen zu den erforderlichen Berechtigungen finden Sie unter Einrichten der Dienstauthentifizierung. Beispielsweise müssen Sie der Identität die richtige RBAC-Berechtigung für Azure Key Vault zuweisen.

Migrieren von der Legacy-Netzwerkisolationsmethode zu einem vom Arbeitsbereich verwalteten virtuellen Netzwerk

Wenn Sie zuvor die Legacymethode für die Netzwerkisolation von verwalteten Onlineendpunkten verwendet haben und Sie zu einem vom Arbeitsbereich verwalteten virtuellen Netzwerk migrieren möchten, um Ihre Endpunkte zu schützen, können Sie die folgenden Schritte ausführen:

  1. Erstellen Sie einen neuen Arbeitsbereich und aktivieren Sie das verwaltete virtuelle Netzwerk. Weitere Informationen zum Konfigurieren eines verwalteten Netzwerks für Ihren Arbeitsbereich finden Sie unter Isolation verwalteter virtueller Netzwerke auf Arbeitsbereichsebene.
  2. (Optional) Fügen Sie in der Arbeitsbereichsnetzwerkeinstellung ausgehende Regeln mit dem Typ privater Endpunkte hinzu, wenn Ihre Bereitstellungen auf zusätzliche private Ressourcen zugreifen müssen, außer auf das Speicherkonto, Azure Key Vault und Azure Container Registry (ACR), die dem Arbeitsbereich zugeordnet sind (die standardmäßig hinzugefügt werden).
  3. (Optional) Wenn Sie Azure Machine Learning-Registrierungen verwenden möchten, konfigurieren Sie private Endpunkte für ausgehende Kommunikation mit Ihrer Registrierung, dem Speicherkonto und der Azure Container Registry.
  4. Erstellen Sie Onlineendpunkte / Bereitstellungen im neuen Arbeitsbereich. Sie können Azure Machine Learning-Registrierungen nutzen, um sie direkt bereitzustellen. Weitere Informationen finden Sie unter Aus der Registrierung bereitstellen.
  5. Aktualisieren Sie Anwendungen, die Endpunkte aufrufen, um die Bewertungs-URIs der neuen Onlineendpunkte zu verwenden.
  6. Löschen Sie Onlineendpunkte nach der Überprüfung aus dem alten Arbeitsbereich.

Wenn Sie keine Computes verwalten oder Onlineendpunkte und Bereitstellungen im alten Arbeitsbereich verwalten müssen, um ohne Ausfallzeiten zu dienen, können Sie einfach alle Berechnungen im vorhandenen Arbeitsbereich löschen und den Arbeitsbereich aktualisieren, um das verwaltete virtuelle Netzwerk des Arbeitsbereichs zu aktivieren.

Einschränkungen

  • Das Flag v1_legacy_mode muss für Ihren Azure Machine Learning-Arbeitsbereich deaktiviert (false) sein. Wenn dieses Flag aktiviert ist, können Sie keinen verwalteten Onlineendpunkt erstellen. Weitere Informationen finden Sie unter Netzwerkisolation mit v2-API.

  • Wenn Ihr Azure Machine Learning-Arbeitsbereich einen privaten Endpunkt umfasst, der vor dem 24. Mai 2022 erstellt wurde, müssen Sie den privaten Endpunkt des Arbeitsbereichs neu erstellen, bevor Sie Ihre Onlineendpunkte für die Verwendung eines privaten Endpunkts konfigurieren. Weitere Informationen zum Erstellen eines privaten Endpunkts für Ihren Arbeitsbereich finden Sie unter Konfigurieren eines privaten Endpunkts für einen Azure Machine Learning-Arbeitsbereich.

    Tipp

    Um zu bestätigen, wann ein Arbeitsbereich erstellt wurde, können Sie die Eigenschaften des Arbeitsbereichs überprüfen.

    Wechseln Sie im Studio zum Abschnitt Directory + Subscription + Workspace (oben rechts im Studio), und wählen Sie View all properties in Azure Portal aus. Wählen Sie zunächst rechts oben auf der Seite „Übersicht“ die JSON-Ansicht und dann die neueste API-Version aus. Auf dieser Seite können Sie den Wert von properties.creationTime überprüfen.

    Alternativ können Sie az ml workspace show mit der CLI, my_ml_client.workspace.get("my-workspace-name") mit dem SDK oder curl in einem Arbeitsbereich mit der REST-API verwenden.

  • Wenn Sie die Netzwerkisolation mit Onlineendpunkten verwenden, können Sie mit dem Arbeitsbereich verbundene Ressourcen (Azure Container Registry (ACR), Speicherkonto, Key Vault und Application Insights) aus einer anderen Ressourcengruppe als der Ihres Arbeitsbereichs verwenden. Diese Ressourcen müssen jedoch demselben Abonnement und Mandanten wie Ihr Arbeitsbereich angehören.

Hinweis

Die in diesem Artikel beschriebene Netzwerkisolation gilt für Vorgänge auf Datenebene, d. h. Vorgänge, die sich aus Bewertungsanforderungen (oder Modellbereitstellung) ergeben. Operationen auf Steuerungsebene (wie Anforderungen zum Erstellen, Aktualisieren, Löschen oder Abrufen von Authentifizierungsschlüsseln) werden über das öffentliche Netzwerk an den Azure Resource Manager gesendet.

Vorbereiten Ihres Systems

  1. Führen Sie die folgenden Befehle aus, um die in diesem Beispiel verwendeten Umgebungsvariablen zu erstellen. Ersetzen Sie durch <YOUR_WORKSPACE_NAME> den Namen, der für Ihren Arbeitsbereich verwendet werden soll. Ersetzen Sie <YOUR_RESOURCEGROUP_NAME> durch die Ressourcengruppe, die Ihren Arbeitsbereich enthält.

    Tipp

    Bevor Sie einen neuen Arbeitsbereich erstellen, müssen Sie eine Azure-Ressourcengruppe für ihn erstellen. Weitere Informationen finden Sie unter Beispiel: Erstellen einer Ressourcengruppe mithilfe der Azure-Bibliotheken.

    export RESOURCEGROUP_NAME="<YOUR_RESOURCEGROUP_NAME>"
    export WORKSPACE_NAME="<YOUR_WORKSPACE_NAME>"
    
  2. Erstellen Sie Ihren Arbeitsbereich. Der Parameter -m allow_only_approved_outbound konfiguriert ein verwaltetes virtuelles Netzwerk für den Arbeitsbereich und blockiert ausgehenden Datenverkehr außer an genehmigte Zielen.

    az ml workspace create -g $RESOURCEGROUP_NAME -n $WORKSPACE_NAME -m allow_only_approved_outbound
    

    Wenn Sie alternativ zulassen möchten, dass die Bereitstellung ausgehenden Datenverkehr an das Internet sendet, heben Sie die Auskommentierung des folgenden Codes auf und führen ihn stattdessen aus.

    # az ml workspace create -g $RESOURCEGROUP_NAME -n $WORKSPACE_NAME -m allow_internet_outbound
    

    Weitere Informationen zum Erstellen eines neuen Arbeitsbereichs oder zum Aktualisieren Ihres vorhandenen Arbeitsbereichs zur Verwendung eines verwalteten virtuellen Netzwerks finden Sie unter Konfigurieren eines verwalteten virtuellen Netzwerks zum Zulassen von ausgehendem Internetdatenverkehr.

    Wenn der Arbeitsbereich mit einem privaten Endpunkt konfiguriert ist, muss die Azure Container Registry-Instanz für den Arbeitsbereich für den Premium-Tarif konfiguriert sein, um den Zugriff über den privaten Endpunkt zuzulassen. Weitere Informationen finden Sie unter Azure Container Registry-Tarife. Außerdem sollte der Arbeitsbereich mit der image_build_compute-Eigenschaft festgelegt werden, da die Erstellung der Bereitstellung das Erstellen von Images umfasst. Weitere Informationen finden Sie unter Konfigurieren von Imagebuilds.

    Wichtig

    Wenn das vom Arbeitsbereich verwaltete virtuelle Netzwerk zum ersten Mal für einen Arbeitsbereich eingerichtet wird, wird das Netzwerk noch nicht bereitgestellt. Bevor Sie mit der Erstellung von Onlinebereitstellungen fortfahren, stellen Sie das Netzwerk mithilfe der Richtlinie Manuelle Bereitstellung eines verwalteten Netzwerks bereit. Das Erstellen von Onlinebereitstellungen wird abgelehnt, bis das verwaltete Netzwerk bereitgestellt wird.

  3. Konfigurieren Sie die Standardwerte für die Befehlszeilenschnittstelle, um zu vermeiden, dass die Werte für Ihren Arbeitsbereich und ihre Ressourcengruppe mehrmals übergeben werden.

    az configure --defaults workspace=$WORKSPACE_NAME group=$RESOURCEGROUP_NAME
    
  4. Klonen Sie das Beispielrepository, um die Beispieldateien für den Endpunkt und die Bereitstellung abzurufen, und wechseln Sie dann zum Verzeichnis /cli des Repositorys.

    git clone --depth 1 https://github.com/Azure/azureml-examples
    cd /cli
    

Die in diesem Tutorial verwendeten Befehle befinden sich in der Datei deploy-managed-online-endpoint-workspacevnet.sh im Verzeichnis cli, und die YAML-Konfigurationsdateien finden Sie im Unterverzeichnis endpoints/online/managed/sample/.

Erstellen eines geschützten verwalteten Onlineendpunkts

Um einen sicheren verwalteten Onlineendpunkt zu erstellen, erstellen Sie den Endpunkt in Ihrem Arbeitsbereich und legen dann public_network_access auf fest disabled, um die eingehende Kommunikation zu steuern. Der Endpunkt muss dann den privaten Endpunkt des Arbeitsbereichs für die eingehende Kommunikation verwenden.

Da der Arbeitsbereich so konfiguriert ist, dass er mit einem verwalteten virtuellen Netzwerk arbeitet, verwenden alle Bereitstellungen des Endpunkts die privaten Endpunkte des verwalteten virtuellen Netzwerks für die ausgehende Kommunikation.

  1. Legen Sie den Namen des Endpunkts fest.

    export ENDPOINT_NAME="<YOUR_ENDPOINT_NAME>"
    
  2. Erstellen Sie einen Endpunkt, bei dem public_network_access deaktiviert ist, um eingehenden Datenverkehr zu blockieren.

    az ml online-endpoint create --name $ENDPOINT_NAME -f endpoints/online/managed/sample/endpoint.yml --set public_network_access=disabled
    

    Wenn Sie den öffentlichen Netzwerkzugriff für den Endpunkt deaktivieren, kann der Endpunkt nur mithilfe eines privaten Endpunkts, der auf den Arbeitsbereich zugreifen kann, in Ihrem virtuellen Netzwerk aufgerufen werden. Weitere Informationen finden Sie unter Sichere eingehende Bewertungsanforderungen und Konfigurieren eines privaten Endpunkts für Azure Machine Learning-Arbeitsbereich.

    Wenn Sie alternativ dem Endpunkt gestatten möchten, Bewertungsanforderungen aus dem Internet zu empfangen, heben Sie die Auskommentierung des folgenden Codes auf und führen ihn stattdessen aus.

    # az ml online-endpoint create --name $ENDPOINT_NAME -f endpoints/online/managed/sample/endpoint.yml
    
  3. Erstellen Sie eine Bereitstellung im verwalteten virtuellen Netzwerk des Arbeitsbereichs.

    az ml online-deployment create --name blue --endpoint $ENDPOINT_NAME -f endpoints/online/managed/sample/blue-deployment.yml --all-traffic
    
  4. Rufen Sie den Status der Bereitstellung ab.

    az ml online-endpoint show -n $ENDPOINT_NAME
    
  5. Verwenden Sie die Befehlszeilenschnittstelle, um den Endpunkt mit einer Bewertungsanforderung zu testen.

    az ml online-endpoint invoke --name $ENDPOINT_NAME --request-file endpoints/online/model-1/sample-request.json
    
  6. Rufen Sie die Bereitstellungsprotokolle ab.

    az ml online-deployment get-logs --name blue --endpoint $ENDPOINT_NAME
    
  7. Löschen Sie den Endpunkt, wenn Sie ihn nicht mehr benötigen.

    az ml online-endpoint delete --name $ENDPOINT_NAME --yes --no-wait
    
  8. Löschen Sie alle in diesem Artikel erstellten Ressourcen. Ersetzen Sie <resource-group-name> durch den Namen der in diesem Beispiel verwendeten Ressourcengruppe:

    az group delete --resource-group <resource-group-name>
    

Problembehandlung

Fehler bei der Erstellung des Onlineendpunkts mit der Meldung „V1LegacyMode == true“

Sie können den Azure Machine Learning-Arbeitsbereich für v1_legacy_mode konfigurieren, wodurch v2-APIs deaktiviert werden. Verwaltete Onlineendpunkte sind ein Feature der v2-API-Plattform und funktionieren nicht, wenn v1_legacy_mode für den Arbeitsbereich aktiviert ist.

Informationen zum Deaktivieren von v1_legacy_mode finden Sie unter Netzwerkisolation mit v2.

Wichtig

Wenden Sie sich an Ihr Netzwerksicherheitsteam, bevor Sie v1_legacy_mode deaktivieren, da das Team den Modus möglicherweise aus einem guten Grund aktivierte.

Fehler beim Erstellen eines Onlineendpunkts mit schlüsselbasierter Authentifizierung

Verwenden Sie den folgenden Befehl, um die Azure Key Vault-Netzwerkregeln für Ihren Arbeitsbereich aufzulisten. Ersetzen Sie <keyvault-name> durch den Namen Ihres Schlüsseltresors:

az keyvault network-rule list -n <keyvault-name>

Die Antwort für diesen Befehl ähnelt dem folgenden JSON-Code:

{
    "bypass": "AzureServices",
    "defaultAction": "Deny",
    "ipRules": [],
    "virtualNetworkRules": []
}

Wenn der Wert von bypass nicht AzureServices lautet, folgen Sie der Anleitung unter Konfigurieren von Netzwerkeinstellungen für den Schlüsseltresor, um ihn auf AzureServices festzulegen.

Fehler zum Imagedownload bei Onlinebereitstellungen

Hinweis

Dieses Problem tritt auf, wenn Sie die Legacy-Netzwerkisolationsmethode für verwaltete Onlineendpunkte verwenden, bei der Azure Machine Learning ein verwaltetes, virtuelles Netzwerk für jede Bereitstellung unter einem Endpunkt erstellt.

  1. Überprüfen Sie, ob das Flag egress-public-network-access für die Bereitstellung disabled ist. Wenn dieses Flag aktiviert ist und die Sichtbarkeit der Containerregistrierung auf „privat“ festgelegt ist, dann ist dieser Fehler zu erwarten.

  2. Verwenden Sie den folgenden Befehl, um den Status der privaten Endpunktverbindung zu überprüfen. Ersetzen Sie <registry-name> durch den Namen der Azure-Containerregistrierung für Ihren Arbeitsbereich:

    az acr private-endpoint-connection list -r <registry-name> --query "[?privateLinkServiceConnectionState.description=='Egress for Microsoft.MachineLearningServices/workspaces/onlineEndpoints'].{Name:name, status:privateLinkServiceConnectionState.status}"
    

    Überprüfen Sie im Antwortcode, ob das Feld status auf Approved festgelegt ist. Wenn nicht, verwenden Sie den folgenden Befehl, um es zu genehmigen. Ersetzen Sie <private-endpoint-name> durch den vom vorstehenden Befehl zurückgegebenen Namen.

    az network private-endpoint-connection approve -n <private-endpoint-name>
    

Bewertungsendpunkt kann nicht aufgelöst werden

  1. Stellen Sie sicher, dass der Client, der die Bewertungsanforderung sendet, ein virtuelles Netzwerk ist, das auf den Azure Machine Learning-Arbeitsbereich zugreifen kann.

  2. Verwenden Sie den Befehl nslookup für den Endpunkthostnamen, um Informationen zur IP-Adresse abzurufen, beispielsweise:

    nslookup endpointname.westcentralus.inference.ml.azure.com
    

    Die Antwort enthält eine Adresse, die sich im vom virtuellen Netzwerk bereitgestellten Bereich befinden sollte.

    Hinweis

    • Für den Kubernetes-Onlineendpunkt sollte der Endpunktostname der CName (Domänenname) sein, der in Ihrem Kubernetes-Cluster angegeben ist.
    • Wenn der Endpunkt „HTTP“ ist, ist die IP-Adresse im Endpunkt-URI enthalten, den Sie von der Studio-Benutzeroberfläche abrufen können.
    • Sie können weitere Möglichkeiten zum Abrufen der IP-Adresse des Endpunkts unter Schützen eines Kubernetes-Onlineendpunkts finden.
  3. Wenn der Befehl nslookup den Hostnamen nicht auflöst, führen Sie die folgenden Aktionen aus:

Verwaltete Onlineendpunkte

  1. Verwenden Sie den folgenden Befehl, um zu überprüfen, ob ein A-Datensatz in der privaten DNS (Domänennamenserver)-Zone für das virtuelle Netzwerk vorhanden ist.

    az network private-dns record-set list -z privatelink.api.azureml.ms -o tsv --query [].name
    

    Die Ergebnisse sollten einen Eintrag ähnlich wie *.<GUID>.inference.<region> enthalten.

  2. Wenn kein Rückschlusswert zurückgegeben wird, löschen Sie den privaten Endpunkt für den Arbeitsbereich, und erstellen Sie ihn anschließend neu. Weitere Informationen finden Sie unter Konfigurieren eines privaten Endpunkts.

  3. Wenn der Arbeitsbereich mit einem privaten Endpunkt einen benutzerdefinierten DNS-Server verwendet, führen Sie den folgenden Befehl aus, um zu überprüfen, ob die Auflösung von benutzerdefiniertem DNS ordnungsgemäß funktioniert.

dig endpointname.westcentralus.inference.ml.azure.com

Kubernetes-Onlineendpunkte

  1. Überprüfen Sie die DNS-Konfiguration im Kubernetes-Cluster.

  2. Überprüfen Sie auch, ob azureml-fe wie erwartet funktioniert, indem Sie den folgenden Befehl verwenden:

    kubectl exec -it deploy/azureml-fe -- /bin/bash
    (Run in azureml-fe pod)
    
    curl -vi -k https://localhost:<port>/api/v1/endpoint/<endpoint-name>/swagger.json
    "Swagger not found"
    

    Verwenden Sie für HTTP den folgenden Befehl:

     curl https://localhost:<port>/api/v1/endpoint/<endpoint-name>/swagger.json
    "Swagger not found"
    
  3. Wenn „curl HTTPs„ fehlschlägt oder eine Zeitüberschreitung auftritt, HTTP aber funktioniert, überprüfen Sie, ob das Zertifikat gültig ist.

  4. Wenn der vorstehende Prozess nicht in den A-Datensatz aufgelöst werden kann, überprüfen Sie, ob die Auflösung von Azure DNS (168.63.129.16) funktioniert.

    dig @168.63.129.16 endpointname.westcentralus.inference.ml.azure.com
    
  5. Wenn der vorstehende Befehl erfolgreich ist, führen Sie die Problembehandlung für die bedingte Weiterleitung für die private Verbindung im benutzerdefinierten DNS aus.

Onlinebereitstellungen können nicht bewertet werden

  1. Führen Sie den folgenden Befehl aus, um zu überprüfen, ob die Bereitstellung erfolgreich war:

    az ml online-deployment show -e <endpointname> -n <deploymentname> --query '{name:name,state:provisioning_state}' 
    

    Wenn die Bereitstellung erfolgreich abgeschlossen wurde, weist state den Wert Succeeded auf.

  2. Überprüfen Sie bei einer erfolgreichen Bereitstellung mit dem folgenden Befehl, ob der Datenverkehr der Bereitstellung zugewiesen ist. Ersetzen Sie <endpointname> durch den Namen Ihres Endpunkts.

    az ml online-endpoint show -n <endpointname>  --query traffic
    

    Die Antwort dieses Befehls sollte den Prozentsatz des Datenverkehrs auflisten, der Bereitstellungen zugeordnet ist.

    Tipp

    Dieser Schritt ist nicht notwendig, wenn Sie den azureml-model-deployment-Header in Ihrer Anforderung verwenden, um diese Bereitstellung als Ziel zu definieren.

  3. Wenn die Datenverkehrszuweisungen oder der Bereitstellungsheader ordnungsgemäß festgelegt sind, verwenden Sie den folgenden Befehl, um die Protokolle für den Endpunkt abzurufen. Ersetzen Sie <endpointname> durch den Namen des Endpunkts und <deploymentname> durch die Bereitstellung.

    az ml online-deployment get-logs  -e <endpointname> -n <deploymentname> 
    
  4. Überprüfen Sie die Protokolle, um zu sehen, ob es ein Problem bei der Ausführung des Bewertungscodes gibt, wenn Sie eine Anforderung an die Bereitstellung übermitteln.

Nächste Schritte