Utiliser Microsoft Entra ID pour s’authentifier sur Azure

Le service Microsoft Entra ID permet un certain nombre de tâches administratives, telles que la gestion des utilisateurs, la gestion des domaines et la configuration de l'authentification unique. Cet article décrit comment utiliser Microsoft Entra ID dans Azure Automation en tant que fournisseur d'authentification sur Azure.

Installer les modules Microsoft Entra

Vous pouvez activer Microsoft Entra ID via les modules PowerShell suivants :

  • Azure Active Directory PowerShell pour Graph (modules AzureRM et Az). Azure Automation est fourni avec le module AzureRM et sa mise à niveau récente, le module Az. La fonctionnalité inclut l’authentification non interactive sur Azure à l’aide de l’authentification basée sur les informations d’identification de l’utilisateur Microsoft Entra (OrgId). Consultez Microsoft Entra ID 2.0.2.76.

  • ID Microsoft Entra pour Windows PowerShell (module MSOnline). Ce module permet les interactions avec Microsoft Online, notamment Microsoft 365.

Remarque

PowerShell Core ne prend pas en charge le module MSOnline. Pour utiliser les cmdlets du module, vous devez les exécuter à partir de Windows PowerShell. Vous êtes encouragé à utiliser la version la plus récente d’Azure Active Directory PowerShell pour les modules Graph au lieu du module MSOnline.

Remarque

Les modules Azure AD et MSOnline PowerShell sont dépréciés depuis le 30 mars 2024. Pour en savoir plus, lisez les informations de dépréciation. Passé cette date, la prise en charge de ces modules est limitée à une assistance de migration vers le SDK et les correctifs de sécurité Microsoft Graph PowerShell. Les modules déconseillés continueront de fonctionner jusqu’au 30 mars 2025.

Nous vous recommandons de migrer vers Microsoft Graph PowerShell pour interagir avec Microsoft Entra ID (anciennement Azure AD). Pour explorer les questions courantes sur la migration, reportez-vous au FAQ sur la migration. Remarque : Les versions 1.0.x de MSOnline peuvent connaître une interruption après le 30 juin 2024.

Préinstallation

Avant d'installer les modules Microsoft Entra sur votre ordinateur :

  • Désinstallez toutes les versions précédentes du module AzureRM/Az et du module MSOnline.

  • Désinstallez l’Assistant de connexion Microsoft Online Services pour garantir le bon fonctionnement des nouveaux modules PowerShell.

Installer les modules AzureRM et Az

Remarque

Pour utiliser ces modules, vous devez utiliser PowerShell version 5.1 ou ultérieure avec une version 64 bits de Windows.

  1. Installez Windows Management Framework (WMF) 5.1. Voir Installer et configurer WMF 5.1.

  2. Installez AzureRM ou Az à l’aide des instructions de l’article Installer Azure PowerShell sur Windows avec PowerShellGet.

Installer le module MSOnline

Remarque

Pour installer le module MSOnline, vous devez disposer du rôle Administrateur. Voir À propos des rôles d’administrateur.

  1. Assurez-vous que la fonctionnalité Microsoft .NET Framework 3.5.x est activée sur votre ordinateur. Il est probable que votre ordinateur dispose d’une version plus récente, mais la compatibilité descendante avec les versions antérieures du .NET Framework peut être activée ou désactivée.

  2. Installez la version 64 bits de l’Assistant de connexion Microsoft Online Services.

  3. Exécutez Windows PowerShell en tant qu’administrateur pour créer une invite de commandes Windows PowerShell avec élévation de privilèges.

  4. Déployez l’ID Microsoft Entra à partir de MSOnline 1.0.

  5. Si vous êtes invité à installer le fournisseur NuGet, saisissez O, puis appuyez sur Entrée.

  6. Si vous êtes invité à installer le module à partir de PSGallery, saisissez O, puis appuyez sur Entrée.

Installer la prise en charge de PSCredential

Azure Automation utilise la classe PSCredential pour représenter une ressource d’informations d’identification. Vos scripts récupèrent des objets PSCredential à l’aide de la cmdlet Get-AutomationPSCredential. Pour plus d’informations, consultez Ressources d’informations d’identification dans Azure Automation.

Attribuer un administrateur d’abonnement

Vous devez désigner un administrateur pour l’abonnement Azure. Cette personne a le rôle Propriétaire pour l’étendue de l’abonnement. Voir Contrôle d’accès en fonction du rôle dans Azure Automation.

Changer le mot de passe de l'utilisateur Microsoft Entra

Pour modifier le mot de passe de l'utilisateur Microsoft Entra :

  1. Déconnectez-vous d’Azure.

  2. Demandez à l'administrateur de se connecter à Azure en tant qu'utilisateur Microsoft Entra qui vient d'être créé, en utilisant le nom d'utilisateur complet (y compris le domaine) et un mot de passe temporaire.

  3. Demandez à l’administrateur de modifier le mot de passe lorsqu’il y est invité.

Configurer Azure Automation pour la gestion de l’abonnement Azure

