Skydda dina hanterade onlineslutpunkter med nätverksisolering

GÄLLER FÖR:Azure CLI ml extension v2 (current)Python SDK azure-ai-ml v2 (aktuell)

I den här artikeln använder du nätverksisolering för att skydda en hanterad onlineslutpunkt. Du skapar en hanterad onlineslutpunkt som använder en privat slutpunkt för en Azure Machine Learning-arbetsyta för säker inkommande kommunikation. Du konfigurerar också arbetsytan med ett hanterat virtuellt nätverk som endast tillåter godkänd utgående kommunikation för distributioner. Slutligen skapar du en distribution som använder de privata slutpunkterna i arbetsytans hanterade virtuella nätverk för utgående kommunikation.

Exempel som använder den äldre metoden för nätverksisolering finns i distributionsfilerna deploy-moe-vnet-legacy.sh (för distribution med hjälp av en allmän modell) och deploy-moe-vnet-mlflow-legacy.sh (för distribution med en MLflow-modell) på GitHub-lagringsplatsen azureml-examples.

Förutsättningar

  • Om du vill använda Azure Machine Learning måste du ha en Azure-prenumeration. Om du inte har någon Azure-prenumeration skapar du ett kostnadsfritt konto innan du börjar. Prova den kostnadsfria eller betalda versionen av Azure Machine Learning idag.

  • Installera och konfigurera Azure CLI och ml tillägget till Azure CLI. Mer information finns i Installera, konfigurera och använda CLI (v2).

    Dricks

    Azure Machine Learning managed virtual network introducerades den 23 maj 2023. Om du har en äldre version av ml-tillägget kan du behöva uppdatera den för att exemplen i den här artikeln ska fungera. Om du vill uppdatera tillägget använder du följande Azure CLI-kommando:

    az extension update -n ml
    
  • CLI-exemplen i den här artikeln förutsätter att du använder Bash-gränssnittet (eller det kompatibla). Till exempel från ett Linux-system eller Windows-undersystem för Linux.

  • Du måste ha en Azure-resursgrupp där du (eller tjänstens huvudnamn du använder) måste ha Contributor åtkomst. Du har en sådan resursgrupp om du har konfigurerat tillägget ml .

  • Om du vill använda en användartilldelad hanterad identitet för att skapa och hantera onlineslutpunkter och onlinedistributioner bör identiteten ha rätt behörigheter. Mer information om de behörigheter som krävs finns i Konfigurera tjänstautentisering. Du måste till exempel tilldela rätt RBAC-behörighet för Azure Key Vault på identiteten.

Migrera från äldre nätverksisoleringsmetod till arbetsytehanterat virtuellt nätverk

Om du tidigare har använt den äldre metoden för nätverksisolering av hanterade onlineslutpunkter och vill migrera till att använda ett hanterat virtuellt nätverk på arbetsytan för att skydda dina slutpunkter kan du följa dessa steg:

  1. Skapa en ny arbetsyta och aktivera hanterat virtuellt nätverk. Mer information om hur du konfigurerar ett hanterat nätverk för din arbetsyta finns i Arbetsytans hanterade virtuella nätverksisolering.
  2. (Valfritt) I nätverksinställningen för arbetsytan lägger du till regler för utgående trafik med typen av privata slutpunkter om dina distributioner behöver komma åt ytterligare privata resurser, förutom Lagringskonto, Azure Key Vault och Azure Container Registry (ACR) som är associerade med arbetsytan (som läggs till som standard).
  3. (Valfritt) Om du tänker använda Azure Machine Learning-register konfigurerar du privata slutpunkter för utgående kommunikation till ditt register, dess lagringskonto och dess Azure Container Registry.
  4. Skapa onlineslutpunkter/distributioner på den nya arbetsytan. Du kan använda Azure Machine Learning-register för att distribuera direkt från dem. Mer information finns i Distribuera från registret.
  5. Uppdatera program som anropar slutpunkter för att använda bedömnings-URI:er för de nya onlineslutpunkterna.
  6. Ta bort onlineslutpunkter från den gamla arbetsytan efter valideringen.

Om du inte behöver underhålla beräkningar eller behålla onlineslutpunkter och distributioner på den gamla arbetsytan för att fungera utan driftstopp kan du helt enkelt ta bort alla beräkningar i den befintliga arbetsytan och uppdatera arbetsytan för att aktivera arbetsytans hanterade virtuella nätverk.

