Configurer des identités managées dans des pools Batch

Les identités gérées pour les ressources Azure éliminent la gestion complexe des identités et des informations d'identification en fournissant une identité pour la ressource Azure dans Microsoft Entra ID (Azure AD ID). Cette identité est utilisée pour obtenir des jetons Microsoft Entra pour s'authentifier auprès des ressources cibles dans Azure.

Cette rubrique explique comment activer des identités managées affectées par l’utilisateur sur des pools Batch et comment utiliser des identités managées dans les nœuds.

Important

Les pools doivent être configurés à l’aide de la configuration de la machine virtuelle afin d’utiliser des identités managées.

La création de pools avec des identités managées est possible à l’aide de la bibliothèque de gestion .NET Batch, mais elle n’est actuellement pas prise en charge avec la bibliothèque de client .NET Batch.

Créer une identité managée attribuée par l’utilisateur

Tout d’abord, créez votre identité managée affectée par l’utilisateur dans le même locataire que votre compte Batch. Vous pouvez créer l’identité à l’aide du portail Azure, de l’interface de ligne de commande Azure (Azure CLI), de PowerShell, d’Azure Resource Manager ou de l’API REST Azure. Cette identité managée n’a pas besoin d’être dans le même groupe de ressources ni même dans le même abonnement.

Conseil

Une identité managée affectée par le système créée pour un compte Batch pour le chiffrement des données client ne peut pas être utilisée comme identité managée affectée par l’utilisateur sur un pool Batch, comme décrit dans ce document. Si vous souhaitez utiliser la même identité managée sur le compte Batch et le pool Batch, utilisez plutôt une identité managée commune affectée par l’utilisateur.

Créer un pool Batch avec des identités managées affectées par l’utilisateur

Une fois que vous avez créé une ou plusieurs identités managées affectées par l’utilisateur, vous pouvez créer un pool Batch pour ces identités. Vous pouvez :

Avertissement

Les mises à jour sur place des identités managées du pool ne sont pas prises en charge lorsque le pool a des nœuds actifs. Les nœuds de calcul existants ne seront pas mis à jour et n’afficheront pas les modifications. Il est recommandé d’effectuer un scale-down du pool à zéro nœud de calcul avant de modifier la collecte d’identités pour vous assurer que toutes les machines virtuelles se voient attribuer le même ensemble d’identités.

Créer un pool Batch dans le portail Azure

Pour créer un pool Batch avec une identité managée affectée par l’utilisateur via le portail Azure :

  1. Connectez-vous au portail Azure.
  2. Dans la barre de recherche, entrez et sélectionnez Comptes Batch.
  3. Dans la page Comptes Batch, sélectionnez le compte Batch dans lequel vous souhaitez créer un pool Batch.
  4. Dans le menu d du compte Batch, sous Fonctionnalités, sélectionnez Pools.
  5. Dans le menu Pools, sélectionnez Ajouter pour ajouter un nouveau pool Batch.
  6. Pour ID du pool, entrez un identificateur pour votre pool.
  7. Pour Identité, remplacez le paramètre par Affectée par l’utilisateur.
  8. Sous Identité managée affectée par l’utilisateur, sélectionnez Ajouter.
  9. Sélectionnez l’identité managée affectée par l’utilisateur ou les identités à utiliser. Sélectionnez ensuite Ajouter.
  10. Sous Système d’exploitation, sélectionnez l’éditeur, l’offre et la référence SKU à utiliser.
  11. Si vous le souhaitez, activez l’identité managée dans le registre de conteneurs :
    1. Pour Configuration du conteneur, remplacez le paramètre par Personnalisé. Sélectionnez ensuite votre configuration personnalisée.
    2. Pour Démarrer la tâche, sélectionnez Activé. Ensuite, sélectionnez Fichiers de ressources et ajoutez les informations de votre conteneur de stockage.
    3. Activer les Paramètres du conteneur
    4. Modifier Registre de conteneurs pour Personnalisé
    5. Pour référence d’identité, sélectionnez le conteneur de stockage.

Créer un pool Batch avec .NET

Pour créer un pool Batch avec une identité managée affectée par l’utilisateur avec la bibliothèque de gestion Batch .NET, utilisez l’exemple de code suivant :

var poolParameters = new Pool(name: "yourPoolName")
    {
        VmSize = "standard_d2_v3",
        ScaleSettings = new ScaleSettings
        {
            FixedScale = new FixedScaleSettings
            {
                TargetDedicatedNodes = 1
            }
        },
        DeploymentConfiguration = new DeploymentConfiguration
        {
            VirtualMachineConfiguration = new VirtualMachineConfiguration(
                new ImageReference(
                    "Canonical",
                    "0001-com-ubuntu-server-jammy",
                    "22_04-lts",
                    "latest"),
                "batch.node.ubuntu 22.04")
        },
        Identity = new BatchPoolIdentity
        {
            Type = PoolIdentityType.UserAssigned,
            UserAssignedIdentities = new Dictionary<string, UserAssignedIdentities>
            {
                ["Your Identity Resource Id"] =
                    new UserAssignedIdentities()
            }
        }
    };

var pool = await managementClient.Pool.CreateWithHttpMessagesAsync(
    poolName:"yourPoolName",
    resourceGroupName: "yourResourceGroupName",
    accountName: "yourAccountName",
    parameters: poolParameters,
    cancellationToken: default(CancellationToken)).ConfigureAwait(false);

Utiliser des identités managées affectées par l’utilisateur dans des nœuds Batch

De nombreuses fonctions Azure Batch qui accèdent à d’autres ressources Azure directement sur les nœuds d’ordinateur, comme le Stockage Azure ou Azure Container Registry, prennent en charge les identités managées. Pour en savoir plus sur l’utilisation des identités managées avec Azure Batch, consultez les liens suivants :

Vous pouvez également configurer vos tâches manuellement afin que les identités managées puissent accéder directement aux ressources Azure qui prennent en charge les identités managées.

Dans les nœuds Batch, vous pouvez obtenir des jetons d'identité gérés et les utiliser pour vous authentifier via l'authentification Microsoft Entra via le Instance Metadata Service Azure.

Pour Windows, le script PowerShell permettant d’obtenir un jeton d’accès pour l’authentification est le suivant :

$Response = Invoke-RestMethod -Uri 'http://169.254.169.254/metadata/identity/oauth2/token?api-version=2018-02-01&resource={Resource App Id Url}' -Method GET -Headers @{Metadata="true"}

Pour Linux, le script Bash est le suivant :

curl 'http://169.254.169.254/metadata/identity/oauth2/token?api-version=2018-02-01&resource={Resource App Id Url}' -H Metadata:true

Pour plus d’informations, consultez Guide pratique de l’utilisation d’identités managées pour les ressources Azure sur une machine virtuelle Azure afin d’acquérir un jeton d’accès.

Étapes suivantes