Partager via


Configurer l’authentification entre Azure Machine Learning et d’autres services

S’APPLIQUE À :Extension Azure ML CLI v2 (actuelle)Kit de développement logiciel (SDK) Python azure-ai-ml v2 (préversion)

Azure Machine Learning est composé de plusieurs services Azure. Plusieurs méthodes prennent en charge l’authentification entre Azure Machine Learning et les services sur lesquels il s’appuie.

  • L’espace de travail Azure Machine Learning utilise une identité managée pour communiquer avec d’autres services. Par défaut, cette identité est une identité managée affectée par le système. Vous pouvez aussi utiliser une identité managée attribuée par l’utilisateur à la place.
  • Azure Machine Learning utilise Azure Container Registry (ACR) pour stocker des images Docker utilisées pour effectuer l'apprentissage de modèles et les déployer. Si vous autorisez Azure Machine Learning à créer automatiquement ACR, il active le compte d’administrateur.
  • Le cluster de calcul Azure Machine Learning utilise une identité managée pour récupérer des informations de connexion pour les magasins de données à partir d’Azure Key Vault et pour extraire des images Docker à partir d’ACR. Vous pouvez également configurer l’accès basé sur l’identité aux magasins de données, qui utilise l’identité managée du cluster de calcul.
  • L’accès aux données peut se produire le long de plusieurs chemins en fonction du service de stockage de données et de votre configuration. Par exemple, l’authentification auprès du magasin de données peut utiliser une clé de compte, un jeton, un principal de sécurité, une identité managée ou une identité utilisateur.
  • Les points de terminaison en ligne managés peuvent utiliser une identité managée pour accéder aux ressources Azure lors de l’inférence. Pour plus d’informations, consultez Accéder aux ressources Azure à partir d’un point de terminaison en ligne.

Prérequis

  • Un espace de travail Azure Machine Learning. Pour obtenir des instructions sur la création d’un espace de travail, consultez Créer l’espace de travail.

  • Azure CLI et l’extension ml ou le Kit de développement logiciel (SDK) Python Azure Machine Learning v2 :

    Pour installer Azure CLI et l’extension ml , consultez Installer et configurer l’interface CLI (v2).

    Les exemples de cet article supposent que vous utilisez un interpréteur de commandes Bash ou un interpréteur de commandes compatible. Par exemple, vous pouvez utiliser un interpréteur de commandes sur un système Linux ou un sous-système Windows pour Linux.

  • Pour attribuer des rôles, la connexion pour votre abonnement Azure doit avoir le rôle Opérateur d’identité managée ou un autre rôle qui accorde les actions requises (par exemple , Propriétaire).

  • Vous devez être familiarisé avec la création et l’utilisation des identités managées.

Types d’identité d’espace de travail

L’espace de travail Azure Machine Learning utilise une identité managée pour communiquer avec d’autres services. Azure Machine Learning prend en charge plusieurs types d’identités.

Type d'identité managée Création d'une attribution de rôle Objectif
Attribuée par le système (SAI) Gestion par Microsoft Cycle de vie lié à la ressource ; utilisation d’une seule ressource ; démarrage simplifié
Attribué par le système + attribué par l’utilisateur (SAI + UAI) Managé par vous Cycle de vie indépendant pour l'identité assignée par l'utilisateur ; utilisation de plusieurs ressources ; contrôle de l'accès le moins privilégié ; accès aux données dans les travaux d'entraînement.

Après avoir créé un espace de travail avec le type d’identité SAI, vous pouvez le mettre à jour vers SAI+UAI. Vous ne pouvez pas mettre à jour un espace de travail de SAI+UAI vers SAI. Vous pouvez affecter plusieurs identités affectées par l’utilisateur au même espace de travail.

Identité managée attribuée par l’utilisateur

Espace de travail

Vous pouvez ajouter une identité managée attribuée par l’utilisateur lors de la création d’un espace de travail Azure Machine Learning à partir du portail Azure. Suivez les étapes suivantes lors de la création de l’espace de travail :

  1. Dans la page De base, sélectionnez le compte de stockage Azure, Azure Container Registry et Azure Key Vault que vous souhaitez utiliser avec l’espace de travail.
  2. Dans la page Identité, sélectionnez Identité attribuée par l’utilisateur, puis sélectionnez l’identité managée à utiliser.

Les attributions de rôles RBAC Azure suivantes sont requises sur votre identité managée attribuée par l’utilisateur pour que votre espace de travail Azure Machine Learning accède aux données sur les ressources associées à l’espace de travail.

