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 et Microsoft.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

Étapes suivantes