Authentification basée sur des clés et des jetons pour les points de terminaison en ligne
Quand vous consommez un point de terminaison en ligne à partir d’un client, vous pouvez utiliser une clé ou un jeton. Les clés n’expirent pas, les jetons oui.
Configurer l’authentification du point de terminaison
Vous pouvez définir le type d’authentification quand vous créez un point de terminaison en ligne. Définissez le auth_mode
sur key
ou aml_token
selon ce que vous voulez utiliser. La valeur par défaut est key
.
Quand vous déployez avec l’interface CLI v2, définissez cette valeur dans le fichier YAML du point de terminaison en ligne. Pour plus d’informations, consultez Comment déployer un point de terminaison en ligne.
Lorsque vous déployez avec le SDK Python v2, utilisez la classe OnlineEndpoint.
Obtenir la clé ou le jeton
L’accès pour récupérer la clé ou le jeton d’un point de terminaison en ligne est limité par les contrôles d’accès en fonction du rôle Azure (Azure RBAC). Pour récupérer la clé ou le jeton d’authentification, votre principal de sécurité (identité de l’utilisateur ou principal de service) doit avoir l’un des rôles suivants :
- Propriétaire
- Contributeur
- Un rôle personnalisé qui autorise
Microsoft.MachineLearningServices/workspaces/onlineEndpoints/token/action
etMicrosoft.MachineLearningServices/workspaces/onlineEndpoints/listkeys/action
.
Pour plus d’informations sur l’utilisation d’Azure RBAC avec Azure Machine Learning, consultez Gérer l’accès à Azure Machine Learning.
Pour obtenir la clé ou jeton, utilisez az ml online-endpoint get-credentials. Cette commande retourne un document JSON qui contient la clé ou le jeton.
Les clés sont retournées dans les champs primaryKey
et secondaryKey
. L’exemple suivant montre comment utiliser le paramètre --query
pour retourner uniquement la clé primaire :
ENDPOINT_CRED=$(az ml online-endpoint get-credentials -n $ENDPOINT_NAME -g $RESOURCE_GROUP -w $WORKSPACE_NAME -o tsv --query primaryKey)
Les jetons sont retournés dans le champ accessToken
:
ENDPOINT_CRED=$(az ml online-endpoint get-credentials -n $ENDPOINT_NAME -g $RESOURCE_GROUP -w $WORKSPACE_NAME -o tsv --query accessToken)
Par ailleurs, les champs expiryTimeUtc
et refreshAfterTimeUtc
contiennent les heures d’expiration et d’actualisation du jeton.
Scorer les données en utilisant la clé ou le jeton
Quand vous appelez le point de terminaison en ligne pour le scoring, passez la clé ou le jeton dans l’en-tête d’autorisation. L’exemple suivant montre comment utiliser l’utilitaire curl pour appeler le point de terminaison en ligne avec une clé/jeton :
SCORING_URI=$(az ml online-endpoint show -n $ENDPOINT_NAME -o tsv --query scoring_uri)
curl --request POST "$SCORING_URI" --header "Authorization: Bearer $ENDPOINT_CRED" --header 'Content-Type: application/json' --data @endpoints/online/model-1/sample-request.json