Usar uma identidade gerenciada atribuída pelo sistema da VM do Windows para acessar o Resource Manager

Identidades gerenciadas para recursos do Azure é um recurso do Microsoft Entra ID. 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 tutorial mostra como acessar a API do Azure Resource Manager usando uma máquina virtual do Windows com a identidade gerenciada atribuída pelo sistema habilitada. As identidades gerenciadas para recursos do Azure são gerenciadas automaticamente pelo Azure e permitem a você autenticar os serviços que dão suporte à autenticação do Microsoft Entra sem necessidade de inserir as credenciais em seu código. Você aprenderá como:

  • Conceder o acesso da VM a um Grupo de Recursos no Azure Resource Manager
  • Obter um token de acesso usando a identidade da máquina virtual e usá-la para chamar o Azure Resource Manager

Pré-requisitos

Habilitar

Habilitar uma identidade gerenciada atribuída pelo sistema é uma experiência de um clique. Você pode habilitá-la durante a criação de uma VM ou nas propriedades de uma VM existente.

Screenshot shows the System assigned tab for a virtual machine where you can turn on the System assigned status.

Para habilitar a identidade gerenciada atribuída pelo sistema em uma nova VM:

  1. Entre no Portal do Azure

  2. Criar uma máquina virtual com identidade atribuída pelo sistema habilitada

Conceder acesso a um Grupo de Recursos no Azure Resource Manager para sua VM

Dica

As etapas neste artigo podem variar ligeiramente com base no portal do qual você começa.

Usando as identidades gerenciadas para recursos do Azure, seu aplicativo pode obter tokens de acesso para se autenticar nos recursos que dão suporte à autenticação do Microsoft Entra. A API do Azure Resource Manager oferece suporte à autenticação do Microsoft Entra. Permitimos o acesso de identidade desta VM a um recurso no Azure Resource Manager, neste caso, um grupo de recursos. Atribuímos a função Leitor à identidade gerenciada no escopo do grupo de recursos.

  1. Entre no Portal do Azure com sua conta de administrador.
  2. Navegue até a guia para Grupos de Recursos.
  3. Selecione o Grupo de recursos que deseja conceder acesso à identidade gerenciada da VM.
  4. No painel esquerdo, selecione Controle de acesso (IAM).
  5. Selecione Adicionar e selecione Adicionar atribuição de função.
  6. Na guia Função, selecione Leitor. Essa função permite exibir todos os recursos, mas não permite que você faça alterações.
  7. Na guia Membros, para Atribuir acesso a, selecione Identidade gerenciada. Em seguida, escolha + Selecionar membros.
  8. Certifique-se de que a assinatura correta esteja listada na lista suspensa Assinatura. E para Grupo de Recursos, selecione Todos os grupos de recursos.
  9. Para a lista suspensa Gerenciar identidade, selecione Máquina virtual.
  10. Por fim, em Selecionar, escolha sua Máquina Virtual do Windows na lista suspensa e escolha Salvar.

Obter um token de acesso usando a identidade gerenciada atribuída pelo sistema da VM e usá-lo para chamar o Azure Resource Manager

Você precisará usar o PowerShell nesta parte. Se você não tiver o PowerShell instalado, baixe-o aqui.

  1. No portal, navegue até Máquinas Virtuais e vá para a máquina virtual do Windows; em Visão geral, clique em Conectar.

  2. Insira o seu Nome de usuário e Senha que você adicionou quando criou a VM do Windows.

  3. Agora que você criou uma Conexão de Área de Trabalho Remota com a máquina virtual, abra o PowerShell na sessão remota.

  4. Usando o cmdlet Invoke-WebRequest, faça uma solicitação para a identidade gerenciada local do ponto de extremidade de recursos do Azure para obter um token de acesso para o Azure Resource Manager.

       $response = Invoke-WebRequest -Uri 'http://169.254.169.254/metadata/identity/oauth2/token?api-version=2018-02-01&resource=https://management.azure.com/' -Method GET -Headers @{Metadata="true"}
    

    Observação

    O valor do parâmetro “resource” precisa ser uma correspondência exata do que é esperado pela ID do Microsoft Entra. Ao usar a ID de recurso do Azure Resource Manager, você deve incluir a barra à direita no URI.

    Em seguida, extraia a resposta completa, que é armazenada como uma cadeia de caracteres JSON (JavaScript Object Notation) formatada no objeto $response.

    $content = $response.Content | ConvertFrom-Json
    

    Em seguida, extraia o token de acesso da resposta.

    $ArmToken = $content.access_token
    

    Por fim, chame o Azure Resource Manager usando o token de acesso. Neste exemplo, também estamos usando o cmdlet Invoke-WebRequest para fazer a chamada ao Azure Resource Manager e incluir o token de acesso no cabeçalho de Autorização.

    (Invoke-WebRequest -Uri https://management.azure.com/subscriptions/<SUBSCRIPTION ID>/resourceGroups/<RESOURCE GROUP>?api-version=2016-06-01 -Method GET -ContentType "application/json" -Headers @{ Authorization ="Bearer $ArmToken"}).content
    

    Observação

    A URL diferencia maiúsculas de minúsculas, portanto, verifique se você está usando letras maiúsculas e minúsculas exatamente da mesma forma que você usou anteriormente ao nomear o Grupo de Recursos e a letra maiúscula "G" em "resourceGroups".

    O comando a seguir retorna os detalhes do Grupo de Recursos:

    {"id":"/subscriptions/98f51385-2edc-4b79-bed9-7718de4cb861/resourceGroups/DevTest","name":"DevTest","location":"westus","properties":{"provisioningState":"Succeeded"}}
    

Próximas etapas

Neste início rápido, você aprendeu a usar uma identidade gerenciada atribuída pelo sistema para acessar a API do Azure Resource Manager. Para saber mais sobre o Azure Resource Manager, confira: