Anteckning
Åtkomst till den här sidan kräver auktorisering. Du kan prova att logga in eller ändra kataloger.
Åtkomst till den här sidan kräver auktorisering. Du kan prova att ändra kataloger.
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ör en distribution som använder en allmän modell: deploy-moe-vnet-legacy.sh
- För en distribution som använder en MLflow-modell: deploy-moe-vnet-mlflow-legacy.sh
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
mlhar 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
mltillä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 mlEtt 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:
- 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.
- (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.
- (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.
- 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.
- Uppdatera program som anropar slutpunkter så att programmen använder bedömnings-URI:er för de nya onlineslutpunkterna.
- 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_modemåste vara inställd påfalsefö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.
- I Azure Machine Learning Studio går du till det övre högra hörnet och väljer namnet på din arbetsyta.
- I fönstret Katalog + prenumeration + arbetsyta väljer du Visa alla egenskaper i Azure-portalen.
- På sidan Översikt för Azure-portalen går du till det övre högra hörnet och väljer JSON-vy.
- I fönstret Resurs-JSON går du till API-versioner och väljer den senaste API-versionen.
- I avsnittet
propertiesi JSON-koden, kontrollera värdetcreationTime.
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
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>"Skapa din arbetsyta. Parametern
-m allow_only_approved_outboundkonfigurerar 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_outboundOm 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_outboundMer 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.
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.
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.
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_computeför detta ändamål. För mer information och instruktioner, se Konfigurera bildbyggen.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_NAMEKlona 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.
Ange slutpunktens namn:
export ENDPOINT_NAME="<YOUR_ENDPOINT_NAME>"Skapa en slutpunkt med
public_network_accessinställd pådisabledför att blockera inkommande trafik.az ml online-endpoint create --name $ENDPOINT_NAME -f endpoints/online/managed/sample/endpoint.yml --set public_network_access=disabledOm 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
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-trafficOm 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.
Hämta status för distributionen:
az ml online-endpoint show -n $ENDPOINT_NAMETesta 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.jsonHämta distributionsloggarna:
az ml online-deployment get-logs --name blue --endpoint $ENDPOINT_NAME
Rensa resurser
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-waitOm 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.
Kontrollera om
egress-public-network-accessflaggan har värdetdisabledför distributionen. Om den här flaggan är aktiverad och synligheten för containerregistret är privat förväntas det här felet.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 inteApprovedä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
Kontrollera att klienten som utfärdar bedömningsbegäran är ett virtuellt nätverk som har åtkomst till Azure Machine Learning-arbetsytan.
nslookupAnvänd kommandot på slutpunktens värdnamn för att hämta IP-adressinformationen:nslookup <endpoint-name>.<endpoint-region>.inference.ml.azure.comKommandot kan till exempel se ut ungefär så här:
nslookup endpointname.westcentralus.inference.ml.azure.comSvaret 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.
nslookupOm kommandot inte löser värdnamnet vidtar du åtgärderna i något av följande avsnitt.
Hanterade onlineslutpunkter
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 [].nameResultatet ska innehålla en post som liknar
*.<GUID>.inference.<region>.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.
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
Kontrollera DNS-konfigurationen i Kubernetes-klustret.
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:Kör följande kommando i
azureml-fepodden:kubectl exec -it deploy/azureml-fe -- /bin/bashKö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"
Om curl HTTPS-kommandot misslyckas eller överskrider tidsgränsen men HTTP-kommandot fungerar kontrollerar du om certifikatet är giltigt.
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.comOm 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
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
Succeededför för fältetstateanger en lyckad distribution.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 trafficSvaret 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-deploymenthuvudet i din begäran för att rikta in dig på den här distributionen.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>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.