Pour qu'Azure Automation communique avec Microsoft Entra ID, vous devez récupérer les informations d'identification associées à la connexion Azure à Microsoft Entra ID. Il s’agit par exemple de l’ID de locataire, de l’ID d’abonnement, etc. Pour en savoir plus sur la connexion entre Azure et Microsoft Entra ID, consultez Connecter votre organisation à Microsoft Entra ID.

Créer une ressource d’informations d’identification

Avec les informations d'identification Azure pour Microsoft Entra disponibles, il est temps de créer une ressource d'informations d'identification Azure Automation pour stocker en toute sécurité les informations d'identification Microsoft Entra afin que les runbooks et les scripts Desire State Configuration (DSC) puissent y accéder. Vous pouvez effectuer cette opération dans le Portail Azure ou à l’aide de cmdlets PowerShell.

Créer la ressource d’informations d’identification dans le Portail Azure

Vous pouvez utiliser le Portail Azure pour créer la ressource d’informations d’identification. Effectuez cette opération à partir de votre compte Automation en accédant à Informations d’identification sous Ressources partagées. Voir Ressources d’informations d’identification dans Azure Automation.

Créer la ressource d’informations d’identification avec Windows PowerShell

Pour préparer une nouvelle ressource d’informations d’identification dans Windows PowerShell, votre script crée d’abord un objet PSCredential à l’aide du nom d’utilisateur et du mot de passe attribués. Le script utilise ensuite cet objet pour créer la ressource par le biais d’un appel à la cmdlet New-AzureAutomationCredential. Le script peut également appeler la cmdlet Get-Credential pour inviter l’utilisateur à saisir un nom et un mot de passe. Voir Ressources d’informations d’identification dans Azure Automation.

Gérer des ressources Azure à partir d’un runbook Azure Automation

Vous pouvez gérer les ressources Azure à partir de runbooks Azure Automation en utilisant la ressource d’informations d’identification. Vous trouverez ci-dessous un exemple de runbook PowerShell qui collecte la ressource d’informations d’identification à utiliser pour l’arrêt et le démarrage des machines virtuelles dans un abonnement Azure. Ce runbook utilise tout d’abord Get-AutomationPSCredential pour récupérer les informations d’identification à utiliser pour l’authentification auprès d’Azure. Il appelle ensuite la cmdlet Connect-AzAccount pour se connecter à Azure à l’aide des informations d’identification.

Workflow Workflow
{ 
    Param 
    (    
        [Parameter(Mandatory=$true)][ValidateNotNullOrEmpty()] 
        [String] 
        $AzureSubscriptionId, 
        [Parameter(Mandatory=$true)][ValidateNotNullOrEmpty()] 
        [String] 
        $AzureVMList="All", 
        [Parameter(Mandatory=$true)][ValidateSet("Start","Stop")] 
        [String] 
        $Action 
    ) 
     
    # Ensures you do not inherit an AzContext in your runbook
    Disable-AzContextAutosave -Scope Process

    # Connect to Azure with system-assigned managed identity
    $AzureContext = (Connect-AzAccount -Identity).context

    # set and store context
    $AzureContext = Set-AzContext -SubscriptionName $AzureContext.Subscription -DefaultProfile $AzureContext 

    # get credential
    $credential = Get-AutomationPSCredential -Name "AzureCredential"

    # Connect to Azure with credential
    $AzureContext = (Connect-AzAccount -Credential $credential -TenantId $AzureContext.Subscription.TenantId).context 

    # set and store context
    $AzureContext = Set-AzContext -SubscriptionName $AzureContext.Subscription `
        -TenantId $AzureContext.Subscription.TenantId `
        -DefaultProfile $AzureContext
 
    if($AzureVMList -ne "All") 
    { 
        $AzureVMs = $AzureVMList.Split(",") 
        [System.Collections.ArrayList]$AzureVMsToHandle = $AzureVMs 
    } 
    else 
    { 
        $AzureVMs = (Get-AzVM -DefaultProfile $AzureContext).Name 
        [System.Collections.ArrayList]$AzureVMsToHandle = $AzureVMs 
    } 
 
    foreach($AzureVM in $AzureVMsToHandle) 
    { 
        if(!(Get-AzVM -DefaultProfile $AzureContext | ? {$_.Name -eq $AzureVM})) 
        { 
            throw " AzureVM : [$AzureVM] - Does not exist! - Check your inputs " 
        } 
    } 
 
    if($Action -eq "Stop") 
    { 
        Write-Output "Stopping VMs"; 
        foreach -parallel ($AzureVM in $AzureVMsToHandle) 
        { 
            Get-AzVM -DefaultProfile $AzureContext | ? {$_.Name -eq $AzureVM} | Stop-AzVM -DefaultProfile $AzureContext -Force 
        } 
    } 
    else 
    { 
        Write-Output "Starting VMs"; 
        foreach -parallel ($AzureVM in $AzureVMsToHandle) 
        { 
            Get-AzVM -DefaultProfile $AzureContext | ? {$_.Name -eq $AzureVM} | Start-AzVM -DefaultProfile $AzureContext
        } 
    } 
}

Étapes suivantes