Begränsningar

  • Flaggan v1_legacy_mode måste vara inaktiverad (falskt) på din Azure Machine Learning-arbetsyta. Om flaggan är aktiverad kan du inte skapa någon hanterad onlineslutpunkt. Mer information finns i Nätverksisolering med v2 API.

  • Om din Azure Machine Learning-arbetsyta har en privat slutpunkt som skapades före den 24 maj 2022 måste du återskapa arbetsytans privata slutpunkt innan du konfigurerar dina onlineslutpunkter för att använda en privat slutpunkt. Mer information om hur du skapar en privat slutpunkt för din arbetsyta finns i Konfigurera en privat slutpunkt för Azure Machine Learning-arbetsytan.

    Dricks

    Om du vill bekräfta när en arbetsyta skapades kan du kontrollera egenskaperna för arbetsytan.

    I Studio går du till avsnittet Directory + Subscription + Workspace (längst upp till höger i Studio) och väljer View all properties in Azure Portal. Välj JSON-vyn längst upp till höger på sidan Översikt och välj sedan den senaste API-versionen. På den här sidan kan du kontrollera värdet properties.creationTimeför .

    Du kan också använda az ml workspace show med CLI, my_ml_client.workspace.get("my-workspace-name") med SDK eller curl på en arbetsyta med REST API.

  • När du använder nätverksisolering med onlineslutpunkter kan du använda arbetsyterelaterade resurser (Azure Container Registry (ACR), Lagringskonto, Key Vault och Application Insights) från en annan resursgrupp än din arbetsyta. Dessa resurser måste dock tillhöra samma prenumeration och klientorganisation som din arbetsyta.

Kommentar

Nätverksisolering som beskrivs i den här artikeln gäller för dataplansåtgärder, d.v.s. åtgärder som beror på bedömningsbegäranden (eller modellhantering). Kontrollplansåtgärder (till exempel begäranden om att skapa, uppdatera, ta bort eller hämta autentiseringsnycklar) skickas till Azure Resource Manager via det offentliga nätverket.

Förbereda systemet

  1. Skapa de miljövariabler som används i det här exemplet genom att köra följande kommandon. Ersätt <YOUR_WORKSPACE_NAME> med namnet som ska användas för din arbetsyta. Ersätt <YOUR_RESOURCEGROUP_NAME> med den resursgrupp som ska innehålla din arbetsyta.

    Dricks

    Innan du skapar en ny arbetsyta måste du skapa en Azure-resursgrupp som ska innehålla den. Mer information finns i Hantera Azure-resursgrupper.

    export RESOURCEGROUP_NAME="<YOUR_RESOURCEGROUP_NAME>"
    export WORKSPACE_NAME="<YOUR_WORKSPACE_NAME>"
    
  2. Skapa din arbetsyta. Parametern -m allow_only_approved_outbound konfigurerar ett hanterat virtuellt nätverk för arbetsytan och blockerar utgående trafik förutom till godkända mål.

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

    Om du vill tillåta distributionen att skicka utgående trafik till Internet kan du också avkommenteras följande kod och köra den i stället.

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

    Mer information om hur du skapar en ny arbetsyta eller uppgraderar din befintliga arbetsyta för att använda ett hanterat virtuellt nätverk finns i Konfigurera ett hanterat virtuellt nätverk för att tillåta utgående Internet.

    När arbetsytan har konfigurerats med en privat slutpunkt måste Azure Container Registry för arbetsytan konfigureras för Premium-nivån för att tillåta åtkomst via den privata slutpunkten. Mer information finns i Azure Container Registry-tjänstnivåer (ACR). Arbetsytan bör också anges med image_build_compute egenskapen eftersom distributionsskapande innebär att avbildningar skapas. Mer information finns i Konfigurera avbildningsversioner .

    Viktigt!

    När arbetsytans hanterade virtuella nätverk konfigureras för en arbetsyta för första gången etableras inte nätverket ännu. Innan du fortsätter att skapa onlinedistributioner etablerar du nätverket genom att följa riktlinjen Manuellt etablera ett hanterat nätverk. Skapandet av onlinedistributioner avvisas tills det hanterade nätverket har etablerats.

  3. Konfigurera standardvärdena för CLI så att du kan undvika att skicka in värdena för din arbetsyta och resursgrupp flera gånger.

    az configure --defaults workspace=$WORKSPACE_NAME group=$RESOURCEGROUP_NAME
    
  4. Klona exempellagringsplatsen för att hämta exempelfilerna för slutpunkten och distributionen och gå sedan till lagringsplatsens /cli katalog.

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

