Compartilhar via


Usar o Microsoft Entra ID para autenticar no Azure

O serviço Microsoft Entra ID permite uma série de tarefas administrativas, como gerenciamento de usuários, gerenciamento de domínio e configuração de logon único. Este artigo descreve como usar o Microsoft Entra ID na Automação do Azure como o provedor para autenticação no Azure.

Instalar os módulos do Microsoft Entra

É possível habilitar o Microsoft Entra ID por meio dos seguintes módulos do PowerShell:

  • PowerShell do Azure Active Directory para Graph. O Azure Automation vem com o módulo Az. A funcionalidade inclui autenticação não interativa para o Azure usando a autenticação baseada em credencial do usuário do Microsoft Entra (OrgId). Consulte Azure AD 2.0.2.182.

  • Microsoft Entra ID para Windows PowerShell. Este módulo permite interações com a Microsoft Online, incluindo o Microsoft 365.

Suporte de instalação para PSCredential

A Automação do Azure usa a classe PSCredential para representar um ativo de credencial. Seus scripts recuperam objetos PSCredential usando o cmdlet Get-AutomationPSCredential. Para obter mais informações, veja Ativos de credencial na Automação do Azure.

Atribuir um administrador de assinatura

Você deve atribuir um administrador para a assinatura do Azure. Essa pessoa tem a função de proprietário no escopo da assinatura. Veja Controle de acesso com base em função na Automação do Azure.

Alterar a senha do usuário do Microsoft Entra

Para alterar a senha do usuário do Microsoft Entra:

  1. Faça logoff do Azure.

  2. Peça para o administrador fazer logon no Azure como o usuário do Microsoft Entra recém-criado, usando o nome de usuário completo (incluindo o domínio) e uma senha temporária.

  3. Peça para o administrador mudar a senha quando solicitado.

Configurar a Automação do Azure para gerenciar a assinatura do Azure

Para que a Automação do Azure se comunique com o Microsoft Entra ID, é preciso recuperar as credenciais associadas à conexão do Azure com o Microsoft Entra ID. Exemplos dessas credenciais são ID de locatário, ID da assinatura e similares. Para obter mais informações sobre a conexão entre o Azure e o Microsoft Entra ID, veja Conectar sua organização ao Microsoft Entra ID.

Cria um ativo de credencial

Com as credenciais do Azure para o Microsoft Entra disponíveis, é hora de criar um ativo de credencial de Automação do Azure para armazenar com segurança as credenciais do Microsoft Entra para que os runbooks e os scripts de Desired State Configuration (DSC) possam acessá-las. Faça isso usando o portal do Azure ou cmdlets do PowerShell.

Criar o ativo de credencial no portal do Azure

É possível usar o portal do Azure para criar o ativo de credencial. Execute esta operação em sua conta de Automação usando Credenciais em Recursos Compartilhados. Veja Ativos de credenciais na Automação do Azure.

Criar o ativo de credencial com o Windows PowerShell

Para preparar um novo ativo de credencial no Windows PowerShell, seu script cria primeiro um objeto PSCredential usando o nome de usuário e a senha atribuídos. Em seguida, o script usa esse objeto para criar o ativo por meio de uma chamada para o cmdlet New-AzureAutomationCredential. Como alternativa, o script pode chamar o cmdlet Get-Credential para solicitar que o usuário digite um nome e uma senha. Veja Ativos de credenciais na Automação do Azure.

Gerenciar recursos do Azure a partir de um runbook de Automação do Azure

É possível gerenciar recursos do Azure a partir de runbooks de Automação do Azure usando o ativo de credencial. Veja abaixo um exemplo de runbook do PowerShell que coleta o ativo de credencial a ser usado para parar e iniciar máquinas virtuais em uma assinatura do Azure. Esse runbook usa primeiro Get-AutomationPSCredential para recuperar a credencial a ser usada para autenticar no Azure. Em seguida, ele chama o cmdlet Connect-AzAccount para se conectar ao Azure usando a credencial.

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

Usando o Microsoft Graph com o PowerShell

Confira Introdução ao SDK do Microsoft Graph PowerShell

Próximas etapas