Solucionar problemas de identidade gerenciada da Automação do Azure

Este artigo aborda soluções para problemas que você pode encontrar ao usar uma identidade gerenciada com a Conta de automação. Confira informações gerais sobre o uso da identidade gerenciada com Contas de automação em Visão geral da autenticação da conta de Automaçã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)

Causa

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

Resolução

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

Cenário: a identidade gerenciada em um runbook não pode ser autenticada no Azure

Problema

Ao usar uma identidade gerenciada no 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)

Causa

Isso pode ocorrer quando:

  • Causa 1: você usa a identidade gerenciada do sistema da conta de Automação, que ainda não foi criada, e Code Connect-AzAccount -Identity tenta se autenticar no Azure e executar um runbook no Azure ou em um Hybrid Runbook Worker.

  • Causa 2: a conta de Automação tem uma identidade gerenciada pelo usuário atribuída e não uma identidade gerenciada do sistema e Code Connect-AzAccount -Identity tenta se autenticar no Azure e executar um runbook em um Hybrid Runbook Worker da máquina virtual do Azure usando a identidade gerenciada do sistema da VM do Azure.

Resolução

  • Resolução 1: você precisa criar a identidade gerenciada do sistema da conta de Automação e permitir a ela acesso aos recursos do Azure.

  • Resolução 2: de acordo com seus requisitos, você pode:

    • Criar a identidade gerenciada do sistema da conta de Automação e usá-la para se autenticar.
      ou
    • Excluir a identidade gerenciada atribuída pelo usuário da conta de Automação.

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

Problema

Você deseja adicionar uma identidade gerenciada atribuída pelo usuário à conta de Automação. No entanto, você não consegue encontrar a conta na folha Automação.

Causa

Esse problema ocorre quando você não tem as permissões a seguir na identidade gerenciada atribuída pelo usuário para vê-la na folha Automação.

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

Observação

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

Resolução

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

Cenário: ocorreu uma falha no runbook com a mensagem de erro "this.Client.SubscriptionId cannot be null".

Problema

Seu runbook que usa uma identidade gerenciada Connect-AzAccount -Identity, que tenta gerenciar os objetos do Azure, não funciona com sucesso e registra 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

Causa

Isso pode acontecer quando a Identidade Gerenciada (ou outra conta usada no runbook) não recebeu nenhuma permissão para acessar a assinatura.

Resolução

Conceda à Identidade Gerenciada (ou outra conta usada no runbook) uma associação de função apropriada na assinatura. Saiba mais

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

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

Cenário: falha ao obter o token MSI da conta

Problema

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

Causa

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 pelo sistema para sua conta de Automação. Então, use a identidade gerenciada atribuída pelo usuário.

Cenário: falha ao tentar usar a identidade gerenciada com a Conta de automação

Problema

Ao tentar trabalhar com identidades gerenciadas em sua conta de automação, você encontrará 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

Causa

A causa mais comum para isso é que você não habilitou a identidade antes de tentar usá-la. Para verificar isso, execute o runbook do PowerShell a seguir na Conta de automaçã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 for que você não habilitou a identidade antes de tentar usá-la, você verá um resultado semelhante a este:

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

Resolução

Você deve habilitar uma identidade para sua Conta de automação antes de poder usar o serviço de identidade gerenciada. Consulte Habilitar uma identidade gerenciada para a conta de Automação do Azure

Próximas etapas

Se este artigo não conseguiu resolver seu problema, visite um dos seguintes canais para obter mais suporte:

  • Obtenha respostas de especialistas do Azure nos Fóruns do Azure.
  • Conecte-se ao @AzureSupport. Esta é a conta oficial do Microsoft Azure para conectar-se aos recursos certos de respostas, suporte e especialistas da comunidade do Azure.
  • Registrar um incidente de suporte do Azure. Acesse o site de suporte do Azure e selecione Obter suporte.