Kommandona i den här självstudien finns i filen deploy-managed-online-endpoint-workspacevnet.sh i cli katalogen och YAML-konfigurationsfilerna finns i underkatalogen endpoints/online/managed/sample/ .

Skapa en skyddad hanterad onlineslutpunkt

Skapa en skyddad hanterad onlineslutpunkt genom att skapa slutpunkten på din arbetsyta och ange slutpunktens public_network_access till disabled för att styra inkommande kommunikation. Slutpunkten måste sedan använda arbetsytans privata slutpunkt för inkommande kommunikation.

Eftersom arbetsytan är konfigurerad för att ha ett hanterat virtuellt nätverk använder alla distributioner av slutpunkten de privata slutpunkterna i det hanterade virtuella nätverket för utgående kommunikation.

  1. Ange slutpunktens namn.

    export ENDPOINT_NAME="<YOUR_ENDPOINT_NAME>"
    
  2. Skapa en slutpunkt med public_network_access inaktiverad för att blockera inkommande trafik.

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

    Om du inaktiverar åtkomst till offentligt nätverk för slutpunkten är det enda sättet att anropa slutpunkten att använda en privat slutpunkt, som kan komma åt arbetsytan, i ditt virtuella nätverk. Mer information finns i skydda inkommande bedömningsbegäranden och konfigurera en privat slutpunkt för en Azure Machine Learning-arbetsyta.

    Om du vill tillåta att slutpunkten tar emot bedömningsbegäranden från Internet kan du också avkommentara följande kod och köra den i stället.

    # az ml online-endpoint create --name $ENDPOINT_NAME -f endpoints/online/managed/sample/endpoint.yml
    
  3. Skapa en distribution i arbetsytans hanterade virtuella nätverk.

    az ml online-deployment create --name blue --endpoint $ENDPOINT_NAME -f endpoints/online/managed/sample/blue-deployment.yml --all-traffic
    
  4. Hämta status för distributionen.

    az ml online-endpoint show -n $ENDPOINT_NAME
    
  5. Testa slutpunkten med en bedömningsbegäran med hjälp av CLI.

    az ml online-endpoint invoke --name $ENDPOINT_NAME --request-file endpoints/online/model-1/sample-request.json
    
  6. Hämta distributionsloggar.

    az ml online-deployment get-logs --name blue --endpoint $ENDPOINT_NAME
    
  7. Ta bort slutpunkten om du inte längre behöver den.

    az ml online-endpoint delete --name $ENDPOINT_NAME --yes --no-wait
    
  8. Ta bort alla resurser som skapats i den här artikeln. Ersätt <resource-group-name> med namnet på resursgruppen som används i det här exemplet:

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

Felsökning

Det går inte att skapa en onlineslutpunkt med ett V1LegacyMode == sant meddelande

Du kan konfigurera Azure Machine Learning-arbetsytan för v1_legacy_mode, som inaktiverar v2-API:er. Hanterade onlineslutpunkter är en funktion i v2 API-plattformen och fungerar inte om v1_legacy_mode är aktiverat för arbetsytan.

Om du vill inaktivera läser v1_legacy_modedu Nätverksisolering med v2.

Viktigt!

Kontakta nätverkssäkerhetsteamet innan du inaktiverar v1_legacy_mode, eftersom de kan ha aktiverat det av en anledning.

Det går inte att skapa en onlineslutpunkt med nyckelbaserad autentisering

Använd följande kommando för att visa nätverksreglerna för Azure-nyckelvalvet för din arbetsyta. Ersätt <keyvault-name> med namnet på ditt nyckelvalv:

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

Svaret för det här kommandot liknar följande JSON-kod:

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

Om värdet för inte AzureServicesär använder du vägledningen i Konfigurera nätverksinställningar för nyckelvalvet för att ange det till AzureServices.bypass

Onlinedistributioner misslyckas med ett nedladdningsfel för avbildningen

Kommentar

