Tutorial: Usar uma identidade gerenciada atribuída pelo sistema da VM do Linux para acessar o Armazenamento do Azure

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 usar uma identidade gerenciada atribuída pelo sistema para uma VM (máquina virtual) do Linux para acessar o Armazenamento do Azure. Você aprenderá como:

  • Criar uma conta de armazenamento
  • Criar um contêiner de blobs em uma conta de armazenamento
  • Conceder acesso de Identidade Gerenciada de Linux VM em um contêiner de Armazenamento do Azure
  • Obter um token de acesso e usá-lo para chamar o Armazenamento do Azure

Prerequisites

Para executar os exemplos de script CLI neste tutorial, você tem duas opções:

Criar uma conta de armazenamento

Nesta seção, você criará uma conta de armazenamento.

  1. Selecione o botão Criar um recurso, localizado no canto superior esquerdo do portal do Azure.

  2. Clique em Armazenamento e, em seguida, Conta de armazenamento – blob, arquivo, tabela, fila.

  3. Sob Nome, insira um nome para a conta de armazenamento.

  4. Modelo de implantação e Tipo de conta devem ser definidos como Resource manager e Armazenamento (uso geral v1) .

  5. Verifique se a Assinatura e o Grupo de Recursos correspondem ao que você especificou quando criou sua VM na etapa anterior.

  6. Selecione Criar.

    Captura de tela mostrando a nova tela de criação da conta de armazenamento.

Criar um contêiner de blob e carregar um arquivo na conta de armazenamento

Arquivos exigem armazenamento de blobs, então é preciso criar um contêiner de blobs para armazenar o arquivo. Em seguida, você carrega um arquivo no contêiner de blobs na nova conta de armazenamento.

  1. Navegue de volta para sua conta de armazenamento criado recentemente.

  2. Em Serviço blob, selecione Contêineres.

  3. Selecione + Contêiner na parte superior da página.

  4. Em Novo contêiner, insira um nome para o contêiner e, sob Nível de acesso público, mantenha o valor padrão.

    Captura de tela mostrando a tela de criação do contêiner de armazenamento.

  5. Usando um editor de sua escolha, crie um arquivo denominado hello world.txt em seu computador local. Abra o arquivo e adicione o texto (sem as aspas) "Hello world! :)" e salve-o.

  6. Carregue o arquivo no contêiner recém-criado clicando no nome do contêiner, depois em Carregar

  7. No painel Carregar blob, em Arquivos, clique no ícone de pasta e navegue até o arquivo hello_world.txt em seu computador local, selecione o arquivo e clique em Carregar.

    Captura de tela mostrando a seção carregar arquivo de texto.

Conceder à sua VM acesso a um contêiner do Armazenamento do Azure

Você pode usar a identidade gerenciada da VM para recuperar os dados no Azure Storage Blob. As identidades gerenciadas para recursos do Azure podem ser usadas para autenticar com os recursos que são compatíveis com a autenticação do Microsoft Entra. Conceda acesso atribuindo a função storage-blob-data-reader à identidade gerenciada no escopo do grupo de recursos que contém a sua conta de armazenamento.

Para ver as etapas detalhadas, confira Atribuir funções do Azure usando o portal do Azure.

Observação

Para obter mais informações sobre as várias funções que você pode usar para conceder permissões para o armazenamento, reviseAutorizar o acesso a blobs e filas usando o Microsoft Entra ID

Obter um token de acesso e usá-lo para chamar o Armazenamento do Azure

O Armazenamento do Azure tem suporte nativo para autenticação do Microsoft Entra, de modo que ele pode aceitar diretamente os tokens de acesso obtidos por meio da identidade gerenciada. Isso faz parte da integração do Armazenamento do Azure com o Microsoft Entra ID, e é diferente de fornecer as credenciais na cadeia de conexão.

Para concluir as etapas a seguir, você precisará trabalhar da VM criada anteriormente e precisará de um cliente SSH para se conectar a ela. Se você estiver usando o Windows, poderá usar o cliente SSH no Subsistema do Windows para Linux. Se precisar de ajuda para configurar as chaves do cliente SSH, confira Como usar chaves SSH com o Windows no Azure, ou Como criar e usar um par de chaves SSH pública e privada para VMs Linux no Azure.

  1. No portal do Azure, navegue até Máquinas Virtuais, vá para a sua máquina virtual do Linux e, na página Visão geral, selecione Conectar. Copie a cadeia de caracteres para conectar-se à VM.

  2. Conecte-se à VM com um cliente SSH de sua escolha.

  3. Na janela de terminal, use o CURL, para fazer uma solicitação para o ponto de extremidade da Identidade Gerenciada local para obter um token de acesso para o Armazenamento do Azure.

    curl 'http://169.254.169.254/metadata/identity/oauth2/token?api-version=2018-02-01&resource=https%3A%2F%2Fstorage.azure.com%2F' -H Metadata:true
    
  4. Agora, use o token de acesso para acessar o Armazenamento do Microsoft Azure, por exemplo, para ler o conteúdo do arquivo de exemplo que você carregou anteriormente para o contêiner. Substitua os valores <STORAGE ACCOUNT>, <CONTAINER NAME> e <FILE NAME> pelos valores que você especificou anteriormente e <ACCESS TOKEN> pelo token retornado na etapa anterior.

    curl https://<STORAGE ACCOUNT>.blob.core.windows.net/<CONTAINER NAME>/<FILE NAME> -H "x-ms-version: 2017-11-09" -H "Authorization: Bearer <ACCESS TOKEN>"
    

    A resposta tem o conteúdo do arquivo:

    Hello world! :)
    

Como alternativa, você também pode armazenar o token em uma variável e passá-lo para o segundo comando, conforme mostrado:

# Run the first curl command and capture its output in a variable
access_token=$(curl 'http://169.254.169.254/metadata/identity/oauth2/token?api-version=2018-02-01&resource=https%3A%2F%2Fstorage.azure.com%2F' -H Metadata:true | jq -r '.access_token')

# Run the second curl command with the access token
curl "https://<STORAGE ACCOUNT>.blob.core.windows.net/<CONTAINER NAME>/<FILE NAME>" \
  -H "x-ms-version: 2017-11-09" \
  -H "Authorization: Bearer $access_token"

Próximas etapas

Neste tutorial, você aprendeu a habilitar uma identidade gerenciada atribuída pelo sistema da VM do Linux para acessar o Armazenamento do Azure. Para saber mais sobre o Armazenamento do Azure, confira: