Delen via


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:

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-mlextensie (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 mlextensie 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:

  1. Meld u aan bij Azure Machine Learning-studio en selecteer vervolgens uw abonnement en werkruimte.

  2. Selecteer Compute aan de linkerkant, deductieclusters in het midden en selecteer vervolgens + Nieuw. Selecteer ten slotte AksCompute.

    Schermopname van het dialoogvenster Deductiecluster maken.

  3. 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.

    Schermopname van VM-instellingen.

  4. 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).

    Schermopname van het configureren van netwerkinstellingen.

  5. 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.

    Schermopname van een binnenkomende beveiligingsregel.

    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:

  1. 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 msiretourneert, 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
    
  2. 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
    
  3. 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: