Schützen einer Azure Machine Learning-Rückschlussumgebung mit virtuellen Netzwerken (v1)
GILT FÜR: Python SDK azureml v1
GILT FÜR: Azure CLI-ML-Erweiterung v1
In diesem Artikel erfahren Sie, wie Sie Rückschlussumgebungen mit einem virtuellen Netzwerk in Azure Machine Learning schützen. Dieser Artikel befasst sich speziell mit dem SDK/CLI v1-Bereitstellungsworkflow eines Modells als Webdienst.
Tipp
Dieser Artikel ist Teil einer Reihe zum Schützen eines Azure Machine Learning-Workflows. Sehen Sie sich auch die anderen Artikel in dieser Reihe an:
- Virtuelle Netzwerke im Überblick
- Schützen von Arbeitsbereichsressourcen
- Schützen der Trainingsumgebung
- Aktivieren von Studio-Funktionalität
- Verwenden von benutzerdefiniertem DNS
- Verwenden einer Firewall
Ein Tutorial zum Erstellen eines sicheren Arbeitsbereichs finden Sie unter Tutorial: Erstellen eines sicheren Arbeitsbereichs, Bicep-Vorlage oder Terraform-Vorlage.
In diesem Artikel erfahren Sie, wie Sie die folgenden Rückschlussressourcen in einem virtuellen Netzwerk schützen:
- Standard-AKS-Cluster (Azure Kubernetes Service)
- Privater AKS-Cluster
- AKS-Cluster mit privater Verbindung
Voraussetzungen
Im Artikel Übersicht über die Netzwerksicherheit finden Sie Informationen zu gängigen Szenarien im Zusammenhang mit virtuellen Netzwerken sowie zur Gesamtarchitektur virtueller Netzwerke.
Ein vorhandenes virtuelles Netzwerk und Subnetz, die mit Ihren Computeressourcen verwendet werden können
Ihr Benutzerkonto muss über die rollenbasierte Zugriffssteuerung von Azure (Azure RBAC) zu den folgenden Aktionen berechtigt werden, um Ressourcen in einem virtuellen Netzwerk oder Subnetz bereitstellen zu können:
- „Microsoft.Network/*/read“ auf der virtuellen Netzwerkressource. Diese Berechtigung ist für ARM-Vorlagenbereitstellungen (Azure Resource Manager) nicht erforderlich.
- „Microsoft.Network/virtualNetworks/join/action“ auf der virtuellen Netzwerkressource
- „Microsoft.Network/virtualNetworks/subnets/join/action“ in der Subnetzressource
Weitere Informationen zur rollenbasierten Zugriffssteuerung von Azure in Netzwerken finden Sie unter Integrierte Netzwerkrollen.
Wichtig
Einige Azure CLI-Befehle in diesem Artikel verwenden die Erweiterung azure-cli-ml
oder v1 für Azure Machine Learning. Der Support für die v1-Erweiterung endet am 30. September 2025. Sie können die v1-Erweiterung bis zu diesem Datum installieren und verwenden.
Es wird empfohlen, vor dem 30. September 2025 zur ml
- oder v2-Erweiterung zu wechseln. Weitere Informationen zur v2-Erweiterung finden Sie unter Azure Machine Learning CLI und Python SDK v2.
Einschränkungen
Azure Container Instances
Wenn Ihr Azure Machine Learning-Arbeitsbereich mit einem privaten Endpunkt konfiguriert ist, wird die Bereitstellung für Azure Container Instances in einem VNet nicht unterstützt. Verwenden Sie stattdessen einen verwalteten Onlineendpunkt mit Netzwerkisolation.
Azure Kubernetes Service
- Wenn Ihr AKS-Cluster hinter einem VNET liegt, muss Ihr Arbeitsbereich und seine zugeordneten Ressourcen (Speicher, Schlüsseltresor, Azure Container Registry) über private Endpunkte oder Dienstendpunkte im gleichen VNET wie das VNET des AKS-Clusters verfügen. Befolgen Sie das Tutorial Erstellen eines sicheren Arbeitsbereichs, um Ihrem VNet diese privaten Endpunkte oder Dienstendpunkte hinzuzufügen.
- Wenn Ihr Arbeitsbereich einen privaten Endpunkt enthält, muss sich der Azure Kubernetes Service-Cluster in derselben Azure-Region befinden wie der Arbeitsbereich.
- Die Verwendung eines öffentlichen vollqualifizierten Domänennamens (FQDN) mit einem privaten AKS-Cluster wird mit Azure Machine Learning nicht unterstützt.
Azure Kubernetes Service
Wichtig
Um einen AKS-Cluster in einem virtuellen Netzwerk zu verwenden, befolgen Sie zunächst die Voraussetzungen unter Konfigurieren von erweiterten Netzwerken in Azure Kubernetes Service (AKS).
Gehen Sie folgendermaßen vor, um AKS in einem virtuellen Netzwerk zu Ihrem Arbeitsbereich hinzuzufügen:
Melden Sie sich bei Azure Machine Learning Studio an, und wählen Sie dann Ihr Abonnement und den Arbeitsbereich aus.
Wählen Sie auf der linken Seite Compute, in der Mitte Rückschlusscluster und dann + Neu aus. Wählen Sie AksCompute aus.
Wählen Sie im Dialogfeld AksCompute erstellen die Option Neu erstellen, den Speicherort und die VM-Größe aus, die für den Cluster verwendet werden soll. Wählen Sie abschließend Weiter aus.
Geben Sie im Abschnitt Einstellungen konfigurieren einen Computenamen ein, wählen Sie den Clusterzweck, die Anzahl der Knoten und dann Erweitert aus, um die Netzwerkeinstellungen anzuzeigen. Legen Sie im Bereich Virtuelles Netzwerk konfigurieren die folgenden Werte fest:
Legen Sie das zu verwendende virtuelle Netzwerk fest.
Tipp
Wenn Ihr Arbeitsbereich einen privaten Endpunkt verwendet, um eine Verbindung mit dem virtuellen Netzwerk herzustellen, wird das Auswahlfeld Virtuelles Netzwerk abgeblendet angezeigt.
Legen Sie das Subnetz fest, in dem der Cluster erstellt werden soll.
Geben Sie in das Feld für den Kubernetes Service-Adressbereich den Kubernetes Service-Adressbereich ein. Dieser Adressbereich verwendet einen IP-Adressbereich in CIDR-Notation (Classless Inter-Domain Routing), um die für den Cluster verfügbaren IP-Adressen zu definieren. Er darf sich mit keinem IP-Adressbereich eines Subnetzes überschneiden (z. B. 10.0.0.0/16).
Geben Sie in das Feld für Kubernetes-DNS-Dienst – IP-Adresse die IP-Adresse des Kubernetes-DNS-Diensts ein. Diese IP-Adresse wird dem Kubernetes-DNS-Dienst zugewiesen. Sie muss innerhalb des Kubernetes-Dienstadressbereichs liegen (z. B. 10.0.0.10).
Geben Sie in das Feld für die Adresse der Docker-Brücke die Adresse der Docker-Brücke ein. Diese IP-Adresse wird der Docker-Brücke zugewiesen. Sie darf weder dem IP-Adressbereich eines Subnetzes noch dem Adressbereich des Kubernetes-Diensts angehören (z. B. 172.18.0.1/16).
Wenn Sie ein Modell als Webdienst für AKS bereitstellen, wird ein Bewertungsendpunkt erstellt, um Rückschlussanforderungen zu behandeln. Stellen Sie sicher, dass für die Netzwerksicherheitsgruppe (NSG), die das virtuelle Netzwerk steuert, eine eingehende Sicherheitsregel für die IP-Adresse des bewertenden Endpunkts aktiviert hat, wenn Sie ihn von außerhalb des virtuellen Netzwerks aufrufen möchten.
Betrachten Sie den URI der Bewertung des bereitgestellten Diensts, um die IP-Adresse des Bewertungsendpunkts zu finden. Weitere Informationen zum Anzeigen des URIs der Bewertung finden Sie unter Nutzen eines als Webdienst bereitgestellten Modells.
Wichtig
Behalten Sie die Standardausgangsregeln für die NSG bei. Weitere Informationen finden Sie unter Sicherheitsgruppen bei den Standardsicherheitsregeln.
Wichtig
Die in der Abbildung für den Bewertungsendpunkt angezeigte IP-Adresse ist für Ihre Bereitstellungen unterschiedlich. Obwohl alle Bereitstellungen in einem AKS-Cluster dieselbe IP-Adresse verwenden, hat jeder AKS-Cluster eine andere IP-Adresse.
Sie können auch das Azure Machine Learning SDK verwenden, um Azure Kubernetes Service einem virtuellen Netzwerk hinzuzufügen. Wenn Sie bereits über einen AKS-Cluster in einem virtuellen Netzwerk verfügen, können Sie ihn dem Arbeitsbereich anfügen (siehe Bereitstellen von Modellen mit dem Azure Machine Learning-Dienst). Der folgende Code erstellt eine neue AKS-Instanz im Subnetz default
eines virtuellen Netzwerks namens mynetwork
:
GILT FÜR: Python SDK azureml v1
from azureml.core.compute import ComputeTarget, AksCompute
# Create the compute configuration and set virtual network information
config = AksCompute.provisioning_configuration(location="eastus2")
config.vnet_resourcegroup_name = "mygroup"
config.vnet_name = "mynetwork"
config.subnet_name = "default"
config.service_cidr = "10.0.0.0/16"
config.dns_service_ip = "10.0.0.10"
config.docker_bridge_cidr = "172.17.0.1/16"
# Create the compute target
aks_target = ComputeTarget.create(workspace=ws,
name="myaks",
provisioning_configuration=config)
Nach Abschluss des Erstellungsprozesses können Sie Rückschlüsse für einen AKS-Cluster hinter einem virtuellen Netzwerk ziehen oder das Modell bewerten. Weitere Informationen finden Sie unter Bereitstellen im AKS.
Weitere Informationen zur Verwendung der rollenbasierten Zugriffssteuerung mit Kubernetes finden Sie unter Verwenden von Azure RBAC für die Kubernetes-Autorisierung.
Rolle „Netzwerkmitwirkender“
Wichtig
Wenn Sie einen AKS-Cluster erstellen oder anfügen, indem Sie ein zuvor erstelltes virtuelles Netzwerk bereitstellen, müssen Sie dem Dienst Prinzipal (Service Principal, SP) oder der verwalteten Identität für den AKS-Cluster die Rolle Netzwerkmitwirkender der Ressourcengruppe zuweisen, die das virtuelle Netzwerk enthält.
Um die Identität als Netzwerkmitwirkenden hinzuzufügen, führen Sie die folgenden Schritte aus:
Verwenden Sie zum Ermitteln der ID des Dienstprinzipals oder der verwalteten Identität für AKS die folgenden Azure CLI Befehle. Ersetzen Sie
<aks-cluster-name>
durch den Namen des Clusters. Ersetzen Sie<resource-group-name>
durch den Namen der Ressourcengruppe, die den AKS-Cluster enthält:az aks show -n <aks-cluster-name> --resource-group <resource-group-name> --query servicePrincipalProfile.clientId
Wenn dieser Befehl den Wert
msi
zurückgibt, verwenden Sie den folgenden Befehl, um die Prinzipal-ID für die verwaltete Identität zu bestimmen:az aks show -n <aks-cluster-name> --resource-group <resource-group-name> --query identity.principalId
Verwenden Sie den folgenden Befehl, um die ID der Ressourcengruppe zu ermitteln, die das virtuelle Netzwerk enthält. Ersetzen Sie
<resource-group-name>
durch den Namen der Ressourcengruppe, die das virtuelle Azure-Netzwerk enthält:az group show -n <resource-group-name> --query id
Um den Dienstprinzipal oder die verwaltete Identität als Netzwerkmitwirkenden hinzuzufügen, verwenden Sie den folgenden Befehl. Ersetzen Sie
<SP-or-managed-identity>
durch die für den Dienstprinzipal oder die verwaltete Identität zurückgegebene ID. Ersetzen Sie<resource-group-id>
durch die ID, die für die Ressourcengruppe mit dem virtuellen Netzwerk zurückgegeben wurde:az role assignment create --assignee <SP-or-managed-identity> --role 'Network Contributor' --scope <resource-group-id>
Weitere Informationen zur Verwendung des internen Lastenausgleichs mit AKS finden Sie unter Verwenden des internen Lastenausgleichs mit Azure Kubernetes Service.
Sicherer VNet-Datenverkehr
Es gibt zwei Ansätze, um den Datenverkehr zwischen AKS-Cluster und virtuellem Netzwerk zu isolieren:
- Privater AKS-Cluster: Bei diesem Ansatz wird Azure Private Link zum Schützen der Kommunikation mit dem Cluster für Bereitstellungs- und Verwaltungsvorgänge verwendet.
- Interner AKS-Lastenausgleich: Bei diesem Ansatz wird der Endpunkt für Ihre Bereitstellungen in AKS konfiguriert, um eine private IP-Adresse innerhalb des virtuellen Netzwerks zu verwenden.
Privater AKS-Cluster
AKS-Standardcluster weisen standardmäßig eine Steuerungsebene (API-Server) mit öffentlichen IP-Adressen auf. Sie können AKS so konfigurieren, dass eine private Steuerungsebene verwendet wird, indem Sie einen privaten AKS-Cluster erstellen. Weitere Informationen finden Sie unter Erstellen eines privaten Azure Kubernetes Service-Clusters.
Nachdem Sie den privaten AKS-Cluster erstellt haben, fügen Sie den Cluster an das virtuelle Netzwerk an, um ihn mit Azure Machine Learning zu verwenden.
Interner AKS-Lastenausgleich
Standardmäßig verwenden AKS-Bereitstellungen einen öffentlichen Lastenausgleich. In diesem Abschnitt erfahren Sie, wie Sie AKS für die Verwendung eines internen Lastenausgleichs konfigurieren. Ein internes (oder privates) Lastenausgleichsmodul wird verwendet, wenn nur private IP-Adressen als Front-End zulässig sind. Interne Lastenausgleichsmodule werden verwendet, um einen Lastausgleich für Datenverkehr innerhalb eines virtuellen Netzwerks vorzunehmen.
Ein privater Lastenausgleich wird aktiviert, indem AKS zur Verwendung eines internen Lastenausgleichs konfiguriert wird.
Aktivieren eines privaten Lastenausgleichs
Wichtig
Sie können beim Erstellen des Azure Kubernetes Service-Clusters in Azure Machine Learning Studio keine private IP-Adresse aktivieren. Sie können eine mit einem internen Lastenausgleich erstellen, wenn Sie das Python SDK oder die Azure CLI-Erweiterung für maschinelles Lernen verwenden.
Die folgenden Beispiele zeigen, wie Sie mithilfe des SDK und der CLI einen neuen AKS-Cluster mit einer privaten IP-Adresse bzw. einem internen Lastenausgleich erstellen können:
GILT FÜR: Python SDK azureml v1
import azureml.core
from azureml.core.compute import AksCompute, ComputeTarget
# Verify that cluster does not exist already
try:
aks_target = AksCompute(workspace=ws, name=aks_cluster_name)
print("Found existing aks cluster")
except:
print("Creating new aks cluster")
# Subnet to use for AKS
subnet_name = "default"
# Create AKS configuration
prov_config=AksCompute.provisioning_configuration(load_balancer_type="InternalLoadBalancer")
# Set info for existing virtual network to create the cluster in
prov_config.vnet_resourcegroup_name = "myvnetresourcegroup"
prov_config.vnet_name = "myvnetname"
prov_config.service_cidr = "10.0.0.0/16"
prov_config.dns_service_ip = "10.0.0.10"
prov_config.subnet_name = subnet_name
prov_config.load_balancer_subnet = subnet_name
prov_config.docker_bridge_cidr = "172.17.0.1/16"
# Create compute target
aks_target = ComputeTarget.create(workspace = ws, name = "myaks", provisioning_configuration = prov_config)
# Wait for the operation to complete
aks_target.wait_for_completion(show_output = True)
Wenn Sie einen bestehenden Cluster an Ihren Arbeitsbereich anfügen, verwenden Sie die Parameter load_balancer_type
und load_balancer_subnet
von AksCompute.attach_configuration(), um den Lastenausgleich zu konfigurieren.
Weitere Informationen zum Anfügen eines Clusters finden Sie unter Anfügen eines vorhandenen AKS-Clusters.
Beschränken ausgehender Verbindungen aus dem virtuellen Netzwerk
Wenn Sie die Standardausgangsregeln nicht verwenden und den ausgehenden Zugriff auf Ihr virtuelles Netzwerk beschränken möchten, müssen Sie Zugriff auf Azure Container Registry gewähren. Stellen Sie beispielsweise sicher, dass Ihre Netzwerksicherheitsgruppen (NSG) eine Regel enthalten, die den Zugriff auf das Diensttag AzureContainerRegistry.RegionName erlaubt, wobei {RegionName} der Name einer Azure-Region ist.
Nächste Schritte
Dieser Artikel ist Teil einer Reihe zum Schützen eines Azure Machine Learning-Workflows. Sehen Sie sich auch die anderen Artikel in dieser Reihe an: