Utiliser les identités managées avec Azure Machine Learning (préversion)Use Managed identities with Azure Machine Learning (preview)

Les identités managées vous permettent de configurer votre espace de travail avec les autorisations minimales requises pour accéder aux ressources.Managed identities allow you to configure your workspace with the minimum required permissions to access resources.

Pour configurer un espace de travail Azure Machine Learning de manière fiable, il est important de s’assurer que les différents services associés à l’espace de travail disposent du niveau d’accès correct.When configuring Azure Machine Learning workspace in trustworthy manner, it is important to ensure that different services associated with the workspace have the correct level of access. Par exemple, pendant le workflow Machine Learning, l’espace de travail doit accéder à Azure Container Registry (ACR) pour les images Docker et aux comptes de stockage pour les données de formation.For example, during machine learning workflow the workspace needs access to Azure Container Registry (ACR) for Docker images, and storage accounts for training data.

En outre, les identités managées permettent un contrôle affiné des autorisations, par exemple, vous pouvez accorder à un registre ACR spécifique l’accès à des ressources de calcul particulières, ou le révoquer.Furthermore, managed identities allow fine-grained control over permissions, for example you can grant or revoke access from specific compute resources to a specific ACR.

Cet article explique comment utiliser les identités managées pour :In this article, you'll learn how to use managed identities to:

  • Configurer et utiliser ACR pour votre espace de travail Azure Machine Learning sans avoir à activer l’accès utilisateur administrateur à ACR.Configure and use ACR for your Azure Machine Learning workspace without having to enable admin user access to ACR.
  • Accéder à un ACR privé externe à votre espace de travail, pour extraire des images de base à des fins de formation ou d’inférence.Access a private ACR external to your workspace, to pull base images for training or inference.

Important

L’utilisation d’identités managées pour contrôler l’accès aux ressources avec Azure Machine Learning est actuellement disponible en préversion.Using managed identities to control access to resources with Azure Machine Learning is currently in preview. La fonctionnalité en préversion est fournie en l’état, sans garantie de support ni contrat de niveau de service.Preview functionality is provided "as-is", with no guarantee of support or service level agreement. Pour plus d’informations, consultez Conditions d’utilisation supplémentaires des préversions Microsoft Azure.For more information, see the Supplemental terms of use for Microsoft Azure previews.

PrérequisPrerequisites

Configurer des identités managéesConfigure managed identities

Dans certains cas, il est nécessaire d’interdire l’accès utilisateur administrateur à Azure Container Registry.In some situations, it's necessary to disallow admin user access to Azure Container Registry. Par exemple, il se peut que le registre ACR soit partagé et que vous deviez interdire l’accès administrateur à d’autres utilisateurs.For example, the ACR may be shared and you need to disallow admin access by other users. Ou encore, une stratégie de niveau d’abonnement n’autorise pas la création d’un ACR avec accès utilisateur administrateur activé.Or, creating ACR with admin user enabled is disallowed by a subscription level policy.

Important

Lors de l’utilisation d’Azure Machine Learning pour l’inférence sur Azure Container Instance (ACI), l’accès utilisateur administrateur sur ACR est requis.When using Azure Machine Learning for inference on Azure Container Instance (ACI), admin user access on ACR is required. Ne le désactivez pas si vous envisagez de déployer des modèles dans ACI pour l’inférence.Do not disable it if you plan on deploying models to ACI for inference.

Lorsque vous créez un ACR sans activer l’accès utilisateur administrateur, les identités managées sont utilisées pour accéder à l’ACR afin de créer et d’extraire des images Docker.When you create ACR without enabling admin user access, managed identities are used to access the ACR to build and pull Docker images.

Vous pouvez utiliser votre propre ACR avec accès utilisateur administrateur désactivé lorsque vous créez l’espace de travail.You can bring your own ACR with admin user disabled when you create the workspace. Vous pouvez également laisser Azure Machine Learning créer un ACR d’espace de travail et désactiver l’accès utilisateur administrateur par la suite.Alternatively, let Azure Machine Learning create workspace ACR and disable admin user afterwards.

Utiliser votre propre ACRBring your own 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.If ACR admin user is disallowed by subscription policy, you should first create ACR without admin user, and then associate it with the workspace. En outre, si vous avez déjà un ACR avec accès utilisateur administrateur désactivé, vous pouvez le joindre à l’espace de travail.Also, if you have existing ACR with admin user disabled, you can attach it to the workspace.

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.Create ACR from Azure CLI without setting --admin-enabled argument, or from Azure portal without enabling admin user. Ensuite, lors de la création de l’espace de travail Azure Machine Learning, spécifiez l’ID de ressource Azure de l’ACR.Then, when creating Azure Machine Learning workspace, specify the Azure resource ID of the ACR. L’exemple suivant illustre la création d’un espace de travail Azure ML qui utilise un ACR existant :The following example demonstrates creating a new Azure ML workspace that uses an existing ACR:

Conseil

Pour obtenir la valeur du paramètre --container-registry , utilisez la commande az acr show pour afficher des informations pour votre ACR.To get the value for the --container-registry parameter, use the az acr show command to show information for your ACR. Le champ id contient l’ID de ressource de votre ACR.The id field contains the resource ID for your ACR.

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>

Laisser Azure Machine Learning Service créer un ACR d’espace de travailLet Azure Machine Learning service create workspace ACR

Si vous n’utilisez pas votre propre ACR, le service Azure Machine Learning en crée un pour vous lorsque vous effectuez une opération qui en a besoin.If you do not bring your own ACR, Azure Machine Learning service will create one for you when you perform an operation that needs one. Par exemple, soumettre un cycle de formation à Capacité de calcul Machine Learning, construire un environnement ou déployer un point de terminaison de service Web.For example, submit a training run to Machine Learning Compute, build an environment, or deploy a web service endpoint. L’ACR créé par l’espace de travail aura l’accès utilisateur administrateur activé et vous devrez le désactiver manuellement.The ACR created by the workspace will have admin user enabled, and you need to disable the admin user manually.

  1. Créer un espace de travailCreate a new workspace

    az ml workspace show -n <my workspace> -g <my resource group>
    
  2. Effectuez une action qui requiert ACR.Perform an action that requires ACR. Par exemple, le didacticiel sur l’apprentissage d’un modèle.For example, the tutorial on training a model.

  3. Faites créer le nom ACR par le cluster :Get the ACR name created by the cluster:

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

    Cette commande retourne une valeur semblable au texte suivant.This command returns a value similar to the following text. Vous souhaitez uniquement la dernière partie du texte, c’est-à-dire le nom de l’instance ACR :You only want the last portion of the text, which is the ACR instance name:

    /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 :Update the ACR to disable the admin user:

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

Créez une instance de calcul avec une identité managée pour accéder aux images Docker pour la formationCreate compute with managed identity to access Docker images for training

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.To access the workspace ACR, create machine learning compute cluster with system-assigned managed identity enabled. Vous pouvez activer l’identité à partir du portail Azure ou Studio lors de la création de l’instance de calcul, ou à partir d’Azure CLI avecYou can enable the identity from Azure portal or Studio when creating compute, or from Azure CLI using

Lorsque vous créez un cluster de calcul avec AmlComputeProvisioningConfiguration, utilisez le paramètre identity_type pour définir le type d’identité managée.When creating a compute cluster with the AmlComputeProvisioningConfiguration, use the identity_type parameter to set the managed identity type.

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.A managed identity is automatically granted ACRPull role on workspace ACR to enable pulling Docker images for training.

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.If you create compute first, before workspace ACR has been created, you have to assign the ACRPull role manually.

Accéder aux images de base à partir d’un ACR privéAccess base images from private ACR

Par défaut, Azure Machine Learning utilise les images de base Docker qui proviennent d’un référentiel public géré par Microsoft.By default, Azure Machine Learning uses Docker base images that come from a public repository managed by Microsoft. Il génère ensuite votre environnement de formation ou d’inférence sur ces images.It then builds your training or inference environment on those images. Pour plus d’informations, consultez Que sont les environnements ML ?.For more information, see What are ML environments?.

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é.To use a custom base image internal to your enterprise, you can use managed identities to access your private ACR. Il existe deux cas d’utilisation :There are two use cases:

  • Utilisez l’image de base pour la formation en l’état.Use base image for training as is.
  • Créez une image managée Azure Machine Learning avec une image personnalisée comme base.Build Azure Machine Learning managed image with custom image as a base.

Extrayez l’image de base Docker vers le cluster de calcul Machine Learning pour la formation en l’étatPull Docker base image to machine learning compute cluster for training as is

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.Create machine learning compute cluster with system-assigned managed identity enabled as described earlier. Ensuite, déterminez l’ID du principal de l’identité managée.Then, determine the principal ID of the managed identity.

az ml computetarget amlcompute identity 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 :Optionally, you can update the compute cluster to assign a user-assigned managed identity:

az ml computetarget amlcompute identity assign --name cpucluster \
-w $mlws -g $mlrg --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éTo allow the compute cluster to pull the base images, grant the managed service identity ACRPull role on the private ACR

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, lors de la soumission d’une exécution d’entraînement , spécifiez l’emplacement de l’image de base dans la définition de l’environnement.Finally, when submitting a training run, specify the base image location in the environment definition.

from azureml.core import Environment
env = Environment(name="private-acr")
env.docker.base_image = "<ACR name>.azurecr.io/<base image repository>/<base image version>"
env.python.user_managed_dependencies = True

Important

Pour vous assurer que l’image de base est directement extraite dans la ressource de calcul, définissez user_managed_dependencies = True et ne spécifiez pas de fichier Dockerfile.To ensure that the base image is pulled directly to the compute resource, set user_managed_dependencies = True and do not specify a Dockerfile. Dans le cas contraire, Azure Machine Learning Service tentera de créer une nouvelle image Docker et échouera, car seul le cluster de calcul a accès à l’extraction de l’image de base à partir d’ACR.Otherwise Azure Machine Learning service will attempt to build a new Docker image and fail, because only the compute cluster has access to pull the base image from ACR.

Créer un environnement managé Azure Machine Learning dans l’image de base de l’ACR privé pour la formation ou l’inférenceBuild Azure Machine Learning managed environment into base image from private ACR for training or inference

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é.In this scenario, Azure Machine Learning service builds the training or inference environment on top of a base image you supply from a private ACR. Étant donné que la tâche de création d’image s’effectue sur l’ACR d’espace de travail à l’aide de ACR Tasks, vous devez effectuer des étapes supplémentaires pour autoriser l’accès.Because the image build task happens on the workspace ACR using ACR Tasks, you must perform additional steps to allow access.

  1. Créez une identité managée attribuée par l’utilisateur et accordez-lui l’accès ACRPull sur l’ACR privé.Create user-assigned managed identity and grant the identity ACRPull access to the private ACR.

  2. Accordez à l’identité managée attribuée par le système de l’espace de travail un rôle Opérateur de l’identité managée sur l’identité managée attribuée par l’utilisateur de l’étape précédente.Grant the workspace system-assigned managed identity a Managed Identity Operator role on the user-assigned managed identity from the previous step. 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é.This role allows the workspace to assign the user-assigned managed identity to ACR Task for building the managed environment.

    1. Obtenez l’ID du principal de l’identité managée attribuée par le système de l’espace de travail :Obtain the principal ID of workspace system-assigned managed identity:

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

      az role assignment create --assignee <principal ID> --role managedidentityoperator --scope <UAI resource ID>
      

      L’ID de ressource UAI 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/<UAI name>.The UAI resource ID is Azure resource ID of the user assigned identity, in the format /subscriptions/<subscription ID>/resourceGroups/<resource group>/providers/Microsoft.ManagedIdentity/userAssignedIdentities/<UAI name>.

  3. Spécifiez l’ID client et l’ACR externe de l’identité managée attribuée par l’utilisateur dans les connexions de l’espace de travail à l’aide de la méthode Workspace.set_connection :Specify the external ACR and client ID of the user-assigned managed identity in workspace connections by using Workspace.set_connection method:

    workspace.set_connection(
        name="privateAcr", 
        category="ACR", 
        target = "<acr url>", 
        authType = "RegistryConnection", 
        value={"ResourceId": "<UAI resource id>", "ClientId": "<UAI client ID>"})
    

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.Once the configuration is complete, you can use the base images from private ACR when building environments for training or inference. 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 :The following code snippet demonstrates how to specify the base image ACR and image name in an environment definition:

from azureml.core import Environment

env = Environment(name="my-env")
env.docker.base_image = "<acr url>/my-repo/my-image:latest"

Vous pouvez éventuellement spécifier l’URL de ressource d’identité managée et l’ID de client dans la définition d’environnement proprement dite à l’aide de RegistryIdentity.Optionally, you can specify the managed identity resource URL and client ID in the environment definition itself by using RegistryIdentity. Si vous utilisez l’identité de registre de manière explicite, elle remplace toutes les connexions d’espace de travail spécifiées précédemment :If you use registry identity explicitly, it overrides any workspace connections specified earlier:

from azureml.core.container_registry import RegistryIdentity

identity = RegistryIdentity()
identity.resource_id= "<UAI resource ID>"
identity.client_id="<UAI client ID>”
env.docker.base_image_registry.registry_identity=identity
env.docker.base_image = "my-acr.azurecr.io/my-repo/my-image:latest"

Utiliser des Images Docker pour l’inférenceUse Docker images for inference

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).Once you've configured ACR without admin user as described earlier, you can access Docker images for inference without admin keys from your 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.When you create or attach AKS to workspace, the cluster's service principal is automatically assigned ACRPull access to workspace ACR.

Notes

Si vous utilisez votre propre cluster AKS, le cluster doit avoir le principal de service activé au lieu de l’identité managée.If you bring your own AKS cluster, the cluster must have service principal enabled instead of managed identity.

Étapes suivantesNext steps