Condividi tramite


Usare Microsoft Entra ID per eseguire l'autenticazione in Azure

Il servizio Microsoft Entra ID consente di eseguire una serie di attività amministrative, ad esempio la gestione degli utenti e del dominio e la configurazione dell'accesso Single Sign-On. Questo articolo descrive come usare Microsoft Entra ID in Automazione di Azure come provider per l'autenticazione in Azure.

Installare i moduli per Microsoft Entra

È possibile abilitare Microsoft Entra ID tramite i moduli di PowerShell seguenti:

  • Azure Active Directory PowerShell per Graph. Azure Automation è fornito con il modulo Az. La funzionalità include l'autenticazione non interattiva in Azure tramite l'autenticazione basata su credenziali dell'utente di Microsoft Entra (OrgId). Vedere Azure AD 2.0.2.182.

  • Microsoft Entra ID per Windows PowerShell. Questo modulo consente le interazioni con Microsoft Online, incluso Microsoft 365.

Installare il supporto per PSCredential

Azure Automation uses the PSCredential class to represent a credential asset. Gli script recuperano gli oggetti PSCredential tramite il cmdlet Get-AutomationPSCredential. Per altre informazioni, vedere Asset di credenziali in Automazione di Azure.

Assegnare un amministratore della sottoscrizione

È necessario assegnare un amministratore per la sottoscrizione di Azure. Tale persona ha il ruolo di proprietario per l'ambito della sottoscrizione. Vedere Controllo degli accessi in base al ruolo in Automazione di Azure

Cambiare la password dell'utente di Microsoft Entra

Per cambiare la password dell'utente di Microsoft Entra:

  1. Disconnettersi da Azure.

  2. Chiedere all'amministratore di accedere ad Azure come utente di Microsoft Entra (appena creato), usando il nome utente completo, incluso il dominio, e una password temporanea.

  3. Chiedere all'amministratore di modificare la password, quando richiesto.

Configurare Automazione di Azure per gestire la sottoscrizione di Azure

Per consentire la comunicazione tra Automazione di Azure e Microsoft Entra ID, è necessario recuperare le credenziali associate alla connessione di Azure a Microsoft Entra ID. Esempi di tali credenziali sono l'ID tenant, l'ID sottoscrizione e il tipo. Per altre informazioni sulla connessione tra Azure e Microsoft Entra ID, vedere Connettere l'organizzazione a Microsoft Entra ID.

Creare un asset di credenziali

Con le credenziali di Azure per Microsoft Entra disponibili, è il momento di creare un asset di credenziali di Automazione di Azure per archiviare in modo sicuro le credenziali di Microsoft Entra in modo che i runbook e gli script DSC (Desidered State Configuration) possano accedervi. Questa operazione può essere eseguita nel portale di Azure o usando cmdlet di PowerShell.

Creare l'asset di credenziali nel portale di Azure

È possibile usare la portale di Azure per creare l'asset di credenziali. Do this operation from your Automation account using Credentials under Shared Resources. Vedere Asset di credenziali in Automazione di Azure

Creare l'asset di credenziali con Windows PowerShell

Per preparare un nuovo asset di credenziali in Windows PowerShell, lo script crea prima un oggetto PSCredential usando il nome utente e la password assegnati. The script then uses this object to create the asset through a call to the New-AzureAutomationCredential cmdlet. Alternatively, the script can call the Get-Credential cmdlet to prompt the user to type in a name and password. Vedere Asset di credenziali in Automazione di Azure

Gestire le risorse di Azure da un runbook di automazione di Azure

È possibile gestire le risorse di Azure da runbook di Automazione di Azure usando l'asset di credenziali. Di seguito è riportato un esempio di runbook di PowerShell che raccoglie l'asset di credenziali da usare per arrestare e avviare le macchine virtuali in una sottoscrizione di Azure. Tale runbook usa prima di tutto Get-AutomationPSCredential per recuperare le credenziali da usare per l'autenticazione in Azure. It then calls the Connect-AzAccount cmdlet to connect to Azure using the credential.

Workflow Workflowname
{ 
    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
        } 
    } 
}

Uso di Microsoft Graph con PowerShell

Vedere Introduzione a Microsoft Graph PowerShell SDK

Next steps