Tutorial: Utilizar uma identidade gerida atribuída pelo sistema de uma VM do Linux para aceder ao Armazenamento do Azure
Identidades gerenciadas para recursos do Azure é um recurso do Microsoft Entra ID. Cada um dos serviços do Azure que suportam as identidades geridas para os recursos do Azure estão sujeitos à sua própria linha de tempo. Certifique-se de que revê o estado de disponibilidade das identidades geridas para o seu recurso e problemas conhecidos antes de começar.
Este tutorial mostra-lhe como utilizar uma identidade gerida atribuída pelo sistema para uma máquina virtual (VM) do Linux para aceder ao Armazenamento do Azure. Sabe como:
- Criar uma conta de armazenamento
- Criar um contentor de blobs numa conta de armazenamento
- Conceder acesso à Identidade Gerida de VM do Linux a um contentor de Armazenamento do Azure
- Obter um token de acesso e utilizá-lo para chamar o Armazenamento do Azure
Pré-requisitos
- Se não estiver familiarizado com a funcionalidade das identidades geridas para os recursos do Azure, veja esta descrição geral.
- Se não tiver uma conta do Azure, inscreva-se numa conta gratuita antes de continuar.
- Para executar a criação de recursos e gestão de funções, a sua conta precisa de permissões de "Proprietário" no âmbito adequado (a sua subscrição ou grupo de recursos). Se precisar de ajuda com a atribuição de funções, consulte Atribuir funções do Azure para gerir o acesso aos seus recursos de subscrição do Azure.
Para executar os exemplos de script da CLI neste tutorial, tem duas opções:
- Use o Azure Cloud Shell no portal do Azure ou por meio do botão Experimentar , localizado no canto superior direito de cada bloco de código.
- Instalar a versão mais recente da CLI 2.0 (2.0.23 ou posterior), se preferir utilizar uma consola CLI local.
Criar uma conta de armazenamento
Nesta secção, vai criar uma conta de armazenamento.
Selecione o botão + Criar um recurso localizado no canto superior esquerdo do portal do Azure.
Selecione Armazenamento e, em seguida , Conta de armazenamento - blob, arquivo, tabela, fila.
Em Nome, introduza um nome para a conta de armazenamento.
O Modelo de implementação e o Tipo de conta devem ser definidos como Gestor de recursos e Armazenamento (fins gerais v1).
Certifique-se de que a Subscrição e o Grupo de Recursos correspondem aos perfis que especificou quando criou a VM no passo anterior.
Selecione Criar.
Criar um contentor de blobs e carregar um ficheiro para a conta de armazenamento
Os ficheiros requerem armazenamento de blobs, por isso tem de criar um contentor de blobs para armazenar o ficheiro. Em seguida, carregue um ficheiro para o contentor de blobs na nova conta de armazenamento.
Navegue de volta para a sua conta de armazenamento recentemente criada.
Em Serviço de Blob, selecione Contêineres.
Selecione + Contêiner na parte superior da página.
Em Novo contentor, introduza um nome para o contentor e, em Nível de acesso público, mantenha o valor predefinido.
Com um editor à sua escolha, crie um ficheiro com o nome hello world.txt no seu computador local. Abra o ficheiro e adicione o texto (sem as aspas) "Hello world! :) "e, em seguida, guarde-o.
Carregue o ficheiro para o contentor recentemente criado ao clicar no nome do contentor e, em seguida, em Carregar
No painel Carregar blob, em Ficheiros, selecione o ícone de pasta e navegue até ao hello_world.txt de ficheiros na sua máquina local, selecione o ficheiro e, em seguida, selecione Carregar.
Conceder à VM o acesso a um contentor do Armazenamento do Azure
Pode utilizar a identidade gerida da VM para obter os dados no blob de armazenamento do Azure. As identidades gerenciadas para recursos do Azure podem ser usadas para autenticar recursos que dão suporte à 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 sua conta de armazenamento.
Para obter os passos detalhados, veja o artigo Atribuir funções do Azure com o portal do Azure.
Nota
Para obter mais informações sobre as várias funções que você pode usar para conceder permissões para armazenamento, revise : Autorizar acesso a blobs e filas usando a ID do Microsoft Entra
Obter um token de acesso e utilizá-lo para chamar o Armazenamento do Azure
O Armazenamento do Azure dá suporte nativo à autenticação do Microsoft Entra, portanto, ele pode aceitar diretamente tokens de acesso obtidos usando uma Identidade Gerenciada. Isso faz parte da integração do Armazenamento do Azure com o Microsoft Entra ID e é diferente de fornecer credenciais na cadeia de conexão.
Para concluir os passos seguintes, precisa de trabalhar a partir da VM que criou anteriormente e é necessário um cliente SSH para ligar à mesma. Se estiver a utilizar o Windows, pode utilizar o cliente SSH no Subsistema Windows para Linux. Se precisar de ajuda para configurar as chaves do seu cliente SSH, veja Como utilizar chaves SSH com o Windows no Azure ou Como criar e utilizar um par de chaves SSH públicas e privadas para VMs do Linux no Azure.
No portal do Azure, navegue até Máquinas Virtuais, vá para sua máquina virtual Linux e, na página Visão geral , selecione Conectar. Copie a cadeia de ligação para ligar à sua VM.
Clique em Ligar para ligar à VM com o cliente SSH que escolheu.
Na janela do terminal, use CURL para fazer uma solicitação ao ponto de extremidade local da Identidade Gerenciada 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
Utilize o token de acesso para aceder ao Armazenamento do Azure, por exemplo, para ler o conteúdo do ficheiro de exemplo que carregou anteriormente para o contentor. Substitua os valores
<STORAGE ACCOUNT>
,<CONTAINER NAME>
e<FILE NAME>
pelos valores que especificou anteriormente, e<ACCESS TOKEN>
pelo token devolvido no passo 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 inclui o conteúdo do ficheiro:
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óximos passos
Neste tutorial, aprendeu a ativar uma identidade gerida atribuída pelo sistema de uma VM do Linux para aceder ao Armazenamento do Azure. Para saber mais sobre o Armazenamento do Azure, veja: