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

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, voert u de volgende stappen uit:

  1. Verwijder alle berekeningen in uw werkruimte.
  2. Schakel het beheerde virtuele netwerk in voor uw werkruimte. Zie Voor meer informatie over het configureren van een beheerd netwerk voor uw werkruimte, werkruimte beheerde virtuele netwerkisolatie.
  3. Configureer privé-eindpunten voor uitgaande communicatie met privébronnen waartoe uw beheerde online-eindpunten toegang nodig hebben. Deze privé-resources omvatten een opslagaccount, Azure Key Vault en Azure Container Registry (ACR).
  4. (Optioneel) Als u integreert met een gebruikersregister, configureert u privé-eindpunten voor uitgaande communicatie met uw register, het bijbehorende opslagaccount en de bijbehorende ACR.

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.

  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

De Azure Machine Learning-werkruimte kan worden geconfigureerd voor v1_legacy_mode, waardoor v2-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.

Belangrijk

Neem contact op met uw netwerkbeveiligingsteam voordat u v1_legacy_modehet uitschakelt. Het is mogelijk om een reden ingeschakeld door uw netwerkbeveiligingsteam.

Zie Netwerkisolatie met v2 voor meer informatie over het uitschakelenv1_legacy_mode.

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

Gebruik de volgende opdracht om de netwerkregels van de Azure Key Vault 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 het volgende JSON-document:

{
    "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 is uitgeschakeld voor de implementatie. 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 Azure Container Registry 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 het antwoorddocument of het status veld is ingesteld op Approved. Als deze niet is goedgekeurd, gebruikt u de volgende opdracht om deze goed te keuren. Vervang <private-endpoint-name> door de naam die is geretourneerd door de vorige 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:

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

    Het antwoord bevat een adres. Dit adres moet zich in het bereik bevinden dat is opgegeven door het virtuele netwerk

    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 een HTTP-eindpunt is, wordt het IP-adres opgenomen in de eindpunt-URI die u rechtstreeks in de gebruikersinterface van Studio kunt ophalen. Meer manieren om het IP-adres van het eindpunt op te halen, vindt u in het online-eindpunt van Secure Kubernetes.

  3. Als de hostnaam niet wordt omgezet door de nslookup opdracht:

    Voor beheerd online-eindpunt,

    1. Controleer of er een A-record bestaat in de privé-DNS-zone voor het virtuele netwerk.

      Gebruik de volgende opdracht om de records te controleren:

      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 wordt geretourneerd, 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 is ingesteld met behulp van een aangepaste DNS How to use your workspace with a custom DNS server, gebruikt u de volgende opdracht om te controleren of de resolutie correct werkt vanuit aangepaste DNS.

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

    Voor kubernetes online-eindpunt,

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

    2. Daarnaast kunt u controleren of de azureml-fe werkt zoals verwacht, gebruikt u 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

      curl https://localhost:<port>/api/v1/endpoint/<endpoint-name>/swagger.json
      "Swagger not found"
      

    Als curl HTTPs mislukt (bijvoorbeeld time-out) maar HTTP werkt, controleert u of het certificaat geldig is.

    Als dit niet kan worden omgezet naar een 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
    

    Als dit lukt, kunt u problemen met voorwaardelijke doorstuurserver voor privékoppeling in aangepaste DNS oplossen.

Online-implementaties kunnen niet worden beoordeeld

  1. Gebruik de volgende opdracht om te zien of de implementatie is geïmplementeerd:

    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 <endpointname> door de naam van uw eindpunt:

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

    Tip

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

    Het antwoord van deze opdracht moet het percentage verkeer vermelden dat is toegewezen aan implementaties.

  3. Als de verkeerstoewijzingen (of implementatieheader) correct 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> 
    

    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