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 deml
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:
- 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.
- (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).
- (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.
- 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.
- Werk toepassingen bij die eindpunten aanroepen om de score-URI's van de nieuwe online-eindpunten te gebruiken.
- 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 selecteerView 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 vanproperties.creationTime
.U kunt ook gebruiken
az ml workspace show
met CLI,my_ml_client.workspace.get("my-workspace-name")
met SDK ofcurl
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
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>"
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.
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
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.
Stel de naam van het eindpunt in.
export ENDPOINT_NAME="<YOUR_ENDPOINT_NAME>"
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
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
Haal de status van de implementatie op.
az ml online-endpoint show -n $ENDPOINT_NAME
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
Implementatielogboeken ophalen.
az ml online-deployment get-logs --name blue --endpoint $ENDPOINT_NAME
Verwijder het eindpunt als u het niet meer nodig hebt.
az ml online-endpoint delete --name $ENDPOINT_NAME --yes --no-wait
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_mode
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.
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 AzureServices
is, 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.
Controleer of de
egress-public-network-access
vlag voor de implementatie isdisabled
. Als deze vlag is ingeschakeld en de zichtbaarheid van het containerregister privé is, wordt deze fout verwacht.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 opApproved
. 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
Controleer of de client die de scoreaanvraag uitgeeft een virtueel netwerk is dat toegang heeft tot de Azure Machine Learning-werkruimte.
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.
Als de
nslookup
opdracht de hostnaam niet oplost, voert u de volgende acties uit:
Beheerde online-eindpunten
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>
.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.
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
Controleer de DNS-configuratie in het Kubernetes-cluster.
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"
Als curl HTTPs mislukt of er een time-out optreedt, maar HTTP werkt, controleert u of het certificaat geldig is.
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
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
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
Succeeded
de waarde vanstate
.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.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>
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
- Netwerkisolatie met beheerde online eindpunten
- Werkruimte-beheerd netwerkisolatie
- Zelfstudie: Een beveiligde werkruimte maken
- Veilige implementatie voor online-eindpunten
- Toegang tot Azure-resources met een online-eindpunt en beheerde identiteit
- Problemen met de implementatie van online eindpunten oplossen