Det här problemet gäller när du använder den äldre metoden för nätverksisolering för hanterade onlineslutpunkter, där Azure Machine Learning skapar ett hanterat virtuellt nätverk för varje distribution under en slutpunkt.

  1. Kontrollera om egress-public-network-access flaggan är disabled för distributionen. Om den här flaggan är aktiverad och synligheten för containerregistret är privat förväntas det här felet.

  2. Använd följande kommando för att kontrollera statusen för den privata slutpunktsanslutningen. Ersätt <registry-name> med namnet på Azure-containerregistret för din arbetsyta:

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

    I svarskoden kontrollerar du att fältet är inställt på status Approved. Annars använder du följande kommando för att godkänna det. Ersätt <private-endpoint-name> med namnet som returnerades från föregående kommando.

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

Det går inte att matcha poängslutpunkten

  1. Kontrollera att klienten som utfärdar bedömningsbegäran är ett virtuellt nätverk som har åtkomst till Azure Machine Learning-arbetsytan.

  2. nslookup Använd kommandot på slutpunktens värdnamn för att hämta IP-adressinformationen, till exempel:

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

    Svaret innehåller en adress som ska finnas i intervallet som tillhandahålls av det virtuella nätverket.

    Kommentar

    • För Kubernetes onlineslutpunkt ska slutpunktens värdnamn vara det CName (domännamn) som anges i kubernetes-klustret.
    • Om slutpunkten är HTTP finns IP-adressen i slutpunkts-URI:n, som du kan hämta från studiogränssnittet.
    • Du hittar fler sätt att hämta IP-adressen för slutpunkten i Säker Kubernetes onlineslutpunkt.
  3. nslookup Om kommandot inte löser värdnamnet vidtar du följande åtgärder:

Hanterade onlineslutpunkter

  1. Använd följande kommando för att kontrollera om det finns en A-post i den privata DNS-zonen (Domain Name Server) för det virtuella nätverket.

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

    Resultatet ska innehålla en post som liknar *.<GUID>.inference.<region>.

  2. Om inget slutsatsvärde returneras tar du bort den privata slutpunkten för arbetsytan och återskapar den. Mer information finns i Konfigurera en privat slutpunkt.

  3. Om arbetsytan med en privat slutpunkt använder en anpassad DNS-server kör du följande kommando för att kontrollera att matchningen från anpassad DNS fungerar korrekt.

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

Kubernetes-onlineslutpunkter

  1. Kontrollera DNS-konfigurationen i Kubernetes-klustret.

  2. Kontrollera också om azureml-fe fungerar som förväntat med hjälp av följande kommando:

    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"
    

    Använd följande kommando för HTTP:

     curl https://localhost:<port>/api/v1/endpoint/<endpoint-name>/swagger.json
    "Swagger not found"
    
  3. Om curl HTTPs misslyckas eller överskrider tidsgränsen men HTTP fungerar kontrollerar du om certifikatet är giltigt.

  4. Om föregående process inte matchar A-posten kontrollerar du om lösningen fungerar från Azure DNS (168.63.129.16).

    dig @168.63.129.16 endpointname.westcentralus.inference.ml.azure.com
    
  5. Om föregående kommando lyckas felsöker du den villkorsstyrda vidarebefordraren för privat länk i anpassad DNS.

Det går inte att poängsätta onlinedistributioner

  1. Kör följande kommando för att se om distributionen lyckades:

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

    Om distributionen har slutförts är Succeededvärdet state för .

  2. Om distributionen lyckades använder du följande kommando för att kontrollera att trafiken har tilldelats till distributionen. Ersätt <endpointname> med namnet på slutpunkten.

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

    Svaret från det här kommandot bör visa procentandelen trafik som tilldelats distributioner.

    Dricks

    Det här steget är inte nödvändigt om du använder azureml-model-deployment huvudet i din begäran för att rikta in dig på den här distributionen.

  3. Om trafiktilldelningarna eller distributionshuvudet har angetts korrekt använder du följande kommando för att hämta loggarna för slutpunkten. Ersätt <endpointname> med namnet på slutpunkten och <deploymentname> med distributionen.

    az ml online-deployment get-logs  -e <endpointname> -n <deploymentname> 
    
  4. Granska loggarna för att se om det är problem med att köra poängkoden när du skickar en begäran till distributionen.

Nästa steg