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. Il existe plusieurs façons dont l’authentification peut se produire entre Azure Machine Learning et les services sur lesquels la solution s’appuie.

  • L’espace de travail Azure Machine Learning utilise une identité managée pour communiquer avec d’autres services. Par défaut, c’est une identité managée affectée par le système. Vous pouvez aussi utiliser une identité managée affecté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, cela 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, ce qui utilisera plutôt 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

Avant de suivre les étapes décrites dans cet article, vérifiez que vous disposez des composants requis suivants :

  • Pour attribuer des rôles, la connexion de 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.

Azure Container Registry et types d’identité

Le tableau suivant répertorie la matrice de prise en charge lors de l’authentification auprès d’Azure Container Registry, en fonction de la méthode d’authentification et de la configuration d’accès au réseau publicd’Azure Container Registry.

Méthode d'authentification Accès au réseau public
désactivé
Accès au réseau public activé
Azure Container Registry
Utilisateur administrateur
Identité managée affectée par le système d’espace de travail
Identité managée attribuée à l’utilisateur de l’espace de travail
avec le rôle ACRPull attribué à l’identité

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

Espace de travail

Vous pouvez ajouter une identité managée affecté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é affecté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 affecté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 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 affecté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>

Où le contenu de workspace_creation_with_multiple_UAIs.yml est le suivant :

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 attribuées par l’utilisateur pour un espace de travail, y compris 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>

Où le contenu de workspace_update_with_multiple_UAIs.yml est le suivant :

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 une nouvelle UAI, vous pouvez spécifier le nouvel ID UAI sous la section user_assigned_identities en plus des UAI existants, il est nécessaire de transmettre tous les ID UAI existants.
Pour supprimer un ou plusieurs UAI existants, vous pouvez placer les ID UAI qui doivent être conservés dans la section user_assigned_identities, les autres ID UAI seront supprimés.
Pour mettre à jour le type d’identité de SAI vers UAI | SAI, vous pouvez remplacer le type « user_assigned » par « system_assigned, user_assigned ».

Cluster de calcul

Notes

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.

Pendant une exécution, il y a deux applications d’une identité :

  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

Emplacement du 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 affecté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 changer d’identité managée par l’utilisateur et managée par le système. Les exemples suivants montrent comment modifier la configuration :

Identité managée affectée par 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 affecté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

Stockage des données

Quand vous créez un magasin de données qui utilise l’accès aux données basé sur l’identité, votre compte Azure (jeton Microsoft Entra) est utilisé pour confirmer votre autorisation d’accès au service de stockage. Dans le scénario d’accès aux données basé sur l’identité, aucune information d’authentification n’est enregistrée. Seules les informations du compte de stockage sont stockées 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 présente 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.

Il existe deux scénarios dans lesquels vous pouvez appliquer l’accès aux données basé sur l’identité dans Azure Machine Learning. 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

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

Accès aux services de stockage

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

Quand vous utilisez l’accès aux données basé sur l’identité, Azure Machine Learning vous invite à indiquer votre jeton Microsoft Entra pour authentifier l’accès aux données, plutôt que de conserver vos informations d’identification dans le magasin de données. Avec cette approche, la gestion de l’accès aux données se fait au niveau du stockage et les informations d’identification demeurent 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.

Notes

Les informations d’identification stockées à l’aide de l’authentification basée sur des informations d’identification comprennent les éléments suivants : un ID d’abonnement, des jetons de signature d’accès partagé (SAS), des clés d’accès de stockage et des informations de principal de service, comme un ID client et un ID de locataire.

Pour vous garantir une connexion sécurisée à votre service de stockage sur Azure, Azure Machine Learning exige que vous disposiez de l’autorisation d’accéder au stockage de données correspondant.

Avertissement

L’accès inter-clients aux comptes de stockage n’est pas pris en charge. Si vous avez besoin d’un accès inter-clients pour votre scénario, contactez l’alias de l’équipe de support des données Azure Machine Learning à l’adresse amldatasupport@microsoft.com pour obtenir de l’aide sur 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 Microsoft Entra. Dans ce scénario, l’identité managée d’un calcul peut être utilisée pour l’authentification de l’accès aux données. Dans ce scénario, les données sont accessibles uniquement à partir d’une instance de calcul ou d’un cluster de calcul Machine Learning exécutant un travail d’entraînement. Avec cette approche, l’administrateur accorde à l’instance de calcul ou au cluster de calcul les autorisations de lecteur de données Blob de stockage de l’identité managée sur le 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 l’instance de calcul est également configurée pour l’arrêt en cas d’inactivité, l’instance de calcul ne s’arrête pas en cas d’inactivité, sauf si l’identité managée a un accès de 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 système créée pour l’instance de calcul ou le cluster sera au format /workspace-name/computes/compute-name dans votre Microsoft Entra ID.

Quand l’authentification basée sur l’identité est activée, l’identité managée de calcul est utilisée par défaut pour l’accès aux données dans vos travaux d’entraînement. Si vous le souhaitez, vous pouvez vous authentifier avec une identité d’utilisateur en suivant les étapes décrites dans la section suivante.

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

Accéder aux données pour les travaux d’entraînement sur des clusters de calcul avec une identité d’utilisateur

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

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

Ce mode d’authentification vous permet de :

  • Configurer des autorisations affinées, où différents utilisateurs d’espace de travail peuvent avoir accès à 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

  • La fonctionnalité est prise en charge pour les expériences soumises via l’interface CLI Azure Machine Learning et le SDK Python V2, mais pas via ML Studio.
  • L’identité utilisateur et l’identité managée de calcul ne peuvent pas être utilisées pour l’authentification dans le même travail.
  • Pour les travaux de pipeline, nous vous recommandons de définir l’identité de l’utilisateur au niveau de l’étape individuelle qui sera exécutée sur un calcul, plutôt qu’au niveau du pipeline racine. ( Bien que le paramètre d’identité soit pris en charge à la fois au niveau du pipeline racine et de l’étape, le paramètre au niveau de l’étape est prioritaire si les deux sont définis. Toutefois, pour les pipelines contenant des composants de pipeline, l’identité doit être définie sur des étapes individuelles qui seront exécutées. L’identité définie au niveau du pipeline racine ou du composant de pipeline ne fonctionne pas. Par conséquent, nous vous suggérons de définir l’identité au niveau de l’étape individuelle pour plus de simplicité.)

Les étapes suivantes expliquent comment configurer l’accès aux données avec l’identité de l’utilisateur pour les travaux de formation sur les clusters de calcul à partir de l’interface CLI.

  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.

    Notes

    Si la propriété identity est laissée non spécifiée et que le magasin de données n’a pas d’informations d’identification mises en cache, l’identité managée de calcul devient l’option de secours.

    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
    

Les étapes suivantes expliquent comment configurer l’accès aux données avec l’identité de l’utilisateur pour les travaux de formation sur les clusters de calcul à partir de l’interface Python SDK.

  1. Accordez l’accès aux données et créez un magasin de données comme décrit ci-dessus 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

Lors de l’envoi de travaux avec l’authentification avec l’identité de l’utilisateur activée, les instantanés de code sont protégés contre la falsification par la validation de la somme de contrôle. Si vous avez des composants de pipeline existants et que vous envisagez de les utiliser avec l’authentification avec l’identité de l’utilisateur activée, vous devrez peut-être les charger à nouveau. Sinon, le travail peut échouer lors de 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 possède des paramètres de réseau virtuel, qui déterminent le type d’identité et l’accès aux autorisations nécessaires. Par exemple, pour l’aperçu 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ù seuls des sous-réseaux et IP spécifiques peuvent accéder au stockage, Azure Machine Learning utilise la MSI de l’espace de travail pour obtenir des aperçus et des profils de données.

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

  • Si le paramètre de réseau virtuel est « Autoriser les services Azure dans la liste des services approuvés à accéder à ce compte de stockage », la 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 Leaerning 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, le Didacticiel : Effectuer l'apprentissage de votre premier modèle.

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

    S’APPLIQUE À :Extension Azure CLI ml v2 (actuel)

    az ml workspace show -w <my workspace> \
    -g <my resource group>
    --query containerRegistry
    

    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 l’accès utilisateur administrateur pour ACR n’est pas autorisé par la stratégie d’abonnement, vous devez d’abord créer l’ACR sans accès utilisateur administrateur, puis l’associer à l’espace de travail. En outre, si vous avez déjà un ACR avec accès utilisateur administrateur désactivé, vous pouvez le joindre à l’espace de travail.

Créez un ACR à partir d’Azure CLI sans définir d’argument --admin-enabled, ou à partir du portail Azure sans activer l’accès utilisateur administrateur. Ensuite, lors de la création de l’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 :

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.

S’APPLIQUE À :Extension Azure CLI ml v2 (actuel)

az ml workspace create -w <workspace name> \
-g <workspace resource group> \
-l <region> \
--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 d’une instance de calcul, ou à partir d’Azure CLI en utilisant les informations ci-dessous. 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 d’espace de travail pour lui permettre d’extraire des images Docker pour la formation.

Notes

Si vous créez d’abord l’instance de calcul, avant l’ACR d’espace de travail, vous devez attribuer le rôle ACRPull manuellement.

Utiliser des Images Docker pour l’inférence

