Como usar identidades gerenciadas para recursos do Azure em uma VM do Azure para entrada

Identidades gerenciadas para recursos do Azure é um recurso do Azure Active Directory. Cada um dos serviços do Azure que dão suporte a identidades gerenciadas para recursos do Azure está sujeito à própria linha do tempo. Não deixe de examinar o status de disponibilidade das identidades gerenciadas do seu recurso e os problemas conhecidos antes de começar.

Este artigo fornece exemplos de script do PowerShell e da CLI para entrada usando identidades gerenciadas para a entidade de serviço de recursos do Azure e orientação sobre tópicos importantes, como tratamento de erros.

Observação

Recomendamos que você use o módulo Az PowerShell do Azure para interagir com o Azure. Confira Instalar o Azure PowerShell para começar. Para saber como migrar para o módulo Az PowerShell, confira Migrar o Azure PowerShell do AzureRM para o Az.

Pré-requisitos

  • Se você não estiver familiarizado com as identidades gerenciadas para funcionalidades de recursos do Azure, veja esta visão geral. Caso você ainda não tenha uma conta do Azure, inscreva-se em uma conta gratuita antes de continuar.

Se você planeja usar os exemplos do Azure PowerShell ou da CLI do Azure neste artigo, instale a versão mais recente do Azure PowerShell ou da CLI do Azure.

Importante

Visão geral

Identidades gerenciadas para recursos do Azure fornecem um objeto principal de serviço, que é criado ao habilitar identidades gerenciadas para recursos do Azure na VM. A entidade de serviço pode receber acesso aos recursos do Azure e pode ser usada como uma identidade pelos clientes de script/linha de comando para conexão e acesso aos recursos. Tradicionalmente, para acessar recursos protegidos em sua própria identidade, um cliente de script precisa:

  • estar registrado e ter o consentimento do Azure AD como um aplicativo cliente Web/confidencial
  • entrar com sua entidade de serviço, usando as credenciais do aplicativo (que estão provavelmente inseridas no script)

Com as identidades gerenciadas dos recursos do Azure, seu cliente de script não precisa mais fazer nada, pois pode entrar nas identidades gerenciadas do objeto principal do serviço de recursos do Azure.

CLI do Azure

O script a seguir demonstra como:

  1. Entrar no Azure AD sob a identidade da VM gerenciado para entidade de serviço de recursos do Azure

  2. Chamar o Azure Resource Manager e obter a ID da entidade de serviço da VM. A CLI cuida do gerenciamento de uso/aquisição de token para você automaticamente. Substitua o nome da máquina virtual para <VM-NAME>.

    az login --identity
    
    $spID=$(az resource list -n <VM-NAME> --query [*].identity.principalId --out tsv)
    echo The managed identity for Azure resources service principal ID is $spID
    

Azure PowerShell

O script a seguir demonstra como:

  1. Entrar no Azure AD sob a identidade da VM gerenciado para entidade de serviço de recursos do Azure

  2. Chamar um cmdlet do Azure Resource Manager para obter informações sobre a VM. O PowerShell cuida do gerenciamento de uso de token para você automaticamente.

    Add-AzAccount -identity
    
    # Call Azure Resource Manager to get the service principal ID for the VM's managed identity for Azure resources. 
    $vmInfoPs = Get-AzVM -ResourceGroupName <RESOURCE-GROUP> -Name <VM-NAME>
    $spID = $vmInfoPs.Identity.PrincipalId
    echo "The managed identity for Azure resources service principal ID is $spID"
    

IDs de recurso para serviços do Azure

Consulte Serviços do Azure que dão suporte à autenticação do Azure AD para obter uma lista de recursos que dão suporte ao Azure AS e foram testados com identidades gerenciadas para recursos do Azure e as respectivas IDs do recurso.

Diretrizes sobre tratamento de erro

Respostas como a seguinte podem indicar que a identidade gerenciada da VM para recursos do Azure não foi configurada corretamente:

  • PowerShell: Invoke-WebRequest: não é possível conectar-se ao servidor remoto
  • CLI: MSI: falha ao recuperar um token de http://localhost:50342/oauth2/token com um erro de 'HTTPConnectionPool(host='localhost', port=50342)

Se você receber um desses erros, retorne à VM do Azure na portal do Azure e vá para a página Identidade e verifique se o sistema atribuído está definido como "Sim".

Próximas etapas