Dela via


Skydda hanterade onlineslutpunkter med hjälp av nätverksisolering

GÄLLER FÖR:Azure CLI ml-tillägget v2 (aktuellt)Python SDK azure–ai-ml v2 (aktuell)

Den här artikeln visar hur du använder nätverksisolering för att förbättra säkerheten för en Azure Machine Learning-hanterad onlineslutpunkt. Nätverksisolering hjälper till att skydda inkommande och utgående kommunikation till och från slutpunkten.

För att skydda inkommande kommunikation kan du skapa en hanterad onlineslutpunkt som använder den privata slutpunkten för en Azure Machine Learning-arbetsyta. Om du bara vill tillåta godkänd utgående kommunikation för distributioner kan du konfigurera arbetsytan med ett hanterat virtuellt nätverk. Den här artikeln visar hur du vidtar dessa åtgärder för att förbättra slutpunktssäkerheten. Den visar också hur du skapar en distribution som använder de privata slutpunkterna i arbetsytans hanterade virtuella nätverk för utgående kommunikation.

Om du föredrar att använda den äldre metoden för nätverksisolering kan du läsa följande distributionsfilexempel på GitHub-lagringsplatsen azureml-examples :

Förutsättningar

  • Ett Azure-abonnemang. Om du inte har en Azure-prenumeration skapar du ett kostnadsfritt konto innan du börjar.

  • Azure CLI och Azure CLI-tillägget ml har installerats och konfigurerats. Mer information finns i Installera och konfigurera CLI (v2).

    Dricks

    Den hanterade virtuella nätverksfunktionen i Azure Machine Learning introducerades den 23 maj 2023. Om du har en äldre version av ml tillägget kan du behöva uppdatera det 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
    
  • Ett Bash-gränssnitt eller ett kompatibelt gränssnitt, till exempel ett gränssnitt på ett Linux-system eller Windows-undersystem för Linux. Azure CLI-exemplen i den här artikeln förutsätter att du använder den här typen av gränssnitt.

  • En Azure-resursgrupp där du eller serviceprincipalen som du använder har deltagaråtkomst. Anvisningar för hur du skapar en resursgrupp finns i Konfigurera.

  • En användartilldelad hanterad identitet med lämpliga behörigheter om du vill använda en hanterad identitet för att skapa och hantera onlineslutpunkter och onlinedistributioner. Detaljerad information om nödvändiga behörigheter finns i Konfigurera autentisering mellan Azure Machine Learning och andra tjänster. Du måste till exempel bevilja din hanterade identitet specifika behörigheter för rollbaserad åtkomstkontroll i Azure (Azure RBAC) för Azure Key Vault.

Migrera från den äldre metoden för nätverksisolering till ett hanterat virtuellt nätverk på arbetsytan

Om du använder den äldre metoden för nätverksisolering av hanterade onlineslutpunkter och vill migrera till ett hanterat virtuellt nätverk för att skydda dina slutpunkter följer du dessa steg:

  1. Skapa en ny arbetsyta och aktivera ett 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) Om dina distributioner får åtkomst till andra privata resurser än Azure Storage, Key Vault och Azure Container Registry lägger du till regler för utgående trafik i nätverksinställningarna för din arbetsyta. Mer specifikt konfigureras nätverket med regler för Azure Storage, Key Vault och Container Registry som standard. Lägg till regler med privata slutpunkter för andra privata resurser som du använder.
  3. (Valfritt) Om du tänker använda ett Azure Machine Learning-register konfigurerar du privata slutpunkter för utgående kommunikation till registret, dess lagringskonto och dess instans av Container Registry.
  4. Skapa onlineslutpunkter och distributioner på den nya arbetsytan. Om du använder Azure Machine Learning-register kan du distribuera komponenter direkt från dem. Mer information finns i Distribuera modell från register till onlineslutpunkt på arbetsytan.
  5. Uppdatera program som anropar slutpunkter så att programmen använder bedömnings-URI:er för de nya onlineslutpunkterna.
  6. När du har verifierat dina nya slutpunkter tar du bort onlineslutpunkterna på din gamla arbetsyta.

Om du inte behöver undvika stilleståndstid under migreringen kan du använda en enklare metod. Om du inte behöver underhålla beräkningsinstanser, onlineslutpunkter och distributioner på din gamla arbetsyta kan du ta bort beräkningsinstanserna och sedan uppdatera arbetsytan för att aktivera ett hanterat virtuellt nätverk.