Une fois que vous avez configuré ACR sans accès utilisateur administrateur comme décrit plus haut, vous pouvez accéder aux images Docker pour l’inférence sans clés d’administration à partir de votre instance Azure Kubernetes Service (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.

Notes

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 les images de base Docker qui proviennent d’un référentiel public géré par Microsoft. Il génère ensuite votre environnement de formation ou d’inférence sur ces images. Pour plus d’informations, consultez Que sont les environnements ML ?.

Pour utiliser une image de base personnalisée interne à votre entreprise, vous pouvez utiliser des identités managées pour accéder à votre ACR privé. Il existe deux cas d’utilisation :

  • Utilisez l’image de base pour la formation en l’état.
  • Créez une image managée Azure Machine Learning avec une image personnalisée comme base.

Extrayez l’image de base Docker vers le cluster de calcul Machine Learning pour la formation en l’état

Créez un cluster de calcul Machine Learning avec l’identité managée attribuée par le système activée, comme décrit plus haut. Ensuite, déterminez l’ID du principal de l’identité managée.

S’APPLIQUE À :Extension Azure CLI ml v2 (actuel)

az ml compute show --name <cluster name> -w <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 CLI ml v2 (actuel)

az ml compute update --name <cluster name> --user-assigned-identities <my-identity-id>

Pour permettre au cluster de calcul d’extraire les images de base, accordez le rôle ACRPull de l’identité du service managé sur l’ACR privé

S’APPLIQUE À :Extension Azure CLI ml v2 (actuel)

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>"

Enfin, créez un environnement et spécifiez l’emplacement de l’image de base dans le fichier YAML de l’environnement.

S’APPLIQUE À :Extension Azure CLI ml v2 (actuel)

$schema: https://azuremlschemas.azureedge.net/latest/environment.schema.json
name: docker-image-example
image: pytorch/pytorch:latest
description: Environment created from a Docker image.
az ml environment create --file <yaml file>

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

Créer un environnement managé Azure Machine Learning dans l’image de base de l’ACR privé pour la formation ou l’inférence

S’APPLIQUE À :Extension Azure CLI ml v2 (actuel)

Dans ce scénario, Azure Machine Learning Service crée l’environnement de formation ou d’inférence en plus d’une image de base que vous fournissez à partir d’un ACR privé. Étant donné que la tâche de création d’image s’effectue dans l’ACR d’espace de travail à l’aide d’ACR Tasks, vous devez effectuer des étapes supplémentaires pour autoriser l’accès.

  1. Créez une identité managée attribuée par l’utilisateur et accordez-lui l’accès ACRPull sur l’ACR privé.

  2. Accordez à l’identité managée de l’espace de travail un rôle Opérateur de l’identité managée sur l’identité managée affectée par l’utilisateur de l’étape précédente. Ce rôle permet à l’espace de travail d’attribuer l’identité managée attribuée par l’utilisateur à ACR Task pour la création de l’environnement managé.

    1. Obtenez l’ID du principal de l’identité managée attribuée par le système de l’espace de travail :

      S’APPLIQUE À :Extension Azure CLI ml v2 (actuel)

      az ml workspace show -w <workspace name> -g <resource group> --query identityPrincipalId
      
    2. Accordez le rôle Opérateur de l’identité managée :

      az role assignment create --assignee <principal ID> --role managedidentityoperator --scope <user-assigned managed identity resource ID>
      

      L’ID de ressource d’identité managée affectée par l'utilisateur est l’ID de ressource Azure de l’identité attribuée par l’utilisateur, au format /subscriptions/<subscription ID>/resourceGroups/<resource group>/providers/Microsoft.ManagedIdentity/userAssignedIdentities/<user-assigned managed identity name>.

  3. Spécifiez l’ID client et l’ACR externe de l’identité managée affectée par l’utilisateur dans les connexions de l’espace de travail à l’aide de la commande az ml connection. Cette commande accepte un fichier YAML qui fournit des informations sur la connexion. L’exemple suivant illustre le format de spécification d’une identité managée. Remplacez les valeurs client_id et resource_id par celles de votre identité managée :

    S’APPLIQUE À :Extension Azure CLI ml v2 (actuel)

    name: test_ws_conn_cr_managed
    type: container_registry
    target: https://test-feed.com
    credentials:
      type: managed_identity
      client_id: client_id
      resource_id: resource_id
    

    La commande suivante montre comment utiliser le fichier YAML pour créer une connexion avec votre espace de travail. Remplacez <yaml file>, <workspace name> et <resource group> par les valeurs de votre configuration :

    az ml connection create --file <yml file> --resource-group <resource group> --workspace-name <workspace>
    
  4. Une fois la configuration terminée, vous pouvez utiliser les images de base de l’ACR privé lors de la création d’environnements pour la formation ou l’inférence. L’extrait de code suivant montre comment spécifier l’image de base ACR et le nom de l’image dans une définition d’environnement :

    S’APPLIQUE À : Kit de développement logiciel (SDK) Python azure-ai-mlv2 (préversion)

    $schema: https://azuremlschemas.azureedge.net/latest/environment.schema.json
    name: private-acr-example
    image: <acr url>/pytorch/pytorch:latest
    description: Environment created from private ACR.
    

Étapes suivantes