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 Ihreml
-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:
- 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.
- (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).
- (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.
- 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.
- Aktualisieren Sie Anwendungen, die Endpunkte aufrufen, um die Bewertungs-URIs der neuen Onlineendpunkte zu verwenden.
- 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 SieView 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 vonproperties.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 odercurl
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
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>"
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.
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
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.
Legen Sie den Namen des Endpunkts fest.
export ENDPOINT_NAME="<YOUR_ENDPOINT_NAME>"
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
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
Rufen Sie den Status der Bereitstellung ab.
az ml online-endpoint show -n $ENDPOINT_NAME
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
Rufen Sie die Bereitstellungsprotokolle ab.
az ml online-deployment get-logs --name blue --endpoint $ENDPOINT_NAME
Löschen Sie den Endpunkt, wenn Sie ihn nicht mehr benötigen.
az ml online-endpoint delete --name $ENDPOINT_NAME --yes --no-wait
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.
Überprüfen Sie, ob das Flag
egress-public-network-access
für die Bereitstellungdisabled
ist. Wenn dieses Flag aktiviert ist und die Sichtbarkeit der Containerregistrierung auf „privat“ festgelegt ist, dann ist dieser Fehler zu erwarten.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
aufApproved
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
Stellen Sie sicher, dass der Client, der die Bewertungsanforderung sendet, ein virtuelles Netzwerk ist, das auf den Azure Machine Learning-Arbeitsbereich zugreifen kann.
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.
Wenn der Befehl
nslookup
den Hostnamen nicht auflöst, führen Sie die folgenden Aktionen aus:
Verwaltete Onlineendpunkte
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.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.
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
Überprüfen Sie die DNS-Konfiguration im Kubernetes-Cluster.
Ü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"
Wenn „curl HTTPs„ fehlschlägt oder eine Zeitüberschreitung auftritt, HTTP aber funktioniert, überprüfen Sie, ob das Zertifikat gültig ist.
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
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
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 WertSucceeded
auf.Ü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.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>
Ü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
- Netzwerkisolation mit verwaltete Onlineendpunkten
- Verwaltete Netzwerkisolation auf Arbeitsbereichsebene
- Tutorial: Erstellen eines sicheren Arbeitsbereichs
- Sicherer Rollout für Onlineendpunkte
- Zugreifen auf Azure-Ressourcen mit einem Onlineendpunkt und einer verwalteten Identität
- Problembehandlung bei der Onlineendpunktbereitstellung