Ressource Autorisation
Espace de travail Azure Machine Learning Contributeur
Stockage Azure Contributeur (plan de contrôle) + Contributeur aux données blob de stockage (plan de données, facultatif, pour activer l’aperçu des données dans Azure Machine Learning Studio)
Azure Key Vault (lors de l’utilisation du modèle d’autorisation RBAC) Contributeur (plan de contrôle) + administrateur Key Vault (plan de données)
Azure Key Vault (lors de l’utilisation du modèle d’autorisation des stratégies d’accès) Contributeur + toutes les autorisations de stratégie d’accès en plus des opérations de suppression
Azure Container Registry (Service d'enregistrement de conteneurs Azure) Contributeur
Azure Application Insights Contributeur

Pour la création automatisée d’attributions de rôles sur votre identité managée affectée par l’utilisateur, vous pouvez utiliser ce modèle ARM.

Conseil

Pour un espace de travail disposant de clés gérées par le client pour le chiffrement, vous pouvez passer une identité managée attribuée par l’utilisateur pour vous authentifier auprès de Key Vault à partir du stockage. Utilisez les paramètres user-assigned-identity-for-cmk-encryption (CLI) ou user_assigned_identity_for_cmk_encryption (SDK) pour transmettre l’identité managée. Cette identité managée peut être identique ou différente de celle de l’utilisateur principal de l’espace de travail.

Pour créer un espace de travail avec plusieurs identités attribuées aux utilisateurs, utilisez l’une des méthodes suivantes :

S’APPLIQUE À :Extension Azure ML CLI v2 (actuelle)

az ml workspace create -f workspace_creation_with_multiple_UAIs.yml --subscription <subscription ID> --resource-group <resource group name> --name <workspace name>

L’exemple suivant montre le contenu de workspace_creation_with_multiple_UAIs.yml :

location: <region name>
identity:
   type: user_assigned
   user_assigned_identities:
    '<UAI resource ID 1>': {}
    '<UAI resource ID 2>': {}
storage_account: <storage acccount resource ID>
key_vault: <key vault resource ID>
image_build_compute: <compute(virtual machine) resource ID>
primary_user_assigned_identity: <one of the UAI resource IDs in the above list>

Pour mettre à jour les identités affectées par l’utilisateur pour un espace de travail, notamment l’ajout d’une nouvelle identité ou la suppression des identités existantes, utilisez l’une des méthodes suivantes :

S’APPLIQUE À :Extension Azure ML CLI v2 (actuelle)

az ml workspace update -f workspace_update_with_multiple_UAIs.yml --subscription <subscription ID> --resource-group <resource group name> --name <workspace name>

L’exemple suivant montre le contenu de workspace_update_with_multiple_UAIs.yml :

identity:
   type: user_assigned
   user_assigned_identities:
    '<UAI resource ID 1>': {}
    '<UAI resource ID 2>': {}
primary_user_assigned_identity: <one of the UAI resource IDs in the above list>

Conseil

Pour ajouter un nouvel UAI, spécifiez le nouvel ID UAI sous la user_assigned_identities section, ainsi que les UAIs existantes. Vous devez transmettre tous les identifiants UAI existants.
Pour supprimer une ou plusieurs UA existantes, ajoutez les ID UAI que vous souhaitez conserver dans la user_assigned_identities section. Les ID UAI que vous n’incluez pas sont supprimés.

Ajouter une identité managée attribuée par l’utilisateur à un espace de travail en plus d’une identité attribuée par le système

Dans certains scénarios, vous devrez peut-être utiliser une identité managée attribuée par l’utilisateur en plus de l’identité d’espace de travail attribuée par le système par défaut. Pour ajouter une identité managée affectée par l’utilisateur sans modifier l’identité d’espace de travail existante, procédez comme suit :

  1. Créez une identité managée attribuée par l’utilisateur. Enregistrez l’ID de l’identité managée que vous créez.

  2. Pour attacher l’identité managée à votre espace de travail, créez un fichier YAML qui spécifie l’identité. L’exemple suivant montre le contenu du fichier YAML. Remplacez les espaces réservés <TENANT_ID>, <RESOURCE_GROUP> et <USER_MANAGED_ID> par vos valeurs.

    identity:
        type: system_assigned,user_assigned
        tenant_id: <TENANT_ID>
        user_assigned_identities:
            '/subscriptions/<SUBSCRIPTION_ID/resourceGroups/<RESOURCE_GROUP>/providers/Microsoft.ManagedIdentity/userAssignedIdentities/<USER_MANAGED_ID>':
            {}
    
  3. Utilisez la commande Azure CLI az ml workspace update pour mettre à jour votre espace de travail. Spécifiez le fichier YAML de l’étape précédente à l’aide du --file paramètre. L’exemple suivant montre à quoi ressemble cette commande :

    az ml workspace update --resource-group <RESOURCE_GROUP> --name <WORKSPACE_NAME> --file <YAML_FILE_NAME>.yaml
    

Isolation des données pour les ressources partagées

Lorsque plusieurs espaces de travail partagent les mêmes ressources associées (compte de stockage, coffre de clés ou registre de conteneurs), activez l’isolation des données pour empêcher les conflits d’affectation de noms et garantir que chaque espace de travail peut uniquement accéder à ses propres données. L’indicateur enableDataIsolation configure la façon dont les artefacts d’espace de travail sont stockés et accessibles dans les ressources partagées.

Important

Vous pouvez définir l’option d’isolation des données uniquement lors de la création d’un espace de travail. Vous ne pouvez pas l’activer ou le désactiver une fois l’espace de travail créé.

Effets de l’activation de l’isolation des données

Lorsque vous activez l’isolation des données, l’espace de travail applique les configurations suivantes :

Ressource Comportement
Compte de stockage Les noms de conteneurs sont précédés du GUID de l’espace de travail (par exemple). {workspaceGUID}-azureml-blobstore L’identité managée de l’espace de travail reçoit une attribution de rôle de plan de données avec une condition de contrôle d’accès en fonction de l’attribut Azure (ABAC) qui limite l’accès aux conteneurs spécifiques de l’espace de travail uniquement.
Coffre-fort de clés Les noms de secrets sont précédés du GUID de l’espace de travail pour isoler les secrets entre les espaces de travail partageant le même coffre de clés.
Registre de conteneurs Les noms d’images Docker sont précédés du GUID de l’espace de travail pour isoler les images entre les espaces de travail partageant le même registre.

Comportement par défaut par type d’espace de travail

La valeur par défaut pour l’isolation des données dépend du type d’espace de travail :

Type d’espace de travail Valeur par défaut de l’isolation des données
hub Enabled
project Activé (hérité du hub)
default Disabled

Quand activer l’isolation des données

Activez l’isolation des données quand :

  • Plusieurs espaces de travail partagent le même compte de stockage, le coffre de clés ou le registre de conteneurs
  • Vous devez empêcher les conflits d’affectation de noms pour les artefacts (tels que les images Docker ou les secrets) créés avec le même nom dans les espaces de travail.
  • Vous avez besoin d’un contrôle d’accès plus strict pour garantir que les identités d’espace de travail peuvent uniquement accéder à leurs propres données

Pour les espaces de travail hub et projet, l’isolation des données est activée par défaut pour prendre en charge le modèle de ressource partagé. Pour plus d’informations, consultez Qu’est-ce qu’un espace de travail Azure Machine Learning Hub ?

Activer l’isolation des données lors de la création d’un espace de travail

S’APPLIQUE À :Extension Azure ML CLI v2 (actuelle)

az ml workspace create --name <WORKSPACE_NAME> \
    --resource-group <RESOURCE_GROUP> \
    --enable-data-isolation

Vous pouvez également spécifier l’isolation des données dans un fichier de configuration YAML :

$schema: https://azuremlschemas.azureedge.net/latest/workspace.schema.json
name: my-workspace
location: eastus
enable_data_isolation: true
storage_account: /subscriptions/<SUBSCRIPTION_ID>/resourceGroups/<RESOURCE_GROUP>/providers/Microsoft.Storage/storageAccounts/<STORAGE_ACCOUNT>
key_vault: /subscriptions/<SUBSCRIPTION_ID>/resourceGroups/<RESOURCE_GROUP>/providers/Microsoft.KeyVault/vaults/<KEY_VAULT>
container_registry: /subscriptions/<SUBSCRIPTION_ID>/resourceGroups/<RESOURCE_GROUP>/providers/Microsoft.ContainerRegistry/registries/<CONTAINER_REGISTRY>

Créez ensuite l’espace de travail :

az ml workspace create --file workspace.yml --resource-group <RESOURCE_GROUP>

Cluster de calcul

Remarque

Les clusters de calcul Azure Machine Learning prennent en charge soit une seule identité attribuée par le système, soit plusieurs identités attribuées par l’utilisateur.

L’identité managée par défaut est l’identité managée qui est attribuée par le système ou la première identité managée qui est attribuée par l’utilisateur.

Au cours d’une exécution, une identité a deux applications :

  1. Le système utilise une identité pour configurer les montages de stockage, le registre de conteneurs et les magasins de données associés à l’utilisateur.

    • Dans ce cas, le système utilise l’identité managée par défaut.
  2. L’utilisateur applique une identité pour accéder à des ressources à partir du code pour une exécution envoyée :

    • Dans ce cas, fournissez la valeur client_id correspondant à l’identité managée à utiliser pour récupérer des informations d’identification.
    • Vous pouvez également récupérer l’ID client de l’identité attribuée par l’utilisateur au moyen de la variable d’environnement DEFAULT_IDENTITY_CLIENT_ID.

    Par exemple, si vous voulez récupérer un jeton pour un magasin de données avec l’identité managée par défaut :

    client_id = os.environ.get('DEFAULT_IDENTITY_CLIENT_ID')
    credential = ManagedIdentityCredential(client_id=client_id)
    token = credential.get_token('https://storage.azure.com/')
    

Pour configurer un cluster de calcul avec une identité managée, utilisez l’une des méthodes suivantes :

S’APPLIQUE À :Extension Azure ML CLI v2 (actuelle)

az ml compute create -f create-cluster.yml

L’exemple suivant montre le contenu de create-cluster.yml :

$schema: https://azuremlschemas.azureedge.net/latest/amlCompute.schema.json 
name: basic-example
type: amlcompute
size: STANDARD_DS3_v2
min_instances: 0
max_instances: 2
idle_time_before_scale_down: 120
identity:
  type: user_assigned
  user_assigned_identities: 
    - resource_id: "identity_resource_id"

Pour comparaison, l’exemple suivant provient d’un fichier YAML qui crée un cluster qui utilise une identité managée attribuée par le système :

$schema: https://azuremlschemas.azureedge.net/latest/amlCompute.schema.json 
name: basic-example
type: amlcompute
size: STANDARD_DS3_v2
min_instances: 0
max_instances: 2
idle_time_before_scale_down: 120
identity:
  type: system_assigned

Si vous disposez d’un cluster de calcul existant, vous pouvez basculer entre l’identité gérée par l’utilisateur et gérée par le système. Les exemples suivants montrent comment modifier la configuration :

Identité gérée attribuée à l'utilisateur

export MSI_NAME=my-cluster-identity
export COMPUTE_NAME=mycluster-msi

does_compute_exist()
{
  if [ -z $(az ml compute show -n $COMPUTE_NAME --query name) ]; then
    echo false
  else
    echo true
  fi
}

echo "Creating MSI $MSI_NAME"
# Get the resource id of the identity
IDENTITY_ID=$(az identity show --name "$MSI_NAME" --query id -o tsv | tail -n1 | tr -d "[:cntrl:]" || true)
if [[ -z $IDENTITY_ID ]]; then
    IDENTITY_ID=$(az identity create -n "$MSI_NAME" --query id -o tsv | tail -n1 | tr -d "[:cntrl:]")
fi
echo "MSI created: $MSI_NAME"
sleep 15 # Let the previous command finish: https://github.com/Azure/azure-cli/issues/8530


echo "Checking if compute $COMPUTE_NAME already exists"
if [ "$(does_compute_exist)" == "true" ]; then
  echo "Skipping, compute: $COMPUTE_NAME exists"
else
  echo "Provisioning compute: $COMPUTE_NAME"
  az ml compute create --name "$COMPUTE_NAME" --type amlcompute --identity-type user_assigned --user-assigned-identities "$IDENTITY_ID"
fi
az ml compute update --name "$COMPUTE_NAME" --identity-type user_assigned --user-assigned-identities "$IDENTITY_ID"

Identité managée attribuée par le système

export COMPUTE_NAME=mycluster-sa

does_compute_exist()
{
  if [ -z $(az ml compute show -n $COMPUTE_NAME --query name) ]; then
    echo false
  else
    echo true
  fi
}

echo "Checking if compute $COMPUTE_NAME already exists"
if [ "$(does_compute_exist)" == "true" ]; then
  echo "Skipping, compute: $COMPUTE_NAME exists"
else
  echo "Provisioning compute: $COMPUTE_NAME"
  az ml compute create --name "$COMPUTE_NAME" --type amlcompute
fi

az ml compute update --name "$COMPUTE_NAME" --identity-type system_assigned

Capacité de calcul du cluster Kubernetes

Remarque

Les clusters Kubernetes Azure Machine Learning ne prennent en charge qu’une seule identité affectée par le système ou une identité affectée par l’utilisateur, et non les deux simultanément.

L’identité managée par défaut est l’identité managée qui est attribuée par le système ou la première identité managée qui est attribuée par l’utilisateur.

Au cours d'une opération, une identité a deux applications :

  • Le système utilise une identité pour configurer les montages de stockage, le registre de conteneurs et les magasins de données associés à l’utilisateur.

    • Dans ce cas, le système utilise l’identité managée par défaut.
  • L’utilisateur applique une identité pour accéder à des ressources à partir du code pour une exécution envoyée :

    • Dans le cas d’un calcul de cluster Kubernetes, l’objet ManagedIdentityCredential doit être fourni sans aucune client_id.

    Par exemple, si vous voulez récupérer un jeton pour un magasin de données avec l’identité managée par défaut :

    credential = ManagedIdentityCredential()
    token = credential.get_token('https://storage.azure.com/')
    

Pour configurer un calcul de cluster Kubernetes, assurez-vous qu’il dispose de l’extension AML nécessaire déployée et suivez la documentation sur l’attachement du calcul du cluster Kubernetes à votre espace de travail AML.

Important

À des fins d’entraînement (travaux Machine Learning), utilisez l’identité affectée au calcul du cluster Kubernetes. Toutefois, pour l’inférence (points de terminaison en ligne gérés), utilisez l’identité affectée au point de terminaison. Pour plus d’informations, consultez Comment accéder aux ressources Azure à partir d’un point de terminaison en ligne.

Stockage des données

Lorsque vous créez un magasin de données qui utilise l’accès aux données basé sur l’identité, vous utilisez votre compte Azure (jeton Microsoft Entra) pour confirmer que vous êtes autorisé à accéder au service de stockage. Dans le scénario d’accès aux données basée sur l’identité , vous n’enregistrez pas d’informations d’identification d’authentification. Vous stockez uniquement les informations du compte de stockage dans le magasin de données.

En revanche, les magasins de données qui utilisent une authentification basée sur les certificats mettent en cache les informations de connexion, comme votre clé de compte de stockage ou votre jeton de SAP, dans le coffre de clés associé à l’espace de travail. Cette approche a la limitation que d’autres utilisateurs de l’espace de travail disposant d’autorisations suffisantes peuvent récupérer ces informations d’identification, ce qui peut être une préoccupation de sécurité pour certaines organisations.

Pour plus d’informations sur la façon dont l’accès aux données est authentifié, consultez l’article Administration des données. Pour plus d’informations sur la configuration de l’accès en fonction de l’identité aux données, consultez Créer des magasins de données.

Vous pouvez appliquer l’accès aux données basé sur l’identité dans Azure Machine Learning dans deux scénarios. Ces scénarios sont adaptés à l’accès basé sur l’identité lorsque vous utilisez des données confidentielles et que vous avez besoin d’une gestion plus granulaire de l’accès aux données :

  • Accès aux services de stockage
  • Modèles de formation Machine Learning

En utilisant l’accès basé sur l’identité, vous pouvez utiliser des contrôles d’accès en fonction du rôle (RBAC) pour restreindre les identités, telles que les utilisateurs ou les ressources de calcul, qui ont accès aux données.

Accès aux services de stockage

Vous pouvez vous connecter aux services de stockage à l’aide de l’accès aux données basé sur l’identité avec des magasins de données Azure Machine Learning.

Lorsque vous utilisez l’accès aux données basé sur l’identité, Azure Machine Learning vous invite à indiquer votre jeton Microsoft Entra en guise d’authentification pour l’accès aux données, plutôt que de conserver vos informations d’identification dans le magasin de données. Cette approche permet la gestion de l’accès aux données au niveau du stockage et conserve les informations d’identification confidentielles.

Le même comportement s’applique quand vous utilisez des données de manière interactive par le biais d’un notebook Jupyter sur votre ordinateur local ou votre instance de calcul.

Remarque

Les informations d’identification stockées via l’authentification basée sur les informations d’identification incluent les ID d’abonnement, les jetons de signature d’accès partagé (SAP), la clé d’accès au stockage et les informations de principal de service, telles que les ID client et les ID de locataire.

Pour vous connecter en toute sécurité à votre service de stockage sur Azure, Azure Machine Learning nécessite l’autorisation d’accéder au stockage de données correspondant.

Avertissement

L'accès inter-locataires aux comptes de stockage n’est pas pris en charge. Si votre scénario nécessite un accès inter-locataires, contactez l'équipe du support technique Azure Machine Learning Data à amldatasupport@microsoft.com pour obtenir de l'aide avec une solution de code personnalisée.

L’accès aux données basé sur l’identité prend uniquement en charge les connexions aux services de stockage suivants.

  • Stockage Blob Azure
  • Azure Data Lake Storage Gen1
  • Azure Data Lake Storage Gen2

Pour accéder à ces services de stockage, vous devez disposer au minimum de l’accès Lecteur des données blob de stockage au compte de stockage. Seuls les propriétaires de comptes de stockage peuvent modifier votre niveau d’accès via le portail Azure.

Accéder aux données pour les travaux d’entraînement sur une ressource de calcul à l’aide d’une identité managée

Certains scénarios de Machine Learning supposent des modèles d’entraînement avec des données privées. Dans ce cas, les scientifiques des données peuvent ne pas avoir accès direct aux données en tant qu’utilisateurs de Microsoft Entra. Dans ce scénario, utilisez l’identité managée d’un calcul pour l’authentification d’accès aux données. Vous ne pouvez accéder aux données qu’à partir d’une instance de calcul ou d’un cluster de calcul Machine Learning exécutant un travail d’entraînement. En utilisant cette approche, l’administrateur accorde à l’identité managée de l’instance ou du cluster de calcul des autorisations de Lecteur des données blob du stockage. Il n’est pas nécessaire d’accorder l’accès à des scientifiques de données individuels.

Pour activer l’authentification avec identité managée de calcul :

  • Créez une ressource de calcul avec identité managée activée. Consultez la section Cluster de calcul ou, pour une instance de calcul, la section Attribuer une identité managée.

    Important

    Si vous configurez l’instance de calcul pour l’arrêt inactif, l’instance de calcul ne s’arrête pas en raison de l’inactivité, sauf si l’identité managée a un accès contributeur à l’espace de travail Azure Machine Learning. Pour plus d’informations sur l’attribution d’autorisations, consultez Gérer l’accès aux espaces de travail Azure Machine Learning.

  • Accordez à l’identité managée de calcul au moins le rôle Lecteur des données Blob du stockage sur le compte de stockage.

  • Créez des magasins de données avec l’authentification basée sur l’identité activée. Consultez Créer des magasins de données.

Remarque

Le nom de l’identité managée du système créée pour l’instance de calcul ou le cluster est au format /workspace-name/computes/compute-name dans votre ID Microsoft Entra.

Une fois que vous avez activé l’authentification basée sur l’identité, l’identité managée informatique est utilisée par défaut pour accéder aux données au sein de vos travaux d’apprentissage. Si vous le souhaitez, vous pouvez vous authentifier à l’aide de l’identité de l’utilisateur en suivant les étapes décrites dans la section suivante.

Pour plus d’informations sur la configuration d’Azure RBAC pour le stockage, consultez les contrôles d’accès en fonction du rôle.

Accéder aux données pour les travaux d’apprentissage sur des clusters de calcul à l’aide de l’identité utilisateur

S’APPLIQUE À :Extension Azure ML CLI v2 (actuelle)

Lorsque vous effectuez l’entraînement sur des clusters de calcul Azure Machine Learning, vous pouvez vous authentifier auprès du stockage à l’aide de votre jeton utilisateur Microsoft Entra.

Ce mode d’authentification vous permet de :

  • Configurez des autorisations affinées, où différents utilisateurs de l’espace de travail peuvent accéder à différents comptes de stockage ou dossiers au sein des comptes de stockage.
  • Laissez les scientifiques des données réutiliser les autorisations existantes sur les systèmes de stockage.
  • Auditer l’accès au stockage, car les journaux de stockage montrent quelles identités ont été utilisées pour accéder aux données.

Important

Cette fonctionnalité présente les limitations suivantes :

  • Les expériences envoyées via l’interface CLI Azure Machine Learning et le Kit de développement logiciel (SDK) Python V2 prennent en charge cette fonctionnalité, mais ML Studio ne le fait pas.
  • Vous ne pouvez pas utiliser l’identité utilisateur et l’identité managée de calcul pour l’authentification dans le même travail.
  • Pour les tâches de pipeline, définissez l'identité utilisateur au niveau de l'étape individuelle qui s'exécute sur une ressource de calcul, plutôt qu'au niveau principal du pipeline. Bien que le paramètre d’identité soit pris en charge tant au niveau du pipeline racine qu'au niveau de l'étape, celui au niveau de l'étape prend le pas sur celui au niveau du pipeline racine si les deux sont définis. Toutefois, pour les pipelines contenant des composants de pipeline, l’identité doit être définie pour chaque étape qui s’exécute. L’identité définie au niveau du pipeline racine ou du composant de pipeline ne fonctionne pas. Par conséquent, définissez l’identité au niveau de l’étape individuelle pour plus de simplicité.

Pour configurer l’accès aux données à l’aide de l’identité utilisateur pour former des travaux sur des clusters de calcul à partir de l’interface CLI, procédez comme suit :

  1. Accordez à l’identité utilisateur l’accès aux ressources de stockage. Par exemple, accordez à StorageBlobReader l’accès au compte de stockage spécifique que vous souhaitez utiliser, ou accordez l’autorisation ACL à des dossiers ou fichiers spécifiques dans le stockage Azure Data Lake Gen 2.

  2. Créez un magasin de données Azure Machine Learning sans informations d’identification mises en cache pour le compte de stockage. Si un magasin de données dispose d’informations d’identification mises en cache, telles que la clé de compte de stockage, ces informations d’identification sont utilisées au lieu de l’identité utilisateur.

  3. Envoyez un travail d’entraînement avec la propriété identity définie sur type : user_identity, comme indiqué dans la spécification de travail suivante. Pendant le travail d’entraînement, l’authentification auprès du stockage se produit via l’identité de l’utilisateur qui envoie le travail.

    Remarque

    Si vous ne spécifiez pas la propriété d’identité et que le magasin de données n’a pas d’informations d’identification mises en cache, le système utilise l’identité gérée par l'ordinateur en tant que solution de repli.

    command: |
    echo "--census-csv: ${{inputs.census_csv}}"
    python hello-census.py --census-csv ${{inputs.census_csv}}
    code: src
    inputs:
    census_csv:
        type: uri_file 
        path: azureml://datastores/mydata/paths/census.csv
    environment: azureml:AzureML-sklearn-1.0-ubuntu20.04-py38-cpu@latest
    compute: azureml:cpu-cluster
    identity:
    type: user_identity
    

Pour configurer l’accès aux données à l’aide de l’identité utilisateur pour les travaux d’apprentissage sur des clusters de calcul à partir du Kit de développement logiciel (SDK) Python, procédez comme suit :

  1. Accordez l’accès aux données et créez un magasin de données comme décrit précédemment pour l’interface CLI.

  2. Envoyez un travail d’entraînement avec le paramètre d’identité défini sur azure.ai.ml.UserIdentityConfiguration. Ce paramètre permet au travail d’accéder aux données pour le compte de l’utilisateur qui envoie le travail.

    from azure.ai.ml import command
    from azure.ai.ml.entities import Data, UriReference
    from azure.ai.ml import Input
    from azure.ai.ml.constants import AssetTypes
    from azure.ai.ml import UserIdentityConfiguration
    
    # Specify the data location
    my_job_inputs = {
        "input_data": Input(type=AssetTypes.URI_FILE, path="<path-to-my-data>")
    }
    
    # Define the job
    job = command(
        code="<my-local-code-location>", 
        command="python <my-script>.py --input_data ${{inputs.input_data}}",
        inputs=my_job_inputs,
        environment="AzureML-sklearn-0.24-ubuntu18.04-py37-cpu:9",
        compute="<my-compute-cluster-name>",
        identity= UserIdentityConfiguration() 
    )
    # submit the command
    returned_job = ml_client.jobs.create_or_update(job)
    

Important

Lorsque vous envoyez un travail avec authentification à l’aide de l’identité de l’utilisateur, la validation de la somme de contrôle protège les captures instantanées de code contre la falsification. Si vous avez des composants de pipeline existants et que vous envisagez de les utiliser avec l’authentification à l’aide de l’identité de l’utilisateur, vous devrez peut-être les recharger. Sinon, le travail peut échouer pendant la validation de la somme de contrôle.

Utiliser les réseaux virtuels

Par défaut, Azure Machine Learning ne peut pas communiquer avec un compte de stockage situé derrière un pare-feu, ou dans un réseau virtuel.

Vous pouvez configurer des comptes de stockage pour autoriser l’accès uniquement dans des réseaux virtuels spécifiques. Cette configuration nécessite des étapes supplémentaires pour garantir que les données ne sont pas divulguées en dehors du réseau. Ce comportement est le même pour l’accès aux données basé sur les informations d’identification. Pour plus d’informations, consultez Empêcher l’exfiltration de données.

Si votre compte de stockage a des paramètres de réseau virtuel, ces paramètres déterminent le type d’identité et l’accès aux autorisations nécessaires. Par exemple, pour la préversion des données et le profil de données, les paramètres de réseau virtuel déterminent le type d’identité utilisé pour authentifier l’accès aux données.

  • Dans les scénarios où seules certaines adresses IP et sous-réseaux sont autorisées à accéder au stockage, Azure Machine Learning utilise la msi de l’espace de travail pour effectuer des aperçus et des profils de données.

  • Si votre stockage est ADLS Gen 2 ou Blob et possède des paramètres de réseau virtuel, vous pouvez utiliser l’identité utilisateur ou l’espace de travail MSI en fonction des paramètres de magasin de données définis lors de la création.

  • Si le paramètre de réseau virtuel autorise les services Azure dans la liste des services approuvés à accéder à ce compte de stockage, l’instance MSI de l’espace de travail est utilisée.

Scénario : Azure Container Registry sans utilisateur administrateur

Lorsque vous désactivez l’utilisateur administrateur pour ACR, Azure Machine Learning utilise une identité managée pour générer et extraire des images Docker. Il existe deux flux de travail lors de la configuration d’Azure Machine Learning pour utiliser un ACR avec l’utilisateur administrateur désactivé :

  • Autorisez Azure Machine Learning à créer l’instance ACR, puis désactivez l’utilisateur administrateur par la suite.
  • Apportez un ACR existant avec l’utilisateur administrateur déjà désactivé.

Azure Machine Learning avec une instance ACR créée automatiquement

  1. Créez un espace de travail Azure Machine Learning.

  2. Effectuez une action qui nécessite Azure Container Registry. Par exemple, consultez le tutoriel : Entraîner votre premier modèle.

  3. Obtenez le nom de l’ACR créé par le cluster.

    S’APPLIQUE À :Extension Azure ML CLI v2 (actuelle)

    az ml workspace show --name <my workspace name> \
    --resource-group <my resource group> \
    --subscription <my subscription id> \
    --query container_registry
    

    Cette commande retourne une valeur semblable au texte suivant. Vous souhaitez uniquement la dernière partie du texte, c’est-à-dire le nom de l’instance ACR :

    /subscriptions/<subscription id>/resourceGroups/<my resource group>/providers/MicrosoftContainerReggistry/registries/<ACR instance name>
    
  4. Mettez à jour l’ACR pour désactiver l’accès utilisateur administrateur :

    az acr update --name <ACR instance name> --admin-enabled false
    

Utiliser votre propre ACR

Si la stratégie d’abonnement interdit l’utilisateur administrateur ACR, créez d’abord ACR sans utilisateur administrateur, puis associez-la à l’espace de travail. Créez ACR à partir d’Azure CLI sans définir l’argument --admin-enabled ou à partir du portail Azure sans activer l’utilisateur administrateur. Lors de la création d’un espace de travail Azure Machine Learning, spécifiez l’ID de ressource Azure de l’ACR. L’exemple suivant illustre la création d’un nouvel espace de travail Azure Machine Learning qui utilise un ACR existant :

S’APPLIQUE À :Extension Azure ML CLI v2 (actuelle)

az ml workspace create -n <workspace name> \
-g <workspace resource group> \
-l <region> \
--container-registry /subscriptions/<subscription id>/resourceGroups/<acr resource group>/providers/Microsoft.ContainerRegistry/registries/<acr name>

Conseil

Pour obtenir la valeur du paramètre --container-registry , utilisez la commande az acr show pour afficher des informations pour votre ACR. Le champ id contient l’ID de ressource de votre ACR.

En outre, si vous avez déjà un ACR avec utilisateur administrateur désactivé, vous pouvez le joindre à l’espace de travail en le mettant à jour. L’exemple suivant illustre la mise à jour d’un espace de travail Azure Machine Learning de façon à utiliser un ACR existant :

S’APPLIQUE À :Extension Azure ML CLI v2 (actuelle)

az ml workspace update --update-dependent-resources \
--name <workspace name> \
--resource-group <workspace resource group> \
--container-registry /subscriptions/<subscription id>/resourceGroups/<acr resource group>/providers/Microsoft.ContainerRegistry/registries/<acr name>

Créez une instance de calcul avec une identité managée pour accéder aux images Docker pour la formation

Pour accéder à l’ACR d’espace de travail, créez un cluster de calcul Machine Learning avec l’identité managée attribuée par le système activée. Vous pouvez activer l’identité à partir du portail Azure ou de Studio lors de la création de calcul, ou à partir d’Azure CLI à l’aide de la commande suivante. Pour plus d’informations, consultez Utiliser l’identité managée avec des clusters de calcul.

S’APPLIQUE À :Extension Azure ML CLI v2 (actuelle)

az ml compute create --name cpu-cluster --type <cluster name>  --identity-type systemassigned

Une identité managée reçoit automatiquement le rôle ACRPull dans l’ACR de l’espace de travail pour lui permettre d’extraire des images Docker pour la formation.

Remarque

Si vous créez le calcul et que l’ACR d’espace de travail n’existe pas encore, vous devez attribuer manuellement le rôle ACRPull.

Utiliser des Images Docker pour l’inférence

Après avoir configuré ACR sans utilisateur administrateur comme décrit précédemment, vous pouvez accéder aux images Docker pour l’inférence sans clés d’administration à partir de votre service Azure Kubernetes (AKS). Lorsque vous créez ou joignez AKS à l’espace de travail, le principal de service du cluster se voit automatiquement attribuer l’accès ACRPull à l’ACR d’espace de travail.

Remarque

Si vous utilisez votre propre cluster AKS, le cluster doit avoir le principal de service activé au lieu de l’identité managée.

Scénario : Utiliser un Azure Container Registry privé

Par défaut, Azure Machine Learning utilise des images de base Docker à partir d’un référentiel public que Microsoft gère. Il crée votre environnement d’apprentissage ou d’inférence sur ces images. Pour plus d’informations, consultez Qu’est-ce que les environnements ML ?

Pour utiliser une image de base personnalisée interne à votre entreprise, utilisez des identités managées pour accéder à votre ACR privé.

  1. Créez un cluster de calcul d'apprentissage automatique avec identité managée attribuée par le système, comme décrit précédemment. Ensuite, déterminez l’ID du principal de l’identité managée.

    S’APPLIQUE À :Extension Azure ML CLI v2 (actuelle)

    az ml compute show --name <cluster name> -n <workspace> -g <resource group>
    

    Éventuellement, vous pouvez mettre à jour le cluster de calcul pour attribuer une identité managée attribuée par l’utilisateur :

    S’APPLIQUE À :Extension Azure ML CLI v2 (actuelle)

    az ml compute update --name <cluster name> --user-assigned-identities <my-identity-id>
    
  2. Pour permettre au cluster de calcul de tirer (pull) les images de base, accordez le rôle ACRPull de l’identité du service managé (pour l’espace de travail ou le calcul) sur l’ACR privé

    S’APPLIQUE À :Extension Azure ML CLI v2 (actuelle)

    az role assignment create --assignee <principal ID> \
    --role acrpull \
    --scope "/subscriptions/<subscription ID>/resourceGroups/<private ACR resource group>/providers/Microsoft.ContainerRegistry/registries/<private ACR name>"
    
  3. Créez un environnement et spécifiez l’emplacement de l’image de base dans le fichier YAML de l’environnement. Le fichier YAML suivant montre comment définir un environnement qui référence l’ACR privé. Remplacez l’URL <acr-url> de votre ACR privé, par exemple myregistry.azurecr.io. Remplacez le <image-path> par le chemin d'accès à votre image dans l'ACR privé, par exemple pytorch/pytorch:latest :

    $schema: https://azuremlschemas.azureedge.net/latest/environment.schema.json
    name: docker-image-example
    image: <acr-url>/<image-path>:latest
    description: Environment created from a Docker image.
    
  4. La commande suivante montre comment créer l’environnement à partir du fichier YAML. Remplacez <yaml file> par le chemin d’accès à votre fichier YAML :

    az ml environment create --file <yaml file>
    

    Vous pouvez maintenant utiliser l’environnement dans un travail d’apprentissage.