Tutorial: Utilizar uma identidade gerida atribuída pelo sistema de uma VM do Windows, 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 da máquina virtual (VM) do Windows para aceder ao Armazenamento do Azure. Sabe como:
- Criar um contentor de blobs numa conta de armazenamento
- Conceder à sua identidade gerida atribuída pelo sistema de uma VM do Windows acesso a uma conta de armazenamento
- Obter um token de acesso e utilizá-lo para chamar o Armazenamento do Azure
Nota
A autenticação do Microsoft Entra para o Armazenamento do Azure está em visualização pública.
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.
Ativar
Habilitar uma identidade gerenciada atribuída ao sistema é uma experiência de um clique. Você pode habilitá-lo durante a criação de uma VM ou nas propriedades de uma VM existente.
Para habilitar uma identidade gerenciada atribuída ao sistema em uma nova VM:
Inicie sessão no portal do Azure
Criar uma máquina virtual com a identidade atribuída pelo sistema habilitada
Conceder acesso
Criar 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 acesso
Esta seção mostra como conceder acesso à sua VM a um contêiner de Armazenamento do Azure. Pode utilizar a identidade gerida atribuída pelo sistema da VM para obter os dados no blob de armazenamento do Azure.
Navegue de volta para a sua conta de armazenamento recentemente criada.
Selecione Controlo de acesso (IAM) .
Selecione Adicionar>Adicionar atribuição de funções para abrir o painel Adicionar atribuição de funções.
Atribua a seguinte função. Para obter os passos detalhados, veja o artigo Atribuir funções do Azure com o portal do Azure.
Definição Value Função Leitor de Dados de Blobs de Armazenamento Atribuir acesso a Identidade gerida Atribuída pelo sistema Máquina Virtual Selecione <sua máquina virtual>
Dados de acesso
O Armazenamento do Azure dá suporte nativo à autenticação do Microsoft Entra, para que ele possa aceitar diretamente tokens de acesso obtidos usando uma identidade gerenciada. Essa abordagem usa a integração do Armazenamento do Azure com o Microsoft Entra ID e é diferente de fornecer credenciais na cadeia de conexão.
Aqui está um exemplo de código .NET de abertura de uma conexão com o Armazenamento do Azure. O exemplo usa um token de acesso e, em seguida, lê o conteúdo do arquivo criado anteriormente. Este código tem de ser executado na VM para poder aceder ao ponto final da identidade gerida da VM. O .NET Framework 4.6 ou superior é necessário para usar o método de token de acesso. Substitua o valor de <URI to blob file>
em conformidade. Pode obter este valor ao navegar para o ficheiro que criou e carregou para o armazenamento de blobs e copiar o URL em Propriedades para a página Descrição Geral.
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.IO;
using System.Net;
using System.Web.Script.Serialization;
using Microsoft.WindowsAzure.Storage.Auth;
using Microsoft.WindowsAzure.Storage.Blob;
namespace StorageOAuthToken
{
class Program
{
static void Main(string[] args)
{
//get token
string accessToken = GetMSIToken("https://storage.azure.com/");
//create token credential
TokenCredential tokenCredential = new TokenCredential(accessToken);
//create storage credentials
StorageCredentials storageCredentials = new StorageCredentials(tokenCredential);
Uri blobAddress = new Uri("<URI to blob file>");
//create block blob using storage credentials
CloudBlockBlob blob = new CloudBlockBlob(blobAddress, storageCredentials);
//retrieve blob contents
Console.WriteLine(blob.DownloadText());
Console.ReadLine();
}
static string GetMSIToken(string resourceID)
{
string accessToken = string.Empty;
// Build request to acquire MSI token
HttpWebRequest request = (HttpWebRequest)WebRequest.Create("http://169.254.169.254/metadata/identity/oauth2/token?api-version=2018-02-01&resource=" + resourceID);
request.Headers["Metadata"] = "true";
request.Method = "GET";
try
{
// Call /token endpoint
HttpWebResponse response = (HttpWebResponse)request.GetResponse();
// Pipe response Stream to a StreamReader, and extract access token
StreamReader streamResponse = new StreamReader(response.GetResponseStream());
string stringResponse = streamResponse.ReadToEnd();
JavaScriptSerializer j = new JavaScriptSerializer();
Dictionary<string, string> list = (Dictionary<string, string>)j.Deserialize(stringResponse, typeof(Dictionary<string, string>));
accessToken = list["access_token"];
return accessToken;
}
catch (Exception e)
{
string errorText = String.Format("{0} \n\n{1}", e.Message, e.InnerException != null ? e.InnerException.Message : "Acquire token failed");
return accessToken;
}
}
}
}
A resposta inclui o conteúdo do ficheiro:
Hello world! :)
Desativar
Para desativar a identidade atribuída pelo sistema em sua VM, defina o status da identidade atribuída pelo sistema como Desativado.
Próximos passos
Neste tutorial, aprendeu a ativar uma identidade gerida atribuída pelo sistema de uma VM do Windows para aceder ao Armazenamento do Azure. Para saber mais sobre o Armazenamento do Azure, consulte: