Clients verifiëren voor online-eindpunten
VAN TOEPASSING OP:Azure CLI ml extension v2 (current)Python SDK azure-ai-ml v2 (current)
In dit artikel wordt beschreven hoe u clients verifieert voor het uitvoeren van besturingsvlak- en gegevensvlakbewerkingen op online-eindpunten.
Een besturingsvlak bepaalt een eindpunt en wijzigt het. Besturingsvlakbewerkingen zijn onder andere CRUD-bewerkingen (create, read, update, delete) op online-eindpunten en onlineimplementaties.
Een gegevensvlakbewerking maakt gebruik van gegevens om te communiceren met een online-eindpunt zonder het eindpunt te wijzigen. Een gegevensvlakbewerking kan bijvoorbeeld bestaan uit het verzenden van een scoreaanvraag naar een online-eindpunt en het ophalen van een antwoord.
Vereisten
Voordat u de stappen in dit artikel volgt, moet u ervoor zorgen dat u over de volgende vereisten beschikt:
Een Azure Machine Learning-werkruimte. Als u er nog geen hebt, gebruikt u de stappen in de quickstart: artikel Werkruimtebronnen maken om er een te maken.
De Azure CLI en de
ml
extensie of de Azure Machine Learning Python SDK v2:Zie De CLI (v2) installeren, instellen en gebruiken om de Azure CLI en extensie te installeren.
Belangrijk
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.
Gebruik de volgende opdracht om de Python SDK v2 te installeren:
pip install azure-ai-ml azure-identity
Gebruik de volgende opdracht om een bestaande installatie van de SDK bij te werken naar de nieuwste versie:
pip install --upgrade azure-ai-ml azure-identity
Zie De Python SDK v2 voor Azure Machine Learning installeren voor meer informatie.
Beperkingen
Eindpunten met microsoft Entra-token (aad_token
)-verificatiemodus bieden geen ondersteuning voor scoren met behulp van de CLIaz ml online-endpoint invoke
, SDK ml_client.online_endpoints.invoke()
of de tabbladen Testen of Gebruiken van de Azure Machine Learning-studio. Gebruik in plaats daarvan een algemene Python SDK of gebruik REST API om het token voor het besturingsvlak door te geven. Zie Scoregegevens met behulp van de sleutel of het token voor meer informatie.
Een gebruikersidentiteit voorbereiden
U hebt een gebruikersidentiteit nodig voor het uitvoeren van besturingsvlakbewerkingen (dat wil gezegd CRUD-bewerkingen) en gegevensvlakbewerkingen (dat wil gezegd scoreaanvragen verzenden) op het online-eindpunt. U kunt dezelfde gebruikersidentiteit of verschillende gebruikersidentiteiten gebruiken voor de besturingsvlak- en gegevensvlakbewerkingen. In dit artikel gebruikt u dezelfde gebruikersidentiteit voor bewerkingen op het besturingsvlak en het gegevensvlak.
Zie Verificatie instellen als u een gebruikersidentiteit wilt maken onder Microsoft Entra-id. U hebt de id later nodig.
Machtigingen toewijzen aan de identiteit
In deze sectie wijst u machtigingen toe aan de gebruikersidentiteit die u gebruikt voor interactie met het eindpunt. U begint met het gebruik van een ingebouwde rol of door een aangepaste rol te maken. Daarna wijst u de rol toe aan uw gebruikersidentiteit.
Een ingebouwde rol gebruiken
De AzureML Data Scientist
ingebouwde rol kan worden gebruikt voor het beheren en gebruiken van eindpunten en implementaties en maakt gebruik van jokertekens om de volgende RBAC-acties voor het besturingsvlak op te nemen:
Microsoft.MachineLearningServices/workspaces/onlineEndpoints/write
Microsoft.MachineLearningServices/workspaces/onlineEndpoints/delete
Microsoft.MachineLearningServices/workspaces/onlineEndpoints/read
Microsoft.MachineLearningServices/workspaces/onlineEndpoints/token/action
Microsoft.MachineLearningServices/workspaces/onlineEndpoints/listKeys/action
Microsoft.MachineLearningServices/workspaces/onlineEndpoints/regenerateKeys/action
en om de volgende RBAC-actie voor het gegevensvlak op te nemen:
Microsoft.MachineLearningServices/workspaces/onlineEndpoints/score/action
De ingebouwde rol kan eventueel Azure Machine Learning Workspace Connection Secrets Reader
worden gebruikt voor toegang tot geheimen vanuit werkruimteverbindingen en bevat de volgende RBAC-acties voor het besturingsvlak :
Microsoft.MachineLearningServices/workspaces/connections/listsecrets/action
Microsoft.MachineLearningServices/workspaces/metadata/secrets/read
Als u deze ingebouwde rollen gebruikt, is er geen actie nodig bij deze stap.
(Optioneel) Een aangepaste rol maken
U kunt deze stap overslaan als u ingebouwde rollen of andere vooraf gemaakte aangepaste rollen gebruikt.
Definieer het bereik en de acties voor aangepaste rollen door JSON-definities van de rollen te maken. Met de volgende roldefinitie kan de gebruiker bijvoorbeeld een online-eindpunt onder een opgegeven werkruimte CRUD gebruiken.
custom-role-for-control-plane.json:
{ "Name": "Custom role for control plane operations - online endpoint", "IsCustom": true, "Description": "Can CRUD against online endpoints.", "Actions": [ "Microsoft.MachineLearningServices/workspaces/onlineEndpoints/write", "Microsoft.MachineLearningServices/workspaces/onlineEndpoints/delete", "Microsoft.MachineLearningServices/workspaces/onlineEndpoints/read", "Microsoft.MachineLearningServices/workspaces/onlineEndpoints/token/action", "Microsoft.MachineLearningServices/workspaces/onlineEndpoints/listKeys/action", "Microsoft.MachineLearningServices/workspaces/onlineEndpoints/regenerateKeys/action" ], "NotActions": [ ], "AssignableScopes": [ "/subscriptions/<subscriptionId>/resourcegroups/<resourceGroupName>" ] }
Met de volgende roldefinitie kan de gebruiker scoreaanvragen verzenden naar een online-eindpunt, onder een opgegeven werkruimte.
custom-role-for-scoring.json:
{ "Name": "Custom role for scoring - online endpoint", "IsCustom": true, "Description": "Can score against online endpoints.", "Actions": [ "Microsoft.MachineLearningServices/workspaces/onlineEndpoints/*/action" ], "NotActions": [ ], "AssignableScopes": [ "/subscriptions/<subscriptionId>/resourcegroups/<resourceGroupName>" ] }
Gebruik de JSON-definities om aangepaste rollen te maken:
az role definition create --role-definition custom-role-for-control-plane.json --subscription <subscriptionId> az role definition create --role-definition custom-role-for-scoring.json --subscription <subscriptionId>
Notitie
Als u aangepaste rollen wilt maken, hebt u een van de volgende drie rollen nodig:
- eigenaar
- beheerder van gebruikerstoegang
- een aangepaste rol met
Microsoft.Authorization/roleDefinitions/write
machtiging (aangepaste rollen maken/bijwerken/verwijderen) enMicrosoft.Authorization/roleDefinitions/read
machtiging (om aangepaste rollen weer te geven).
Zie Aangepaste Azure-rollen voor meer informatie over het maken van aangepaste rollen.
Controleer de roldefinitie:
az role definition list --custom-role-only -o table az role definition list -n "Custom role for control plane operations - online endpoint" az role definition list -n "Custom role for scoring - online endpoint" export role_definition_id1=`(az role definition list -n "Custom role for control plane operations - online endpoint" --query "[0].id" | tr -d '"')` export role_definition_id2=`(az role definition list -n "Custom role for scoring - online endpoint" --query "[0].id" | tr -d '"')`
De rol toewijzen aan de identiteit
Als u de
AzureML Data Scientist
ingebouwde rol gebruikt, gebruikt u de volgende code om de rol toe te wijzen aan uw gebruikersidentiteit.az role assignment create --assignee <identityId> --role "AzureML Data Scientist" --scope /subscriptions/<subscriptionId>/resourcegroups/<resourceGroupName>/providers/Microsoft.MachineLearningServices/workspaces/<workspaceName>
Als u de
Azure Machine Learning Workspace Connection Secrets Reader
ingebouwde rol gebruikt, gebruikt u desgewenst de volgende code om de rol toe te wijzen aan uw gebruikersidentiteit.az role assignment create --assignee <identityId> --role "Azure Machine Learning Workspace Connection Secrets Reader" --scope /subscriptions/<subscriptionId>/resourcegroups/<resourceGroupName>/providers/Microsoft.MachineLearningServices/workspaces/<workspaceName>
Als u een aangepaste rol gebruikt, gebruikt u de volgende code om de rol toe te wijzen aan uw gebruikersidentiteit.
az role assignment create --assignee <identityId> --role "Custom role for control plane operations - online endpoint" --scope /subscriptions/<subscriptionId>/resourcegroups/<resourceGroupName>/providers/Microsoft.MachineLearningServices/workspaces/<workspaceName> az role assignment create --assignee <identityId> --role "Custom role for scoring - online endpoint" --scope /subscriptions/<subscriptionId>/resourcegroups/<resourceGroupName>/providers/Microsoft.MachineLearningServices/workspaces/<workspaceName>
Notitie
Als u aangepaste rollen wilt toewijzen aan de gebruikersidentiteit, hebt u een van de volgende drie rollen nodig:
- eigenaar
- beheerder van gebruikerstoegang
- een aangepaste rol die machtigingen toestaat
Microsoft.Authorization/roleAssignments/write
(aangepaste rollen toewijzen) enMicrosoft.Authorization/roleAssignments/read
(om roltoewijzingen weer te geven).
Zie Azure-rollen en het toewijzen van Azure-rollen met behulp van Azure Portal voor meer informatie over de verschillende Azure-rollen en hun machtigingen.
Bevestig de roltoewijzing:
az role assignment list --scope /subscriptions/<subscriptionId>/resourcegroups/<resourceGroupName>/providers/Microsoft.MachineLearningServices/workspaces/<workspaceName>
Het Microsoft Entra-token ophalen voor besturingsvlakbewerkingen
Voer deze stap uit als u van plan bent om besturingsvlakbewerkingen uit te voeren met REST API, die rechtstreeks gebruikmaken van het token.
Als u van plan bent om andere manieren te gebruiken, zoals Azure Machine Learning CLI (v2), Python SDK (v2) of de Azure Machine Learning-studio, hoeft u het Microsoft Entra-token niet handmatig op te halen. In plaats daarvan wordt uw gebruikersidentiteit tijdens het aanmelden al geverifieerd en wordt het token automatisch voor u opgehaald en doorgegeven.
U kunt het Microsoft Entra-token ophalen voor besturingsvlakbewerkingen van het Azure-resource-eindpunt: https://management.azure.com
.
Meld u aan bij Azure.
az login
Als u een specifieke identiteit wilt gebruiken, gebruikt u de volgende code om u aan te melden met de identiteit:
az login --identity --username <identityId>
Gebruik deze context om het token op te halen.
export CONTROL_PLANE_TOKEN=`(az account get-access-token --resource https://management.azure.com --query accessToken | tr -d '"')`
(Optioneel) Het resource-eindpunt en de client-id voor het Microsoft Entra-token verifiëren
Nadat u het Microsoft Entra-token hebt opgehaald, kunt u controleren of het token voor het juiste Azure-resource-eindpunt management.azure.com
en de juiste client-id is door het token te decoderen via jwt.ms, waarmee een json-antwoord wordt geretourneerd met de volgende informatie:
{
"aud": "https://management.azure.com",
"oid": "<your-object-id>"
}
Een eindpunt maken
In het volgende voorbeeld wordt het eindpunt gemaakt met een door het systeem toegewezen identiteit (SAI) als eindpuntidentiteit. De SAI is het standaardidentiteitstype van de beheerde identiteit voor eindpunten. Sommige basisrollen worden automatisch toegewezen voor de SAI. Zie Automatische roltoewijzing voor eindpuntidentiteit voor meer informatie over roltoewijzing voor een door het systeem toegewezen identiteit.
De CLI vereist niet dat u het token voor het besturingsvlak expliciet opgeeft. In plaats daarvan verifieert de CLI u tijdens het aanmelden en wordt het token automatisch voor u opgehaald en doorgegeven.
Maak een YAML-bestand met eindpuntdefinities.
endpoint.yml:
$schema: https://azuremlschemas.azureedge.net/latest/managedOnlineEndpoint.schema.json name: my-endpoint auth_mode: aad_token
U kunt vervangen door
auth_mode
key
sleutelverificatie ofaml_token
voor verificatie van Azure Machine Learning-token. In dit voorbeeld gebruiktaad_token
u voor verificatie van Microsoft Entra-token.az ml online-endpoint create -f endpoint.yml
Controleer de status van het eindpunt:
az ml online-endpoint show -n my-endpoint
Als u wilt overschrijven
auth_mode
(bijvoorbeeld naaraad_token
) bij het maken van een eindpunt, voert u de volgende code uit:az ml online-endpoint create -n my-endpoint --auth_mode aad_token
Als u het bestaande eindpunt wilt bijwerken en wilt opgeven
auth_mode
(bijvoorbeeld naaraad_token
), voert u de volgende code uit:az ml online-endpoint update -n my-endpoint --set auth_mode=aad_token
Een implementatie maken
Zie Een ML-model implementeren met een online-eindpunt of REST gebruiken om een model als een online-eindpunt te implementeren om een implementatie te maken. Er is geen verschil in hoe u implementaties maakt voor verschillende verificatiemodi.
De volgende code is een voorbeeld van het maken van een implementatie. Zie Een ML-model implementeren met een online-eindpunt (via CLI) voor meer informatie over het implementeren van online-eindpunten
Maak een YAML-bestand voor de implementatiedefinitie.
blue-deployment.yml:
$schema: https://azuremlschemas.azureedge.net/latest/managedOnlineDeployment.schema.json name: blue endpoint_name: my-aad-auth-endp1 model: path: ../../model-1/model/ code_configuration: code: ../../model-1/onlinescoring/ scoring_script: score.py environment: conda_file: ../../model-1/environment/conda.yml image: mcr.microsoft.com/azureml/openmpi4.1.0-ubuntu20.04:latest instance_type: Standard_DS3_v2 instance_count: 1
Maak de implementatie met behulp van het YAML-bestand. In dit voorbeeld stelt u al het verkeer in op de nieuwe implementatie.
az ml online-deployment create -f blue-deployment.yml --all-traffic
De score-URI voor het eindpunt ophalen
Als u van plan bent om de CLI te gebruiken om het eindpunt aan te roepen, hoeft u de score-URI niet expliciet op te halen, omdat de CLI dit voor u afhandelt. U kunt echter nog steeds de CLI gebruiken om de score-URI op te halen, zodat u deze kunt gebruiken met andere kanalen, zoals REST API.
scoringUri=$(az ml online-endpoint show -n my-endpoint --query "scoring_uri")
De sleutel of het token ophalen voor bewerkingen van het gegevensvlak
Een sleutel of token kan worden gebruikt voor bewerkingen van het gegevensvlak, ook al is het ophalen van de sleutel of het token een besturingsvlakbewerking. Met andere woorden, u gebruikt een token voor het besturingsvlak om de sleutel of het token op te halen die u later gebruikt om uw gegevensvlakbewerkingen uit te voeren.
Als u de sleutel of het Azure Machine Learning-token ophaalt, moet de juiste rol worden toegewezen aan de gebruikersidentiteit die deze aanvraagt, zoals wordt beschreven in autorisatie voor besturingsvlakbewerkingen. De gebruikersidentiteit heeft geen extra rollen nodig om het Microsoft Entra-token op te halen.
Sleutel- of Azure Machine Learning-token
Als u van plan bent om de CLI te gebruiken om het eindpunt aan te roepen en als het eindpunt is ingesteld voor het gebruik van een verificatiemodus van de sleutel of het Azure Machine Learning-token (aml_token
), hoeft u het gegevensvlaktoken niet expliciet op te halen, omdat de CLI dit voor u afhandelt. U kunt echter nog steeds de CLI gebruiken om het gegevensvlaktoken op te halen, zodat u het kunt gebruiken met andere kanalen, zoals REST API.
Gebruik de opdracht az ml online-endpoint get-credentials om de sleutel of het Azure Machine Learning-token (aml_token
) op te halen. Met deze opdracht wordt een JSON-document geretourneerd dat de sleutel of het Azure Machine Learning-token bevat.
Sleutels worden geretourneerd in de primaryKey
en secondaryKey
velden. In het volgende voorbeeld ziet u hoe u de --query
parameter gebruikt om alleen de primaire sleutel te retourneren:
export DATA_PLANE_TOKEN=$(az ml online-endpoint get-credentials -n $ENDPOINT_NAME -g $RESOURCE_GROUP -w $WORKSPACE_NAME -o tsv --query primaryKey)
Azure Machine Learning-tokens worden geretourneerd in het accessToken
veld:
export DATA_PLANE_TOKEN=$(az ml online-endpoint get-credentials -n $ENDPOINT_NAME -g $RESOURCE_GROUP -w $WORKSPACE_NAME -o tsv --query accessToken)
expiryTimeUtc
De en refreshAfterTimeUtc
velden bevatten ook de verloop- en vernieuwingstijden van het token.
Microsoft Entra-token
Gebruik de opdracht az account get-access-token om het Microsoft Entra-token (aad_token
) op te halen met cli. Met deze opdracht wordt een JSON-document geretourneerd dat het Microsoft Entra-token bevat.
Microsoft Entra-token wordt geretourneerd in het accessToken
veld:
export DATA_PLANE_TOKEN=`(az account get-access-token --resource https://ml.azure.com --query accessToken | tr -d '"')`
Notitie
- De CLI-extensie
ml
biedt geen ondersteuning voor het ophalen van het Microsoft Entra-token. Gebruikaz account get-access-token
in plaats daarvan, zoals beschreven in de vorige code. - Het token voor gegevensvlakbewerkingen wordt opgehaald uit het Azure-resource-eindpunt
ml.azure.com
in plaats vanmanagement.azure.com
, in tegenstelling tot het token voor besturingsvlakbewerkingen.
Controleer het resource-eindpunt en de client-id voor het Microsoft Entra-token
Nadat u het Entra-token hebt opgehaald, kunt u controleren of het token voor het juiste Azure-resource-eindpunt ml.azure.com
en de juiste client-id is door het token te decoderen via jwt.ms, waarmee een json-antwoord wordt geretourneerd met de volgende informatie:
{
"aud": "https://ml.azure.com",
"oid": "<your-object-id>"
}
Gegevens beoordelen met behulp van de sleutel of het token
Sleutel- of Azure Machine Learning-token
U kunt voor eindpunten met een sleutel of Een Azure Machine Learning-token gebruiken az ml online-endpoint invoke
. De CLI verwerkt de sleutel of het Azure Machine Learning-token automatisch, zodat u deze niet expliciet hoeft door te geven.
az ml online-endpoint invoke -n my-endpoint -r request.json
Microsoft Entra-token
Het gebruik az ml online-endpoint invoke
voor eindpunten met een Microsoft Entra-token wordt niet ondersteund. Gebruik in plaats daarvan REST API en gebruik de score-URI van het eindpunt om het eindpunt aan te roepen.
Logboekregistratie en bewaking van verkeer
Als u logboekregistratie van verkeer wilt inschakelen in de diagnostische instellingen voor het eindpunt, volgt u de stappen in Logboeken in- of uitschakelen.
Als de diagnostische instelling is ingeschakeld, kunt u de AmlOnlineEndpointTrafficLogs
tabel controleren om de verificatiemodus en gebruikersidentiteit te zien.