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
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:
- Verwijder alle berekeningen in uw werkruimte.
- 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.
- 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).
- (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 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.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
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_mode
het 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 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 is uitgeschakeld voor de implementatie. 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 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 opApproved
. 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
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: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.
Als de hostnaam niet wordt omgezet door de
nslookup
opdracht:Voor beheerd online-eindpunt,
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>
.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.
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,
Controleer de DNS-configuratie in het Kubernetes-cluster.
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
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
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
<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.
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
- 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