Delen via


Uw beheerde online-eindpunten beveiligen met netwerkisolatie

VAN TOEPASSING OP:Azure CLI ml extension v2 (current)Python SDK azure-ai-ml v2 (current)

In dit artikel gebruikt u netwerkisolatie om een beheerd online-eindpunt te beveiligen. U maakt een beheerd online-eindpunt dat gebruikmaakt van het privé-eindpunt van een Azure Machine Learning-werkruimte voor beveiligde binnenkomende communicatie. U configureert ook de werkruimte met een beheerd virtueel netwerk dat alleen goedgekeurde uitgaande communicatie voor implementaties toestaat. Ten slotte maakt u een implementatie die gebruikmaakt van de privé-eindpunten van het beheerde virtuele netwerk van de werkruimte voor uitgaande communicatie.

Zie de implementatiebestanden deploy-moe-vnet-legacy.sh (voor implementatie met een algemeen model) en deploy-moe-vnet-mlflow-legacy.sh (voor implementatie met behulp van een MLflow-model) in de GitHub-opslagplaats azureml-examples voor voorbeelden die gebruikmaken van de verouderde methode voor netwerkisolatie.

Vereisten

  • Als u Azure Machine Learning wilt gebruiken, moet u een Azure-abonnement hebben. Als u geen Azure-abonnement hebt, maakt u een gratis account voordat u begint. Probeer vandaag nog de gratis of betaalde versie van Azure Machine Learning.

  • Installeer en configureer de Azure CLI en de ml extensie voor de Azure CLI. Zie De CLI (v2) installeren, instellen en gebruiken voor meer informatie.

    Tip

    Op 23 mei 2023 is een beheerd virtueel netwerk van Azure Machine Learning geïntroduceerd. Als u een oudere versie van de ml-extensie hebt, moet u deze mogelijk bijwerken voor de voorbeelden in dit artikel. Gebruik de volgende Azure CLI-opdracht om de extensie bij te werken:

    az extension update -n ml
    
  • In de CLI-voorbeelden in dit artikel wordt ervan uitgegaan dat u de Bash-shell (of compatibele) shell gebruikt. Bijvoorbeeld vanuit een Linux-systeem of Windows-subsysteem voor Linux.

  • U moet een Azure-resourcegroep hebben waarin u (of de service-principal die u gebruikt) toegang moet hebben Contributor . U hebt een dergelijke resourcegroep als u de ml extensie hebt geconfigureerd.

  • Als u een door de gebruiker toegewezen beheerde identiteit wilt gebruiken om online-eindpunten en onlineimplementaties te maken en te beheren, moet de identiteit over de juiste machtigingen beschikken. Zie Serviceverificatie instellen voor meer informatie over de vereiste machtigingen. U moet bijvoorbeeld de juiste RBAC-machtiging toewijzen voor Azure Key Vault voor de identiteit.

Migreren van verouderde netwerkisolatiemethode naar beheerd virtueel netwerk in werkruimte

Als u de verouderde methode eerder hebt gebruikt voor netwerkisolatie van beheerde online-eindpunten en u wilt migreren naar het gebruik van een beheerd virtueel netwerk in een werkruimte om uw eindpunten te beveiligen, kunt u de volgende stappen uitvoeren:

  1. Maak een nieuwe werkruimte en schakel het beheerde virtuele netwerk in. Zie Voor meer informatie over het configureren van een beheerd netwerk voor uw werkruimte, werkruimte beheerde virtuele netwerkisolatie.
  2. (Optioneel) Voeg in de netwerkinstelling van de werkruimte uitgaande regels toe met het type privé-eindpunten als uw implementaties toegang nodig hebben tot aanvullende privébronnen, behalve opslagaccount, Azure Key Vault en Azure Container Registry (ACR) die zijn gekoppeld aan de werkruimte (die standaard worden toegevoegd).
  3. (Optioneel) Als u Azure Machine Learning-registers wilt gebruiken, configureert u privé-eindpunten voor uitgaande communicatie met uw register, het bijbehorende opslagaccount en het Bijbehorende Azure Container Registry.
  4. Maak online-eindpunten/implementaties in de nieuwe werkruimte. U kunt gebruikmaken van Azure Machine Learning-registers om ze rechtstreeks te implementeren. Zie Implementeren vanuit register voor meer informatie.
  5. Werk toepassingen bij die eindpunten aanroepen om de score-URI's van de nieuwe online-eindpunten te gebruiken.
  6. Verwijder online-eindpunten uit de oude werkruimte na validatie.

Als u geen berekeningen hoeft te onderhouden of online-eindpunten en implementaties in de oude werkruimte wilt bewaren om zonder uitvaltijd te kunnen worden gebruikt, kunt u gewoon alle berekeningen in de bestaande werkruimte verwijderen en de werkruimte bijwerken om het beheerde virtuele netwerk van de werkruimte in te schakelen.

Beperkingen

  • De markering v1_legacy_mode moet zijn uitgeschakeld (fase) in uw Azure Machine Learning-werkruimte. Als deze markering is ingeschakeld, kunt u geen beheerd online eindpunt maken. Raadpleeg Netwerkisolatie met v2-API voor meer informatie.

  • Als uw Azure Machine Learning-werkruimte een privé-eindpunt heeft dat vóór 24 mei 2022 is gemaakt, moet u het privé-eindpunt van de werkruimte opnieuw maken voordat u uw online-eindpunten configureert voor het gebruik van een privé-eindpunt. Raadpleeg Een privé-eindpunt configureren voor een Azure Machine Learning-werkruimte voor meer informatie over het maken van een privé-eindpunt voor uw werkruimte.

    Tip

    Als u wilt bevestigen wanneer een werkruimte is gemaakt, kunt u de eigenschappen van de werkruimte controleren.

    Ga in de Studio naar de Directory + Subscription + Workspace sectie (rechtsboven in de Studio) en selecteer View all properties in Azure Portal. Selecteer de JSON-weergave in de rechterbovenhoek van de pagina Overzicht en kies vervolgens de nieuwste API-versie. Op deze pagina kunt u de waarde van properties.creationTime.

    U kunt ook gebruiken az ml workspace show met CLI, my_ml_client.workspace.get("my-workspace-name") met SDK of curl in een werkruimte met REST API.

  • Wanneer u netwerkisolatie gebruikt met online-eindpunten, kunt u werkruimteresources (Azure Container Registry (ACR), opslagaccount, Key Vault en Application Insights gebruiken uit een andere resourcegroep dan die van uw werkruimte. Deze resources moeten echter deel uitmaken van hetzelfde abonnement en dezelfde tenant als uw werkruimte.

Notitie

Netwerkisolatie die in dit artikel wordt beschreven, is van toepassing op gegevensvlakbewerkingen, dat wil gezegd bewerkingen die het gevolg zijn van scoreaanvragen (of het leveren van modellen). Besturingsvlakbewerkingen (zoals aanvragen voor het maken, bijwerken, verwijderen of ophalen van verificatiesleutels) worden via het openbare netwerk verzonden naar Azure Resource Manager.

Uw systeem voorbereiden

  1. Maak de omgevingsvariabelen die in dit voorbeeld worden gebruikt door de volgende opdrachten uit te voeren. Vervang <YOUR_WORKSPACE_NAME> door de naam die u voor uw werkruimte wilt gebruiken. Vervang <YOUR_RESOURCEGROUP_NAME> door de resourcegroep die uw werkruimte bevat.

    Tip

    Voordat u een nieuwe werkruimte maakt, moet u een Azure-resourcegroep maken om deze te kunnen bevatten. Zie Azure-resourcegroepen beheren voor meer informatie.

    export RESOURCEGROUP_NAME="<YOUR_RESOURCEGROUP_NAME>"
    export WORKSPACE_NAME="<YOUR_WORKSPACE_NAME>"
    
  2. Maak uw werkruimte. De -m allow_only_approved_outbound parameter configureert een beheerd virtueel netwerk voor de werkruimte en blokkeert uitgaand verkeer, met uitzondering van goedgekeurde bestemmingen.

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

    Als u wilt toestaan dat de implementatie uitgaand verkeer naar internet verzendt, moet u de opmerkingen bij de volgende code verwijderen en in plaats daarvan uitvoeren.

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

    Zie Een beheerd virtueel netwerk configureren om uitgaand internet toe te staan voor meer informatie over het maken van een nieuwe werkruimte of het upgraden van uw bestaande werkruimte voor het gebruik van een beheerd virtueel netwerk.

    Wanneer de werkruimte is geconfigureerd met een privé-eindpunt, moet azure Container Registry voor de werkruimte worden geconfigureerd voor de Premium-laag om toegang via het privé-eindpunt toe te staan. Zie Azure Container Registry-servicelagen voor meer informatie. De werkruimte moet ook worden ingesteld met de image_build_compute eigenschap, omdat het maken van de implementatie bestaat uit het bouwen van installatiekopieën. Zie Build van installatiekopieën configureren voor meer informatie.

    Belangrijk

    Wanneer het beheerde virtuele netwerk voor de werkruimte voor de eerste keer is ingesteld voor een werkruimte, is het netwerk nog niet ingericht. Voordat u doorgaat met het maken van onlineimplementaties, richt u het netwerk in door de richtlijn handmatig een beheerd netwerk in te richten. Het maken van online-implementaties wordt geweigerd totdat het beheerde netwerk is ingericht.

  3. Configureer de standaardwaarden voor de CLI, zodat u kunt voorkomen dat de waarden voor uw werkruimte en resourcegroep meerdere keren worden doorgegeven.

    az configure --defaults workspace=$WORKSPACE_NAME group=$RESOURCEGROUP_NAME
    
  4. Kloon de opslagplaats met voorbeelden om de voorbeeldbestanden voor het eindpunt en de implementatie op te halen en ga vervolgens naar de map van /cli de opslagplaats.

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

De opdrachten in deze zelfstudie bevinden zich in het bestand deploy-managed-online-endpoint-workspacevnet.sh in de cli map en de YAML-configuratiebestanden bevinden zich in de endpoints/online/managed/sample/ submap.

Een beveiligd beheerd online-eindpunt maken

Als u een beveiligd beheerd online-eindpunt wilt maken, maakt u het eindpunt in uw werkruimte en stelt u het eindpunt public_network_access in om binnenkomende communicatie te disabled beheren. Het eindpunt moet vervolgens het privé-eindpunt van de werkruimte gebruiken voor binnenkomende communicatie.

Omdat de werkruimte is geconfigureerd voor een beheerd virtueel netwerk, gebruiken alle implementaties van het eindpunt de privé-eindpunten van het beheerde virtuele netwerk voor uitgaande communicatie.

  1. Stel de naam van het eindpunt in.

    export ENDPOINT_NAME="<YOUR_ENDPOINT_NAME>"
    
  2. Maak een eindpunt met public_network_access uitgeschakeld om inkomend verkeer te blokkeren.

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

    Als u openbare netwerktoegang voor het eindpunt uitschakelt, is de enige manier om het eindpunt aan te roepen met behulp van een privé-eindpunt, dat toegang heeft tot de werkruimte, in uw virtuele netwerk. Zie beveiligde binnenkomende scoreaanvragen en configureer een privé-eindpunt voor een Azure Machine Learning-werkruimte voor meer informatie.

    Als u wilt toestaan dat het eindpunt scoreaanvragen van internet ontvangt, verwijdert u de opmerkingen bij de volgende code en voert u deze uit.

    # az ml online-endpoint create --name $ENDPOINT_NAME -f endpoints/online/managed/sample/endpoint.yml
    
  3. Maak een implementatie in het beheerde virtuele netwerk van de werkruimte.

    az ml online-deployment create --name blue --endpoint $ENDPOINT_NAME -f endpoints/online/managed/sample/blue-deployment.yml --all-traffic
    
  4. Haal de status van de implementatie op.

    az ml online-endpoint show -n $ENDPOINT_NAME
    
  5. Test het eindpunt met een scoreaanvraag met behulp van de CLI.

    az ml online-endpoint invoke --name $ENDPOINT_NAME --request-file endpoints/online/model-1/sample-request.json
    
  6. Implementatielogboeken ophalen.

    az ml online-deployment get-logs --name blue --endpoint $ENDPOINT_NAME
    
  7. Verwijder het eindpunt als u het niet meer nodig hebt.

    az ml online-endpoint delete --name $ENDPOINT_NAME --yes --no-wait
    
  8. Verwijder alle resources die in dit artikel zijn gemaakt. Vervang <resource-group-name> door de naam van de resourcegroep die in dit voorbeeld wordt gebruikt:

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

Probleemoplossing

Het maken van een online-eindpunt mislukt met een V1LegacyMode == true-bericht

U kunt de Azure Machine Learning-werkruimte configureren waarvoor v1_legacy_modev2-API's worden uitgeschakeld. Beheerde online-eindpunten zijn een functie van het v2 API-platform en werken niet als v1_legacy_mode deze is ingeschakeld voor de werkruimte.

Zie Netwerkisolatie met v2 om uit te schakelenv1_legacy_mode.

Belangrijk

Neem contact op met uw netwerkbeveiligingsteam voordat u uitschakelt v1_legacy_mode, omdat deze mogelijk om een reden is ingeschakeld.

Het maken van online-eindpunten met verificatie op basis van sleutels mislukt

Gebruik de volgende opdracht om de netwerkregels van de Azure-sleutelkluis voor uw werkruimte weer te geven. Vervang <keyvault-name> door de naam van uw sleutelkluis:

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

Het antwoord voor deze opdracht is vergelijkbaar met de volgende JSON-code:

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

Als de waarde niet AzureServicesis, gebruikt u de richtlijnen in de netwerkinstellingen van bypass de sleutelkluis configureren om deze in te stellen op AzureServices.

Online-implementaties mislukken met een downloadfout voor de installatiekopieën

Notitie

Dit probleem is van toepassing wanneer u de verouderde netwerkisolatiemethode gebruikt voor beheerde online-eindpunten, waarin Azure Machine Learning een beheerd virtueel netwerk maakt voor elke implementatie onder een eindpunt.

  1. Controleer of de egress-public-network-access vlag voor de implementatie is disabled . Als deze vlag is ingeschakeld en de zichtbaarheid van het containerregister privé is, wordt deze fout verwacht.

  2. Gebruik de volgende opdracht om de status van de privé-eindpuntverbinding te controleren. Vervang <registry-name> door de naam van het Azure-containerregister voor uw werkruimte:

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

    Controleer in de antwoordcode of het status veld is ingesteld op Approved. Als dat niet het is, gebruikt u de volgende opdracht om deze goed te keuren. Vervang <private-endpoint-name> door de naam die is geretourneerd door de voorgaande opdracht.

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

Score-eindpunt kan niet worden opgelost

  1. Controleer of de client die de scoreaanvraag uitgeeft een virtueel netwerk is dat toegang heeft tot de Azure Machine Learning-werkruimte.

  2. Gebruik de nslookup opdracht op de hostnaam van het eindpunt om de IP-adresgegevens op te halen, bijvoorbeeld:

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

    Het antwoord bevat een adres dat zich in het bereik van het virtuele netwerk moet bevinden.

    Notitie

    • Voor het online-eindpunt van Kubernetes moet de hostnaam van het eindpunt de CName (domeinnaam) zijn die is opgegeven in uw Kubernetes-cluster.
    • Als het eindpunt HTTP is, bevindt het IP-adres zich in de eindpunt-URI, die u kunt ophalen uit de gebruikersinterface van studio.
    • U vindt meer manieren om het IP-adres van het eindpunt op te halen in het online-eindpunt van Secure Kubernetes.
  3. Als de nslookup opdracht de hostnaam niet oplost, voert u de volgende acties uit:

Beheerde online-eindpunten

  1. Gebruik de volgende opdracht om te controleren of er een A-record bestaat in de DNS-zone (Private Domain Name Server) voor het virtuele netwerk.

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

    De resultaten moeten een vermelding bevatten die vergelijkbaar is met *.<GUID>.inference.<region>.

  2. Als er geen deductiewaarde retourneert, verwijdert u het privé-eindpunt voor de werkruimte en maakt u deze opnieuw. Zie Een privé-eindpunt configureren voor meer informatie.

  3. Als de werkruimte met een privé-eindpunt een aangepaste DNS-server gebruikt, voert u de volgende opdracht uit om te controleren of de omzetting van aangepaste DNS correct werkt.

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

Kubernetes online-eindpunten

  1. Controleer de DNS-configuratie in het Kubernetes-cluster.

  2. Controleer ook of de azureml-fe werkt zoals verwacht met behulp van de volgende opdracht:

    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"
    

    Gebruik voor HTTP de volgende opdracht:

     curl https://localhost:<port>/api/v1/endpoint/<endpoint-name>/swagger.json
    "Swagger not found"
    
  3. Als curl HTTPs mislukt of er een time-out optreedt, maar HTTP werkt, controleert u of het certificaat geldig is.

  4. Als het voorgaande proces niet kan worden omgezet in de A-record, controleert u of de omzetting werkt vanuit Azure DNS (168.63.129.16).

    dig @168.63.129.16 endpointname.westcentralus.inference.ml.azure.com
    
  5. Als de voorgaande opdracht slaagt, moet u problemen met de voorwaardelijke doorstuurserver voor privékoppeling op aangepaste DNS oplossen.

Online-implementaties kunnen niet worden beoordeeld

  1. Voer de volgende opdracht uit om te zien of de implementatie is geslaagd:

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

    Als de implementatie is voltooid, is Succeededde waarde van state .

  2. Als de implementatie is geslaagd, gebruikt u de volgende opdracht om te controleren of verkeer is toegewezen aan de implementatie. Vervang door <endpointname> de naam van uw eindpunt.

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

    In het antwoord van deze opdracht moet het percentage verkeer worden vermeld dat is toegewezen aan implementaties.

    Tip

    Deze stap is niet nodig als u de azureml-model-deployment header in uw aanvraag gebruikt om deze implementatie te targeten.

  3. Als de verkeerstoewijzingen of implementatieheader juist zijn ingesteld, gebruikt u de volgende opdracht om de logboeken voor het eindpunt op te halen. Vervang <endpointname> door de naam van het eindpunt en <deploymentname> door de implementatie.

    az ml online-deployment get-logs  -e <endpointname> -n <deploymentname> 
    
  4. Bekijk de logboeken om te zien of er een probleem is met het uitvoeren van de scorecode wanneer u een aanvraag indient bij de implementatie.

Volgende stappen