Uso del Microsoft Entra ID para autenticarse en Azure

El servicio Microsoft Entra ID habilita varias tareas administrativas, como la administración de usuarios, la administración de dominios y la configuración de inicio de sesión único. En este artículo se describe cómo usar Microsoft Entra ID en Azure Automation como proveedor para la autenticación en Azure.

Instalación de módulos de Microsoft Entra

Puede habilitar Microsoft Entra ID a través de los siguientes módulos de PowerShell:

  • Azure Active Directory PowerShell para Graph (módulos AzureRM y Az). Azure Automation incluye el módulo AzureRM y su actualización reciente, el módulo Az. La funcionalidad incluye la autenticación no interactiva en Azure mediante la autenticación basada en credenciales de usuario (OrgId) de Microsoft Entra. Consulte Microsoft Entra ID 2.0.2.76.

  • Microsoft Entra ID para Windows PowerShell (módulo MSOnline). Este módulo habilita las interacciones con Microsoft Online, incluido Microsoft 365.

Nota:

PowerShell Core no es compatible con el módulo MSOnline. Para usar los cmdlets de módulo, debe ejecutarlos desde Windows PowerShell. Se recomienda usar la versión más reciente de los módulos de Azure Active Directory PowerShell para Graph en lugar del módulo MSOnline.

Nota:

Los módulos de PowerShell de Azure AD y MSOnline están en desuso a partir del 30 de marzo de 2024. Para obtener más información, lea la actualización de desuso. Después de esta fecha, la compatibilidad con estos módulos se limita a la asistencia de migración al SDK de PowerShell de Microsoft Graph y a las correcciones de seguridad. Los módulos en desuso seguirán funcionando hasta marzo de 30 2025.

Se recomienda migrar a PowerShell de Microsoft Graph para interactuar con Microsoft Entra ID (anteriormente Azure AD). Para preguntas comunes sobre la migración, consulte las Preguntas más frecuentes sobre la migración. Nota: versiones 1.0.x de MSOnline pueden experimentar interrupciones después del 30 de junio de 2024.

Preinstalación

Antes de instalar los módulos de Microsoft Entra en el equipo:

  • Desinstale todas las versiones anteriores del módulo AzureRM/Az y del módulo MSOnline.

  • Desinstale el Ayudante para el inicio de sesión de Microsoft Online Services para garantizar el correcto funcionamiento de los nuevos módulos de PowerShell.

Instalación de los módulos AzureRM y Az

Nota:

Para trabajar con estos módulos, debe usar la versión de PowerShell 5.1 o posterior con una versión de Windows de 64 bits.

  1. Instale Windows Management Framework (WMF) 5.1. Consulte Instalación y configuración de WMF 5.1.

  2. Instale AzureRM o Az. Para ello, siga las instrucciones del artículo Instalación de Azure PowerShell en Windows con PowerShellGet.

Instalación del módulo MSOnline

Nota:

Para instalar el módulo MSOnline, debe ser miembro de un rol de administrador. Consulte Acerca de los roles de administrador.

  1. Asegúrese de que la característica Microsoft .NET Framework 3.5.x está habilitada en el equipo. Probablemente el equipo tiene instalada una versión más reciente, pero se puede habilitar o deshabilitar la compatibilidad con versiones anteriores de .NET Framework.

  2. Instale la versión de 64 bits del Ayudante para el inicio de sesión de Microsoft Online Services.

  3. Ejecute Windows PowerShell como administrador para crear un símbolo del sistema de Windows PowerShell con privilegios elevados.

  4. Implemente Microsoft Entra ID desde MSOnline 1.0.

  5. Si se le pide que instale el proveedor de NuGet, escriba Y (Sí) y presione Entrar.

  6. Si se le pide que instale el módulo de PSGallery, escriba Y (Sí) y presione Entrar.

Instalación de la compatibilidad con PSCredential

Azure Automation usa la clase PSCredential para representar un recurso de credencial. Los scripts recuperan los objetos PSCredential mediante el cmdlet Get-AutomationPSCredential. Para obtener más información, consulte Recursos de credenciales en Azure Automation.

Asignación de un administrador de suscripción

Debe asignar un administrador para la suscripción a Azure. Esta persona tiene el rol de propietario para el ámbito de la suscripción. Consulte Control de acceso basado en rol en Azure Automation.

Cambiar la contraseña del usuario de Microsoft Entra

Para cambiar la contraseña del usuario de Microsoft Entra:

  1. Cierre la sesión de Azure.

  2. Haga que el administrador inicie sesión en Azure como acaba de crear el usuario de Microsoft Entra, con el nombre de usuario completo (incluido el dominio) y una contraseña temporal.

  3. Pida al administrador que cambie la contraseña cuando se le solicite.

Configuración de Azure Automation para administrar la suscripción a Azure

Para que Azure Automation se comunique con el Microsoft Entra ID, debe recuperar las credenciales asociadas a la conexión de Azure a Microsoft Entra ID. Algunos ejemplos de estas credenciales son el id. de inquilino, el id. de suscripción y otras similares. Para obtener más información acerca de la conexión entre Azure y Microsoft Entra ID, consulte Conexión de la organización a Microsoft Entra ID.

Creación de un recurso de credencial

Con las credenciales de Azure para Microsoft Entra disponibles, es el momento de crear un recurso de credenciales de Azure Automation para almacenar de forma segura las credenciales de Microsoft Entra para que los runbooks y los scripts de Desire State Configuration (DSC) puedan acceder a ellas. Para ello, pueden usar Azure Portal o los cmdlets de PowerShell.

Creación del recurso de credencial en Azure Portal

Puede usar Azure Portal para crear el recurso de credencial. Realice esta operación desde la cuenta de Automation. Para ello, seleccione Credenciales en Recursos compartidos. Consulte Recursos de credenciales en Azure Automation.

Creación de un recurso de credencial con Windows PowerShell

Para preparar un nuevo recurso de credencial en Windows PowerShell, el script debe crear primero un objeto PSCredential con el nombre de usuario y la contraseña asignados. Después, el script usa este objeto para crear el recurso a través de una llamada al cmdlet New-AzureAutomationCredential. El script también podría llamar al cmdlet Get-Credential para solicitar al usuario que escriba un nombre y una contraseña. Consulte Recursos de credenciales en Azure Automation.

Administración de recursos de Azure desde un runbook de Azure Automation

Puede administrar los recursos de Azure desde los runbooks de Azure Automation mediante el recurso de credencial. A continuación se muestra un ejemplo de runbook de PowerShell que recopila al recurso de credencial que se usará para detener e iniciar máquinas virtuales en una suscripción a Azure. En primer lugar, este runbook usa Get-AutomationPSCredential para recuperar la credencial que se usará para autenticarse en Azure. A continuación, llama al cmdlet Connect-AzAccount para conectarse a Azure mediante la credencial.

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

Pasos siguientes