Begränsningar

  • Flaggan v1_legacy_mode måste vara inställd på false för att inaktivera v1-legacyläge i din Azure Machine Learning-arbetsyta. Om den här inställningen är aktiverad kan du inte skapa en hanterad onlineslutpunkt. Mer information finns i Ändra nätverksisolering med vår nya API-plattform i Azure Resource Manager.

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

    Dricks

    Om du vill se skapandedatumet för en arbetsyta kan du kontrollera egenskaperna för arbetsytan.

    1. I Azure Machine Learning Studio går du till det övre högra hörnet och väljer namnet på din arbetsyta.
    2. I fönstret Katalog + prenumeration + arbetsyta väljer du Visa alla egenskaper i Azure-portalen.
    3. På sidan Översikt för Azure-portalen går du till det övre högra hörnet och väljer JSON-vy.
    4. I fönstret Resurs-JSON går du till API-versioner och väljer den senaste API-versionen.
    5. I avsnittet properties i JSON-koden, kontrollera värdet creationTime.

    Du kan också använda någon av följande metoder:

    • Python SDK: Workspace.get(name=<workspace-name>, subscription_id=<subscription-ID>, resource_group=<resource-group-name>).get_details()
    • REST API: curl https://management.azure.com/subscriptions/<subscription-ID>/resourceGroups/<resource-group-name>/providers/Microsoft.MachineLearningServices/workspaces/?api-version=2023-10-01 -H "Authorization:Bearer <access-token>"
    • PowerShell:Get-AzMLWorkspace -Name <workspace-name> -ResourceGroupName <resource-group-name>
  • När du använder nätverksisolering för att skydda onlineslutpunkter kan du använda arbetsyteassocierad resurs från en annan resursgrupp än din arbetsyteresursgrupp. Dessa resurser måste dock tillhöra samma prenumeration och klientorganisation som din arbetsyta. Resurser som är associerade med en arbetsyta är Azure Container Registry, Azure Storage, Azure Key Vault och Application Insights.

Kommentar

Den här artikeln beskriver nätverksisolering som gäller för dataplanoperationer. Dessa operationer är resultatet av scoringsförfrågningar eller modellbetjäning. 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 miljövariabler genom att köra följande kommandon. Ersätt <resource-group-name> med resursgruppen för din arbetsyta. Ersätt <workspace-name> med namnet på din arbetsyta.

    export RESOURCEGROUP_NAME="<resource-group-name>"
    export WORKSPACE_NAME="<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.

  3. Etablera det hanterade virtuella nätverket. Anvisningar och mer information finns i Etablera ett hanterat virtuellt nätverk manuellt.

    Viktigt!

    När du konfigurerar ett hanterat virtuellt nätverk för en arbetsyta för första gången etableras inte nätverket. Du kan inte skapa onlinedistributioner förrän du etablerar det hanterade nätverket.

  4. Konfigurera containerregistret som är associerat med arbetsytan så att det använder en premiumprisplan. Den här inställningen krävs för att ge åtkomst till registret via en privat slutpunkt. Mer information finns i Tjänstnivåer för Azure Container Registry.

  5. Konfigurera din arbetsyta så att den använder ett beräkningskluster eller en beräkningsinstans för att skapa avbildningar. Du kan använda egenskapen image_build_compute för detta ändamål. För mer information och instruktioner, se Konfigurera bildbyggen.

  6. Konfigurera standardvärden för Azure 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
    
  7. 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 azureml-examples/cli
    

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

Skapa en skyddad hanterad onlineslutpunkt

Om du vill skapa en skyddad hanterad onlineslutpunkt skapar du slutpunkten på din arbetsyta. Sedan anger du slutpunktens public_network_access värde till disabled för att styra inkommande kommunikation.

Den här inställningen tvingar onlineslutpunkten att använda arbetsytans privata slutpunkt för inkommande kommunikation. Det enda sättet att anropa onlineslutpunkten är att använda en privat slutpunkt som kan komma åt arbetsytan i det virtuella nätverket. Mer information finns i Skydda inkommande bedömningsbegäranden och Konfigurera en privat slutpunkt för en Azure Machine Learning-arbetsyta.

Eftersom arbetsytan är konfigurerad för att ha ett hanterat virtuellt nätverk använder alla slutpunktsdistributioner 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 inställd på disabled 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 vill tillåta att slutpunkten tar emot bedömningsbegäranden från Internet kan du också ta bort kommenteringen av 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
    

Testa slutpunkten

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

    Om du får ett felmeddelande om ett auktoriseringsfel kontrollerar du nätverkskonfigurationen för arbetsytans lagringskonto. Du kan behöva justera inställningarna för den offentliga nätverksåtkomsten för att ge arbetsytan åtkomst till lagringskontot.

  2. Hämta status för distributionen:

    az ml online-endpoint show -n $ENDPOINT_NAME
    
  3. Testa slutpunkten genom att utfärda en bedömningsbegäran:

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

    az ml online-deployment get-logs --name blue --endpoint $ENDPOINT_NAME
    

