Een Azure Machine Learning-deductieomgeving beveiligen met virtuele netwerken (v1)
VAN TOEPASSING OP: Python SDK azureml v1
VAN TOEPASSING OP: Azure CLI ml-extensie v1
In dit artikel leert u hoe u deductieomgevingen beveiligt met een virtueel netwerk in Azure Machine Learning. Dit artikel is specifiek voor de implementatiewerkstroom SDK/CLI v1 van het implementeren van een model als webservice.
Tip
Dit artikel maakt deel uit van een reeks over het beveiligen van een Azure Machine Learning-werkstroom. Zie de andere artikelen in deze reeks:
- Overzicht van virtueel netwerk
- De werkruimtebronnen beveiligen
- De trainingsomgeving beveiligen
- Studio-functionaliteit inschakelen
- Aangepaste DNS gebruiken
- Een firewall gebruiken
Zie Zelfstudie: Een beveiligde werkruimte, Bicep-sjabloon of Terraform-sjabloon maken voor een zelfstudie over het maken van een beveiligde werkruimte.
In dit artikel leert u hoe u de volgende deductiebronnen in een virtueel netwerk beveiligt:
- AKS-standaardcluster (Azure Kubernetes Service)
- Privé-AKS-cluster
- AKS-cluster met private link
Vereisten
Lees het artikel Netwerkbeveiligingsoverzicht voor meer informatie over algemene scenario's voor virtuele netwerken en de algehele architectuur van virtuele netwerken.
Een bestaand virtueel netwerk en subnet dat u met uw rekenresources kunt gebruiken.
Als u resources wilt implementeren in een virtueel netwerk of subnet, moet uw gebruikersaccount machtigingen hebben voor de volgende acties in op rollen gebaseerd toegangsbeheer van Azure (Azure RBAC):
- 'Microsoft.Network/*/read' in de resource van het virtuele netwerk. Deze machtiging is niet nodig voor arm-sjabloonimplementaties (Azure Resource Manager).
- 'Microsoft.Network/virtualNetworks/join/action' in de resource van het virtuele netwerk.
- 'Microsoft.Network/virtualNetworks/subnetten/join/action' in de subnetresource.
Zie de ingebouwde netwerkrollen voor meer informatie over Azure RBAC met netwerken
Belangrijk
Sommige Azure CLI-opdrachten in dit artikel gebruiken de azure-cli-ml
extensie (of v1) voor Azure Machine Learning. Ondersteuning voor de v1-extensie eindigt op 30 september 2025. U kunt de v1-extensie tot die datum installeren en gebruiken.
U wordt aangeraden vóór 30 september 2025 over te stappen op de ml
extensie of v2. Zie de Azure ML CLI-extensie en Python SDK v2 voor meer informatie over de v2-extensie.
Beperkingen
Azure Container Instances
Wanneer uw Azure Machine Learning-werkruimte is geconfigureerd met een privé-eindpunt, wordt implementeren naar Azure Container Instances in een VNet niet ondersteund. Overweeg in plaats daarvan het gebruik van een beheerd online-eindpunt met netwerkisolatie.
Azure Kubernetes Service
- Als uw AKS-cluster zich achter een VNET bevindt, moeten uw werkruimte en de bijbehorende resources (opslag, sleutelkluis, Azure Container Registry) privé-eindpunten of service-eindpunten hebben in hetzelfde VNET als het VNET van het AKS-cluster. Lees de zelfstudie voor het maken van een beveiligde werkruimte om deze privé-eindpunten of service-eindpunten toe te voegen aan uw VNET.
- Als uw werkruimte een privé-eindpunt heeft, moet het Azure Kubernetes Service-cluster zich in dezelfde Azure-regio bevinden als de werkruimte.
- Het gebruik van een openbare FQDN (Fully Qualified Domain Name) met een privé-AKS-cluster wordt niet ondersteund met Azure Machine Learning.
Azure Kubernetes Service
Belangrijk
Als u een AKS-cluster in een virtueel netwerk wilt gebruiken, volgt u eerst de vereisten in Geavanceerde netwerken configureren in Azure Kubernetes Service (AKS).
Gebruik de volgende stappen om AKS toe te voegen in een virtueel netwerk aan uw werkruimte:
Meld u aan bij Azure Machine Learning-studio en selecteer vervolgens uw abonnement en werkruimte.
Selecteer Compute aan de linkerkant, deductieclusters in het midden en selecteer vervolgens + Nieuw. Selecteer ten slotte AksCompute.
Selecteer in het dialoogvenster AksCompute maken de optie Nieuwe maken, de locatie en de VM-grootte die u voor het cluster wilt gebruiken. Selecteer ten slotte Volgende.
Voer in de sectie Instellingen configureren een compute-naam in, selecteer het clusterdoel, het aantal knooppunten en selecteer vervolgens Geavanceerd om de netwerkinstellingen weer te geven. Stel in het gebied Virtueel netwerk configureren de volgende waarden in:
Stel het virtuele netwerk in dat moet worden gebruikt.
Tip
Als uw werkruimte een privé-eindpunt gebruikt om verbinding te maken met het virtuele netwerk, wordt het selectieveld van het virtuele netwerk grijs weergegeven.
Stel het subnet in om het cluster te maken.
Voer in het veld Kubernetes Service-adresbereik het Adresbereik van de Kubernetes-service in. Dit adresbereik maakt gebruik van een CIDR-notatie (Classless Inter-Domain Routing) om de IP-adressen te definiëren die beschikbaar zijn voor het cluster. Deze mag niet overlappen met ip-bereiken van subnetten (bijvoorbeeld 10.0.0.0/16).
Voer in het veld IP-adres van de Kubernetes DNS-service het IP-adres van de Kubernetes DNS-service in. Dit IP-adres wordt toegewezen aan de Kubernetes DNS-service. Deze moet zich binnen het adresbereik van de Kubernetes-service bevinden (bijvoorbeeld 10.0.0.10).
Voer in het adresveld van de Docker-brug het Docker-brugadres in. Dit IP-adres is toegewezen aan Docker Bridge. Het mag zich niet in een subnet-IP-adresbereik bevinden of het Adresbereik van de Kubernetes-service (bijvoorbeeld 172.18.0.1/16).
Wanneer u een model als een webservice implementeert in AKS, wordt er een score-eindpunt gemaakt om deductieaanvragen af te handelen. Zorg ervoor dat de netwerkbeveiligingsgroep (NSG) waarmee het virtuele netwerk wordt beheerd, een binnenkomende beveiligingsregel heeft ingeschakeld voor het IP-adres van het score-eindpunt als u deze wilt aanroepen van buiten het virtuele netwerk.
Als u het IP-adres van het score-eindpunt wilt vinden, bekijkt u de score-URI voor de geïmplementeerde service. Zie Een model gebruiken dat is geïmplementeerd als een webservice voor meer informatie over het weergeven van de score-URI.
Belangrijk
Behoud de standaardregels voor uitgaand verkeer voor de NSG. Zie de standaardbeveiligingsregels in beveiligingsgroepen voor meer informatie.
Belangrijk
Het IP-adres dat wordt weergegeven in de afbeelding voor het score-eindpunt, verschilt voor uw implementaties. Hoewel hetzelfde IP-adres wordt gedeeld door alle implementaties naar één AKS-cluster, heeft elk AKS-cluster een ander IP-adres.
U kunt ook de Azure Machine Learning SDK gebruiken om Azure Kubernetes Service toe te voegen in een virtueel netwerk. Als u al een AKS-cluster in een virtueel netwerk hebt, koppelt u het aan de werkruimte, zoals beschreven in Implementeren in AKS. Met de volgende code wordt een nieuw AKS-exemplaar gemaakt in het default
subnet van een virtueel netwerk met de naam mynetwork
:
VAN TOEPASSING OP: 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)
Wanneer het aanmaakproces is voltooid, kunt u deductie of scoren van modellen uitvoeren op een AKS-cluster achter een virtueel netwerk. Zie Implementeren in AKS voor meer informatie.
Zie Azure RBAC gebruiken voor Kubernetes-autorisatie voor meer informatie over het gebruik van op rollen gebaseerd toegangsbeheer met Kubernetes.
Rol van netwerkbijdrager
Belangrijk
Als u een AKS-cluster maakt of koppelt door een virtueel netwerk op te geven dat u eerder hebt gemaakt, moet u de service-principal (SP) of beheerde identiteit voor uw AKS-cluster de rol Netwerkbijdrager verlenen aan de resourcegroep die het virtuele netwerk bevat.
Gebruik de volgende stappen om de identiteit toe te voegen als netwerkbijdrager:
Gebruik de volgende Azure CLI-opdrachten om de service-principal of beheerde identiteit-id voor AKS te vinden. Vervang
<aks-cluster-name>
door de naam van het cluster. Vervang<resource-group-name>
door de naam van de resourcegroep die het AKS-cluster bevat:az aks show -n <aks-cluster-name> --resource-group <resource-group-name> --query servicePrincipalProfile.clientId
Als deze opdracht een waarde
msi
retourneert, gebruikt u de volgende opdracht om de principal-id voor de beheerde identiteit te identificeren:az aks show -n <aks-cluster-name> --resource-group <resource-group-name> --query identity.principalId
Gebruik de volgende opdracht om de id te vinden van de resourcegroep die uw virtuele netwerk bevat. Vervang
<resource-group-name>
door de naam van de resourcegroep die het virtuele netwerk bevat:az group show -n <resource-group-name> --query id
Gebruik de volgende opdracht om de service-principal of beheerde identiteit toe te voegen als netwerkbijdrager. Vervang
<SP-or-managed-identity>
door de id die wordt geretourneerd voor de service-principal of beheerde identiteit. Vervang<resource-group-id>
door de id die wordt geretourneerd voor de resourcegroep die het virtuele netwerk bevat:az role assignment create --assignee <SP-or-managed-identity> --role 'Network Contributor' --scope <resource-group-id>
Zie Interne load balancer gebruiken met Azure Kubernetes Service voor meer informatie over het gebruik van de interne load balancer met AKS.
VNet-verkeer beveiligen
Er zijn twee benaderingen om verkeer van en naar het AKS-cluster te isoleren naar het virtuele netwerk:
- Privé-AKS-cluster: deze benadering maakt gebruik van Azure Private Link om communicatie met het cluster te beveiligen voor implementatie-/beheerbewerkingen.
- Interne AKS-load balancer: Met deze benadering configureert u het eindpunt voor uw implementaties naar AKS om een privé-IP-adres in het virtuele netwerk te gebruiken.
Privé-AKS-cluster
AKS-clusters hebben standaard een besturingsvlak of API-server met openbare IP-adressen. U kunt AKS configureren voor het gebruik van een privébesturingsvlak door een privé-AKS-cluster te maken. Zie Een privé Azure Kubernetes Service-cluster maken voor meer informatie.
Nadat u het privé-AKS-cluster hebt gemaakt, koppelt u het cluster aan het virtuele netwerk dat u wilt gebruiken met Azure Machine Learning.
Interne AKS-load balancer
AKS-implementaties maken standaard gebruik van een openbare load balancer. In deze sectie leert u hoe u AKS configureert voor het gebruik van een interne load balancer. Een interne (of privé) load balancer wordt gebruikt waarbij alleen privé-IP-adressen als front-end zijn toegestaan. Interne load balancers worden gebruikt om verkeer in een virtueel netwerk te verdelen
Een privé-load balancer wordt ingeschakeld door AKS te configureren voor het gebruik van een interne load balancer.
Privé-load balancer inschakelen
Belangrijk
U kunt geen privé-IP inschakelen bij het maken van het Azure Kubernetes Service-cluster in Azure Machine Learning-studio. U kunt er een maken met een interne load balancer wanneer u de Python SDK of Azure CLI-extensie voor machine learning gebruikt.
In de volgende voorbeelden ziet u hoe u een nieuw AKS-cluster maakt met een privé-IP/interne load balancer met behulp van de SDK en CLI:
VAN TOEPASSING OP: 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)
Wanneer u een bestaand cluster aan uw werkruimte koppelt, gebruikt u de load_balancer_type
en load_balancer_subnet
parameters van AksCompute.attach_configuration() om de load balancer te configureren.
Zie Attach an existing AKS cluster (Een bestaand AKS-cluster koppelen) voor meer informatie over het koppelen van een cluster.
Uitgaande connectiviteit vanaf het virtuele netwerk beperken
Als u de standaardregels voor uitgaand verkeer niet wilt gebruiken en u wel de uitgaande toegang van uw virtuele netwerk wilt beperken, moet u toegang tot Azure Container Registry toestaan. Zorg er bijvoorbeeld voor dat uw netwerkbeveiligingsgroepen (NSG) een regel bevat die toegang biedt tot de servicetag AzureContainerRegistry.RegionName waarbij {RegionName} de naam is van een Azure-regio.
Volgende stappen
Dit artikel maakt deel uit van een reeks over het beveiligen van een Azure Machine Learning-werkstroom. Zie de andere artikelen in deze reeks: