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
- 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.
- Para executar a criação de recursos e o gerenciamento de função necessários, sua conta precisa de permissões "Proprietário" no escopo apropriado (sua assinatura ou grupo de recursos). Se precisar de ajuda com a atribuição de função, confira Atribuir funções do Azure para gerenciar o acesso aos recursos de assinatura do Azure.
Para executar os exemplos de script CLI neste tutorial, você tem duas opções:
- Usar o Azure Cloud Shell, seja pelo portal do Azure ou por meio do botão Experimentar, localizado no canto superior direito de cada bloco de código.
- Instale a versão mais recente da CLI 2.0 (2.0.23 ou posterior) se preferir usar um console local da CLI.
Criar uma conta de armazenamento
Nesta seção, você criará uma conta de armazenamento.
Selecione o botão Criar um recurso, localizado no canto superior esquerdo do portal do Azure.
Clique em Armazenamento e, em seguida, Conta de armazenamento – blob, arquivo, tabela, fila.
Sob Nome, insira um nome para a conta de armazenamento.
Modelo de implantação e Tipo de conta devem ser definidos como Resource manager e Armazenamento (uso geral v1) .
Verifique se a Assinatura e o Grupo de Recursos correspondem ao que você especificou quando criou sua VM na etapa anterior.
Selecione Criar.
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.
Navegue de volta para sua conta de armazenamento criado recentemente.
Em Serviço blob, selecione Contêineres.
Selecione + Contêiner na parte superior da página.
Em Novo contêiner, insira um nome para o contêiner e, sob Nível de acesso público, mantenha o valor padrão.
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.
Carregue o arquivo no contêiner recém-criado clicando no nome do contêiner, depois em Carregar
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.
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.
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.
Conecte-se à VM com um cliente SSH de sua escolha.
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
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: