Comment utiliser des identités managées pour ressources Azure sur une machine virtuelle Azure pour se connecter

Les identités managées pour les ressources Azure sont une fonctionnalité de Microsoft Entra ID. Les services Azure prenant en charge les identités managées pour ressources Azure sont soumis à leur propre chronologie. Assurez-vous de passer en revue l’état Disponibilité des identités gérées pour votre ressource et les problèmes connus avant de commencer.

Cet article fournit des exemples de script PowerShell et CLI pour la connexion à l’aide du principal du service d’identités managées pour ressources Azure, et des conseils sur des sujets importants tels que la gestion des erreurs.

Notes

Nous vous recommandons d’utiliser le module Azure Az PowerShell pour interagir avec Azure. Pour commencer, consultez Installer Azure PowerShell. Pour savoir comment migrer vers le module Az PowerShell, consultez Migrer Azure PowerShell depuis AzureRM vers Az.

Prérequis

Si vous envisagez d’utiliser les exemples de Azure PowerShell ou Azure CLI dans cet article, veillez à installer la dernière version de Azure PowerShell ou bien Azure CLI.

Important

  • L’exemple de script présenté dans cet article part du principe que le client de ligne de commande s’exécute sur une machine virtuelle avec des identités managées pour ressources Azure activées. Utilisez la fonctionnalité « Se connecter » de machine virtuelle dans le portail Azure, pour vous connecter à distance à votre machine virtuelle. Pour plus d’informations sur l’activation d’identités managées pour ressources Azure sur une machine virtuelle, voir Configurer des identités managées pour ressources Azure sur une machine virtuelle en utilisant le portail Azure, ou l’une des variantes de cet article (en utilisant PowerShell, CLI, un modèle ou un Kit de développement logiciel (SDK) Azure).
  • Pour éviter les erreurs lors de l’accès aux ressources, l’identité managée de la machine virtuelle doit comporter au moins l’accès « Lecture » à l’étendue appropriée (la machine virtuelle ou plus) pour autoriser les opérations d’Azure Resource Manager sur la machine virtuelle. Pour plus d’informations, voir Attribuer l’accès aux identités managées pour ressources Azure à une ressource en utilisant le portail Azure.

Vue d’ensemble

Les identités managées pour ressources Azure fournissent un objet principal du service, qui est créé lors de l’activation d’identités managées pour ressources Azure sur la machine virtuelle. L’accès à des ressources Azure peut être donné au principal du service, et celui-ci peut être utilisé comme identité par des clients de script/ligne de commande pour la connexion et l’accès aux ressources. En règle générale, pour accéder à des ressources sécurisées sous sa propre identité, un client de script doit :

  • être inscrit et consenti avec Microsoft Entra ID comme une application cliente web/confidentielle
  • connectez-vous sous son principal du service, à l’aide des informations d’identification de l’application (normalement incorporées dans le script)

Avec des identités managées pour ressources Azure, votre client de script n’a plus besoin de faire quoi que ce soit, car il peut se connecter sous le principal du service d’identités managées pour ressources Azure.

Azure CLI

Le script suivant montre comment :

  1. Se connecter à Microsoft Entra ID sous le principal du service d’identité managée pour ressources Azure de la machine virtuelle

  2. Appelez Azure Resource Manager et obtenez l’ID principal du service de la machine virtuelle. CLI prend en charge automatiquement la gestion de l’acquisition/utilisation des jetons pour vous. Veillez à indiquer le nom de votre machine virtuelle pour <VM-NAME>.

    az login --identity
    
    $spID=$(az resource list -n <VM-NAME> --query [*].identity.principalId --out tsv)
    echo The managed identity for Azure resources service principal ID is $spID
    

Azure PowerShell

Le script suivant montre comment :

  1. Se connecter à Microsoft Entra ID sous le principal du service d’identité managée pour ressources Azure de la machine virtuelle

  2. Appelez une applet de commande de Azure Resource Manager pour obtenir des informations sur la machine virtuelle. PowerShell prend en charge la gestion de l’utilisation de jeton automatiquement pour vous.

    Add-AzAccount -identity
    
    # Call Azure Resource Manager to get the service principal ID for the VM's managed identity for Azure resources. 
    $vmInfoPs = Get-AzVM -ResourceGroupName <RESOURCE-GROUP> -Name <VM-NAME>
    $spID = $vmInfoPs.Identity.PrincipalId
    echo "The managed identity for Azure resources service principal ID is $spID"
    

ID de ressource pour les services Azure

Pour obtenir la liste des ressources qui prennent en charge Microsoft Entra ID et qui ont été testées avec des identités managées pour ressources Azure et leurs ID de ressource respectifs, voir Services Azure prenant en charge l’authentification Microsoft Entra.

Conseil de gestion des erreurs

Des réponses telles que les suivantes peuvent indiquer que l’identité managée pour ressources Azure de la machine virtuelle n’a pas été configurée correctement :

  • PowerShell : Invoke-WebRequest : Impossible de se connecter au serveur distant
  • Interface CLI : MSI : Impossible de récupérer un jeton à partir de http://localhost:50342/oauth2/token, erreur 'HTTPConnectionPool(host='localhost', port=50342)

Si vous recevez l’une de ces erreurs, revenez à la machine virtuelle Azure dans le portail Azure et accédez à la page Identité pour vérifier que Affecté par le système est défini sur « Oui ».

Étapes suivantes