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.
- Crear la identidad administrada por el sistema de la cuenta de Automation y usarla para autenticarse.
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
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.