Compartir vía


Solución de problemas de identidades administradas de Azure Automation

En este artículo se describen soluciones para los problemas que pueden surgir al usar una identidad administrada con la cuenta de Automation. Para información general sobre el uso de identidades administradas con cuentas de Automation, consulte Introducción a la autenticación de cuentas de Azure Automation.

Escenario: Se produce un error en el runbook con una identidad administrada asignada por el sistema con un mensaje de error 400

Problema

El runbook con la identidad administrada asignada por el sistema produce un error como unable to acquire for tenant organizations with error ManagedIdentityCredential authentication failed. Managed System Identity not found! Status 400 (Bad Request)

Causa

No ha asignado permisos después de crear la identidad administrada asignada por el sistema.

Solución

Asegúrese de asignar los permisos adecuados para la identidad administrada asignada por el sistema. Utilización de una identidad administrada asignada por el sistema para la cuenta de Azure Automation

Escenario: La identidad administrada de un runbook no se puede autenticar en Azure

Problema

Al usar una identidad administrada en el runbook, recibirá un error similar a: connect-azaccount : ManagedIdentityCredential authentication failed: Failed to get MSI token for account d94c0db6-5540-438c-9eb3-aa20e02e1226 and resource https://management.core.windows.net/. Status: 500 (Internal Server Error)

Causa

Se puede producir en los casos siguientes:

  • Causa 1: se ha utilizado la identidad administrada por el sistema de la cuenta de Automation, que aún no se ha creado, y Code Connect-AzAccount -Identity intenta autenticarse en Azure y ejecutar un runbook en Azure o en una instancia de Hybrid Runbook Worker.

  • Causa 2: la cuenta de Automation tiene asignada una identidad administrada por el usuario y no una identidad administrada por el sistema, y Code Connect-AzAccount -Identity intenta autenticarse en Azure y ejecutar un runbook en una máquina virtual de Azure Hybrid Runbook Worker mediante la identidad administrada por el sistema de máquina virtual de Azure.

Solución

  • Resolución 1: debe crear la identidad administrada por el sistema de la cuenta de Automation y concederle acceso a los recursos de Azure.

  • Resolución 2: según sean sus requisitos, puede:

    • Crear la identidad administrada por el sistema de la cuenta de Automation y usarla para autenticarse.
      O bien
    • Eliminar la identidad administrada asignada por el usuario para una cuenta de Azure Automation.

Escenario: No se puede encontrar la identidad administrada asignada por el usuario para agregarla a la cuenta de Automation

Problema

Desea agregar una identidad administrada asignada por el usuario a la cuenta de Automation. Sin embargo, no puede encontrar la cuenta en la hoja de Automation.

Causa

Este problema se produce cuando no tiene los permisos siguientes para la identidad administrada asignada por el usuario para poder verla en la hoja de Automation.

  • Microsoft.ManagedIdentity/userAssignedIdentities/*/read
  • Microsoft.ManagedIdentity/userAssignedIdentities/*/assign/action

Nota:

Los permisos anteriores se conceden de forma predeterminada al operador de identidad administrada y al colaborador de identidad administrada.

Solución

Asegúrese de que tiene el permiso de rol operador de identidad para agregar la identidad administrada asignada por el usuario a la cuenta de Automation.

Escenario: se produce un error en el runbook con el mensaje de error "this.Client.SubscriptionId no puede ser null".

Problema

El runbook con una identidad administrada Connect-AzAccount -Identity que intenta administrar objetos de Azure no funciona correctamente y registra el siguiente error: this.Client.SubscriptionId cannot be null.

get-azvm : 'this.Client.SubscriptionId' cannot be null. At line:5 char:1 + get-azvm + ~~~~~~~~ + CategoryInfo : CloseError: (:) [Get-AzVM], ValidationException + FullyQualifiedErrorId : Microsoft.Azure.Commands.Compute.GetAzureVMCommand

Causa

Esto puede ocurrir cuando no se ha concedido ningún permiso a la identidad administrada (u otra cuenta usada en el runbook) para acceder a la suscripción.

Solución

Conceda a la identidad administrada (u otra cuenta usada en el runbook) una pertenencia a roles adecuada en la suscripción. Más información

 Captura de pantalla que muestra la asignación de roles de Azure.

Captura de pantalla que muestra cómo agregar la asignación de roles.

Escenario: no se puede obtener el token de MSI para la cuenta

Problema

Al trabajar con una identidad administrada asignada por el usuario en la cuenta de Automation, recibe un error similar al siguiente: Failed to get MSI token for account a123456b-1234-12a3-123a-aa123456aa0b.

Causa

Usar una identidad administrada asignada por el usuario antes de habilitar una identidad administrada asignada por el sistema para la cuenta de Automation.

Solución

Habilite una identidad administrada asignada por el sistema para la cuenta de Automation. A continuación, utilice la identidad administrada asignada por el usuario.

Escenario: Se produce un error al intentar usar la identidad administrada con la cuenta de Automation

Problema

Al intentar trabajar con identidades administradas en la cuenta de Automation, se produce un error como el siguiente:

Connect-AzureRMAccount : An error occurred while sending the request. At line:2 char:1 + Connect-AzureRMAccount -Identity + 
CategoryInfo : CloseError: (:) [Connect-AzureRmAccount], HttpRequestException + FullyQualifiedErrorId : Microsoft.Azure.Commands.Profile.ConnectAzureRmAccountCommand

Causa

La causa más común es que no haya habilitado la identidad antes de intentar usarla. Para comprobarlo, ejecute el siguiente runbook de PowerShell en la cuenta de Automation afectada.

$resource= "?resource=https://management.azure.com/"
$url = $env:IDENTITY_ENDPOINT + $resource
$Headers = New-Object "System.Collections.Generic.Dictionary[[String],[String]]"
$Headers.Add("X-IDENTITY-HEADER", $env:IDENTITY_HEADER)
$Headers.Add("Metadata", "True")

try
{
    $Response = Invoke-RestMethod -Uri $url -Method 'GET' -Headers $Headers
}
catch
{
    $StatusCode = $_.Exception.Response.StatusCode.value__
    $stream = $_.Exception.Response.GetResponseStream()
    $reader = New-Object System.IO.StreamReader($stream)
    $responseBody = $reader.ReadToEnd()
    
    Write-Output "Request Failed with Status: $StatusCode, Message: $responseBody"
}

Si el problema era ese, debería ver un resultado similar al siguiente:

Request Failed with Status: 400, Message: {"Message":"No managed identity was found for Automation account xxxxxxxxxxxx"}

Solución

Antes de poder usar el servicio de identidad administrada, debe habilitar una identidad para la cuenta de Automation. Consulte Habilitación de una identidad administrada para la cuenta de Azure Automation.

Pasos siguientes

Si en este artículo no se resuelve la incidencia, pruebe uno de los canales siguientes para obtener ayuda adicional:

  • Obtenga respuestas de expertos de Azure en los foros de Azure.
  • Conéctese con @AzureSupport. Se trata de la cuenta oficial de Microsoft Azure para conectar a la comunidad de Azure con los recursos adecuados: respuestas, soporte técnico y expertos.
  • Registrar un incidente de soporte técnico de Azure. Vaya al sitio de Soporte técnico de Azure y seleccione Obtener soporte técnico.