Använda Microsoft Entra ID för att autentisera till Azure

Microsoft Entra ID-tjänsten möjliggör ett antal administrativa uppgifter, till exempel användarhantering, domänhantering och konfiguration av enkel inloggning. Den här artikeln beskriver hur du använder Microsoft Entra-ID i Azure Automation som leverantör för autentisering till Azure.

Installera Microsoft Entra-moduler

Du kan aktivera Microsoft Entra-ID via följande PowerShell-moduler:

  • Azure Active Directory PowerShell för Graph (AzureRM- och Az-moduler). Azure Automation levereras med AzureRM-modulen och den senaste uppgraderingen, Az-modulen. Funktioner omfattar icke-interaktiv autentisering till Azure med autentiseringsbaserad autentisering baserad på Microsoft Entra-användare (OrgId). Se Microsoft Entra ID 2.0.2.76.

  • Microsoft Entra ID för Windows PowerShell (MSOnline-modul). Den här modulen möjliggör interaktioner med Microsoft Online, inklusive Microsoft 365.

Kommentar

PowerShell Core stöder inte MSOnline-modulen. Om du vill använda modul-cmdletarna måste du köra dem från Windows PowerShell. Du uppmanas att använda de nyare Azure Active Directory PowerShell för Graph-modulerna i stället för MSOnline-modulen.

Kommentar

Azure AD- och MSOnline PowerShell-moduler är inaktuella från och med den 30 mars 2024. Mer information finns i utfasningsuppdateringen. Efter det här datumet är stödet för dessa moduler begränsat till migreringshjälp till Microsoft Graph PowerShell SDK och säkerhetskorrigeringar. De inaktuella modulerna fortsätter att fungera till och med mars 30 2025.

Vi rekommenderar att du migrerar till Microsoft Graph PowerShell för att interagera med Microsoft Entra-ID (tidigare Azure AD). Vanliga migreringsfrågor finns i Vanliga frågor och svar om migrering. Obs! Versioner 1.0.x av MSOnline kan uppleva störningar efter den 30 juni 2024.

Preinstallation

Innan du installerar Microsoft Entra-modulerna på datorn:

  • Avinstallera alla tidigare versioner av AzureRM/Az-modulen och MSOnline-modulen.

  • Avinstallera Microsoft Online Services-inloggningsassistenten för att säkerställa att de nya PowerShell-modulerna fungerar korrekt.

Installera AzureRM- och Az-modulerna

Kommentar

Om du vill arbeta med dessa moduler måste du använda PowerShell version 5.1 eller senare med en 64-bitarsversion av Windows.

  1. Installera Windows Management Framework (WMF) 5.1. Se Installera och konfigurera WMF 5.1.

  2. Installera AzureRM och/eller Az med hjälp av instruktioner i Installera Azure PowerShell på Windows med PowerShellGet.

Installera MSOnline-modulen

Kommentar

Om du vill installera MSOnline-modulen måste du vara medlem i en administratörsroll. Se Om administratörsroller.

  1. Kontrollera att microsoft .NET Framework 3.5.x-funktionen är aktiverad på datorn. Det är troligt att datorn har en nyare version installerad, men bakåtkompatibilitet med äldre versioner av .NET Framework kan aktiveras eller inaktiveras.

  2. Installera 64-bitarsversionen av Microsoft Online Services-inloggningsassistenten.

  3. Kör Windows PowerShell som administratör för att skapa en upphöjd Windows PowerShell-kommandotolk.

  4. Distribuera Microsoft Entra ID från MSOnline 1.0.

  5. Om du uppmanas att installera NuGet-providern skriver du Y och trycker på RETUR.

  6. Om du uppmanas att installera modulen från PSGallery skriver du Y och trycker på RETUR.

Installera stöd för PSCredential

Azure Automation använder klassen PSCredential för att representera en tillgång för autentiseringsuppgifter. Skripten hämtar PSCredential objekt med hjälp av cmdleten Get-AutomationPSCredential . Mer information finns i Autentiseringstillgångar i Azure Automation.

Tilldela en prenumerationsadministratör

Du måste tilldela en administratör för Azure-prenumerationen. Den här personen har rollen Ägare för prenumerationsomfånget. Läs mer i Rollbaserad åtkomstkontroll i Azure Automation.

Ändra Microsoft Entra-användarens lösenord

Så här ändrar du Microsoft Entra-användarens lösenord:

  1. Logga ut från Azure.

  2. Låt administratören logga in på Azure som Microsoft Entra-användaren nyss skapade med det fullständiga användarnamnet (inklusive domänen) och ett tillfälligt lösenord.

  3. Be administratören att ändra lösenordet när du uppmanas att göra det.

Konfigurera Azure Automation för att hantera Azure-prenumerationen

För att Azure Automation ska kunna kommunicera med Microsoft Entra-ID måste du hämta de autentiseringsuppgifter som är associerade med Azure-anslutningen till Microsoft Entra-ID:t. Exempel på dessa autentiseringsuppgifter är klientorganisations-ID, prenumerations-ID och liknande. Mer information om anslutningen mellan Azure och Microsoft Entra-ID finns i Anslut din organisation till Microsoft Entra-ID.

Skapa en tillgång för autentiseringsuppgifter

Med Azure-autentiseringsuppgifterna för Microsoft Entra tillgängliga är det dags att skapa en Azure Automation-autentiseringstillgång för att lagra Microsoft Entra-autentiseringsuppgifterna på ett säkert sätt så att runbooks och DSC-skript (Desire State Configuration) kan komma åt dem. Du kan göra detta med azure-portalen eller PowerShell-cmdletar.

Skapa tillgången för autentiseringsuppgifter i Azure-portalen

Du kan använda Azure-portalen för att skapa tillgången för autentiseringsuppgifter. Gör den här åtgärden från ditt Automation-konto med hjälp av autentiseringsuppgifter under Delade resurser. Se Autentiseringstillgångar i Azure Automation.

Skapa autentiseringstillgången med Windows PowerShell

För att förbereda en ny tillgång för autentiseringsuppgifter i Windows PowerShell skapar skriptet först ett PSCredential objekt med det tilldelade användarnamnet och lösenordet. Skriptet använder sedan det här objektet för att skapa tillgången via ett anrop till cmdleten New-AzureAutomationCredential . Du kan också anropa cmdleten Get-Credential för att uppmana användaren att ange ett namn och lösenord. Se Autentiseringstillgångar i Azure Automation.

Hantera Azure-resurser från en Azure Automation-runbook

Du kan hantera Azure-resurser från Azure Automation-runbooks med hjälp av autentiseringstillgången. Nedan visas ett exempel på en PowerShell-runbook som samlar in den autentiseringstillgång som ska användas för att stoppa och starta virtuella datorer i en Azure-prenumeration. Den här runbooken använder Get-AutomationPSCredential först för att hämta autentiseringsuppgifterna som ska användas för att autentisera till Azure. Den anropar sedan cmdleten Anslut-AzAccount för att ansluta till Azure med hjälp av autentiseringsuppgifterna.

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

Nästa steg