Rensa resurser

  1. Om du inte längre behöver slutpunkten kör du följande kommando för att ta bort den.

    az ml online-endpoint delete --name $ENDPOINT_NAME --yes --no-wait
    
  2. Om du inte längre behöver arbetsytan, dess associerade resurser och de andra resurserna i resursgruppen tar du bort dem. Ersätt <resource-group-name> med namnet på resursgruppen som innehåller din arbetsyta.

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

Felsökning

Skapandet av onlineslutpunkten misslyckas på grund av ett meddelande om äldre v1-läge.

Hanterade onlineslutpunkter är en funktion i Azure Machine Learning v2 API-plattformen. Om din Azure Machine Learning-arbetsyta har konfigurerats för äldre v1-läge fungerar inte de hanterade onlineslutpunkterna. Mer specifikt, om arbetsyteinställningen v1_legacy_mode är inställd truepå är v1-äldre läge aktiverat och det inte finns något stöd för v2-API:er.

Information om hur du inaktiverar äldre v1-läge finns i Ändra nätverksisolering med vår nya API-plattform i Azure Resource Manager.

Viktigt!

Kontakta nätverkssäkerhetsteamet innan du anger v1_legacy_mode till false, eftersom v1-äldre läge kan vara aktiverat 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 <key-vault-name> med namnet på ert nyckelvalv.

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

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

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

Om värdet för bypass inte är AzureServices, ska du använda vägledningen i Konfigurera Azure Key Vault-nätverksinställningar för att ange det till AzureServices.

Onlinedistributioner misslyckas med ett nedladdningsfel för avbildningen

Kommentar

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

  1. Kontrollera om egress-public-network-access flaggan har värdet 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 Container Registry för din arbetsyta:

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

    I svarskoden kontrollerar du att fältet är inställt på statusApproved. Om värdet inte Approvedär använder du följande kommando för att godkänna anslutningen. Ersätt <private-endpoint-connection-ID> med det ID som föregående kommando returnerar.

    az network private-endpoint-connection approve --id <private-endpoint-connection-ID> --description "Approved"
    

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:

    nslookup <endpoint-name>.<endpoint-region>.inference.ml.azure.com
    

    Kommandot kan till exempel se ut ungefär så här:

    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 använder HTTP finns IP-adressen i slutpunkts-URI:n, som du kan hämta från studiogränssnittet.
    • Fler sätt att hämta IP-adressen för slutpunkten finns i Uppdatera din DNS med ett FQDN.
  3. nslookup Om kommandot inte löser värdnamnet vidtar du åtgärderna i något av följande avsnitt.

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 System) 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 skapar den igen. 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 lösningen från den anpassade DNS-servern fungerar korrekt:

    dig <endpoint-name>.<endpoint-region>.inference.ml.azure.com
    

Kubernetes-onlineslutpunkter

  1. Kontrollera DNS-konfigurationen i Kubernetes-klustret.

  2. Kontrollera om Azure Machine Learning-slutsatsdragningsroutern , azureml-fefungerar som förväntat. Utför den här kontrollen genom att utföra följande steg:

    1. Kör följande kommando i azureml-fe podden:

      kubectl exec -it deploy/azureml-fe -- /bin/bash
      
    2. Kör något av följande kommandon:

      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-kommandot misslyckas eller överskrider tidsgränsen men HTTP-kommandot fungerar kontrollerar du om certifikatet är giltigt.

  4. Om föregående process inte matchar A-posten använder du följande kommando för att kontrollera om lösningen fungerar från den virtuella offentliga IP-adressen för Azure DNS, 168.63.129.16:

    dig @168.63.129.16 <endpoint-name>.<endpoint-region>.inference.ml.azure.com
    
  5. Om föregående kommando lyckas felsöker du den villkorliga vidarebefordraren för Azure Private Link på en anpassad DNS.

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

  1. Kör följande kommando för att se en distributionsstatus som inte kan poängsättas.

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

    Värdet Succeeded för för fältet state anger en lyckad distribution.

  2. För en lyckad distribution använder du följande kommando för att kontrollera att trafiken har tilldelats till distributionen:

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

    Svaret från det här kommandot bör visa procentandelen trafik som har tilldelats till varje distribution.

    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:

    az ml online-deployment get-logs  -e <endpoint-name> -n <deployment-name> 
    
  4. Granska loggarna för att se om det finns ett problem med att köra bedömningskoden när du skickar en begäran till implementeringen.