Resolver problemas de identidade gerida no Automatização do Azure

Este artigo discute soluções para problemas que você pode encontrar ao usar uma identidade gerenciada com sua conta de automação. Para informações gerais sobre o uso de identidade gerenciada com contas de Automação, consulte visão geral de autenticação da conta do Automatização do Azure.

Cenário: Runbook com identidade gerenciada atribuída ao sistema falha com mensagem de erro 400

Problema

Runbook com identidade gerenciada atribuída ao sistema falha com o erro como unable to acquire for tenant organizations with error ManagedIdentityCredential authentication failed. Managed System Identity not found! Status 400 (Bad Request)

Motivo

Você não atribuiu permissões depois de criar a identidade gerenciada atribuída ao sistema.

Resolução

Certifique-se de atribuir as permissões apropriadas para a identidade gerenciada atribuída ao sistema. Usando uma identidade gerida atribuída pelo sistema para uma conta Automatização do Azure

Cenário: Identidade gerida num Runbook não pode autenticar-se contra o Azure

Problema

Ao usar uma Identidade Gerenciada em seu runbook, você recebe um erro como: 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)

Motivo

Isto pode acontecer quando:

  • Cause 1: Utiliza-se a Identidade Gerida do Sistema de Conta de Automação, que ainda não foi criada, e o Code Connect-AzAccount -Identity tenta autenticar-se a Azure e correr um runbook em Azure ou num Hybrid Runbook Worker.

  • Causa 2: A conta de Automação tem uma identidade gerida pelo Utilizador atribuída e não uma Identidade Gerida do Sistema e o - Code Connect-AzAccount -Identity tenta autenticar-se a Azure e executar um runbook numa máquina virtual Azure Hybrid Runbook Worker usando a Azure VM System Managed Identity.

Resolução

  • Resolução 1: Deve criar a Identidade Gerida do Sistema de Conta de Automação e conceder-lhe acesso aos Recursos Azure.

  • Resolução 2: Conforme apropriado para suas necessidades, você pode:

    • Crie a Identidade Gerenciada do Sistema de Conta de Automação e use-a para autenticar.
      Ou
    • Exclua a identidade gerenciada atribuída ao usuário da conta de automação.

Cenário: Não é possível localizar a identidade gerenciada atribuída ao usuário para adicioná-la à conta de automação

Problema

Pretende adicionar uma identidade gerida atribuída pelo utilizador à Conta de Automação. No entanto, não é possível encontrar a conta no painel de Automatização.

Motivo

Este problema ocorre quando não tem as seguintes permissões para a identidade gerida atribuída a utilizadores para vê-la no painel de Automação.

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

Nota

As permissões acima são concedidas por padrão ao Operador de Identidade Gerenciada e ao Colaborador de Identidade Gerenciada.

Resolução

Verifique se você tem permissão para a função Operador de Identidade para adicionar a identidade gerenciada atribuída pelo usuário à sua conta de Automação.

Cenário: Runbook falha com a mensagem de erro "this.Client.SubscriptionId cannot be null."

Problema

O seu runbook, utilizando uma identidade gerida com o comando Connect-AzAccount -Identity que tenta gerir objetos do Azure, não funciona corretamente e regista o seguinte erro - 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

Motivo

Isto pode acontecer quando a Identidade Gerida (ou outra conta usada no runbook) não recebeu quaisquer permissões para aceder à subscrição.

Resolução

Conceda à Identidade Gerida (ou a outra conta utilizada no runbook) uma atribuição de função adequada na subscrição. Mais informações

 Captura de ecrã que mostra a atribuição de funções do Azure.

Captura de tela que mostra como adicionar atribuição de função.

Cenário: Falha ao obter o token MSI para a conta

Problema

Ao trabalhar com uma identidade gerenciada atribuída pelo usuário em sua conta de automação, você recebe um erro semelhante a: Failed to get MSI token for account a123456b-1234-12a3-123a-aa123456aa0b.

Motivo

Usando uma identidade gerenciada atribuída pelo usuário antes de habilitar uma identidade gerenciada atribuída pelo sistema para sua conta de automação.

Resolução

Habilite uma identidade gerenciada atribuída ao sistema para sua conta de automação. E, em seguida, utilize a identidade gerida atribuída pelo utilizador.

Cenário: Falha na tentativa de usar a identidade gerida com a conta de automatização

Problema

Quando tenta trabalhar com identidades geridas na sua conta de Automatização, encontra um erro como este:

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

Motivo

A causa mais comum é não ter ativado a identidade antes de a tentar usar. Para verificar isto, execute o seguinte runbook do PowerShell na conta de Automatização afetada.

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

Se o problema estiver em não ter ativado a identidade antes de tentar usá-la, verá um resultado semelhante a este:

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

Resolução

Precisa de ativar uma identidade para a sua conta de Automação antes de poder usar o serviço de identidade gerida. Consulte Ative uma identidade gerida para a sua conta Automatização do Azure

Próximos passos

Se este artigo não resolver o problema, tente um dos seguintes canais para obter suporte adicional: