Nota
O acesso a esta página requer autorização. Pode tentar iniciar sessão ou alterar os diretórios.
O acesso a esta página requer autorização. Pode tentar alterar os diretórios.
Aprenda a aceder aos serviços Azure, como o Azure Storage, a partir de uma aplicação web usando identidades geridas, em vez de um utilizador que tenha iniciado sessão, em execução no Azure App Service. Este tutorial demonstra como se ligar ao Azure Storage como exemplo.
Qualquer serviço que suporte identidade gerenciada (B na imagem a seguir) pode ser acessado com segurança usando este tutorial:
- Azure Storage
- Base de Dados SQL do Azure
- Azure Key Vault
Quer adicionar acesso seguro aos serviços Azure, incluindo Azure Storage, Azure SQL Database e Azure Key Vault, a partir da sua aplicação web. Você pode usar uma chave compartilhada, mas então você tem que se preocupar com a segurança operacional de quem pode criar, implantar e gerenciar o segredo. Também é possível que a chave possa ser registrada no GitHub, que os hackers sabem como verificar. Uma maneira mais segura de dar ao seu aplicativo Web acesso aos dados é usar identidades gerenciadas.
Uma identidade gerida do Microsoft Entra ID permite ao App Service aceder a recursos através do controlo de acesso baseado em funções (RBAC), sem exigir credenciais da aplicação. Depois de atribuir uma identidade gerida à sua aplicação web, o Azure trata da criação e distribuição de um certificado. As pessoas não precisam se preocupar em gerenciar segredos ou credenciais de aplicativos.
Neste tutorial, irá aprender a:
- Crie uma identidade gerenciada atribuída ao sistema em um aplicativo Web.
- Crie uma conta de armazenamento e um contentor Azure Blob Storage.
- Acesse o armazenamento de um aplicativo Web usando identidades gerenciadas.
Se não tiver uma conta Azure, crie uma conta free antes de começar.
Pré-requisitos
Uma aplicação web a correr no Azure App Service:
Habilitar identidade gerenciada em um aplicativo
Se criar e publicar a sua aplicação web através do Visual Studio, a identidade gerida é ativada automaticamente na sua aplicação.
No teu serviço de aplicação, no menu à esquerda, seleciona Identidade e depois seleciona Sistema atribuído. Verifique se o Status está definido como Ativado.
Se não, selecione Ligado e, em seguida, Guardar. Para ativar a identidade gerida atribuída ao sistema, no diálogo de confirmação, selecione Sim. Quando a identidade gerenciada é habilitada, o status é definido como Ativado e a ID do objeto está disponível.
Esta etapa cria uma nova ID de objeto, diferente da ID do aplicativo criada no painel Autenticação/Autorização . Copie o ID do objeto da identidade gerenciada atribuída ao sistema. Você precisa dele mais tarde.
Crie uma conta de armazenamento e um contentor Blob Storage
Agora está pronto para criar uma conta de armazenamento e um contentor de Blob Storage.
Cada conta de armazenamento deve pertencer a um grupo de recursos do Azure. Um grupo de recursos é um contentor lógico para os seus serviços Azure. Quando crias uma conta de armazenamento, podes criar um novo grupo de recursos ou usar um grupo de recursos existente. Este artigo mostra como criar um novo grupo de recursos.
Uma conta de armazenamento v2 de uso geral fornece acesso a todos os serviços do Azure Storage: blobs, ficheiros, filas, tabelas e discos. As etapas descritas aqui criam uma conta de armazenamento v2 de uso geral, mas as etapas para criar qualquer tipo de conta de armazenamento são semelhantes.
Os blobs no Azure Storage estão organizados em contentores. Antes de carregar um blob mais adiante neste tutorial, você deve primeiro criar um contêiner.
Para criar uma conta de armazenamento v2 de uso geral no portal Azure, siga estes passos.
No menu do portal Azure, introduza Storage Accounts. À medida que começa a escrever, a lista filtra com base na sua entrada. Selecione Contas do Storage.
Na janela Contas de armazenamento exibida, selecione Criar.
Selecione a subscrição na qua pretende criar a conta de armazenamento.
Para o grupo de recursos, selecione o grupo de recursos que contém a sua aplicação web.
Introduza um nome para a conta de armazenamento. O nome que escolher deve ser único em todo o Azure. O nome deve ter entre 3 e 24 caracteres e pode incluir apenas números e letras minúsculas.
Selecione um local (região) para sua conta de armazenamento ou use o valor padrão.
Para tipo de armazenamento preferencial, selecione Azure Blob Storage ou Azure Data Lake Storage Gen 2.
Deixe estes campos configurados para os respetivos valores predefinidos.
Campo Valor Desempenho Standard Redundância Armazenamento geo-redundante Selecione Rever + Criar para rever as definições de conta de armazenamento e criar a conta.
Selecione Criar.
Para criar um contentor Blob Storage no Azure Storage, siga estes passos.
Vai à tua nova conta de armazenamento no portal Azure.
No menu esquerdo da conta de armazenamento, em Armazenamento de Dados, selecione Contentores.
Selecione Adicionar contentor.
Escreva um nome para o novo contentor. O nome do contentor tem de estar em minúsculas, deve começar com uma letra ou um número e só pode incluir letras, números e o caractere hífen (-).
Defina o nível de acesso público ao contentor. O nível predefinido é Privado (sem acesso anónimo).
Selecione OK para criar o contentor.
Conceder acesso à conta de armazenamento
Você precisa conceder ao seu aplicativo Web acesso à conta de armazenamento antes de poder criar, ler ou excluir blobs. Numa secção anterior, configurou a aplicação web a correr no App Service com uma identidade gerida. Usando o Azure RBAC, pode dar à identidade gerida acesso a outro recurso, tal como qualquer princípio de segurança.
O papel de colaborador de dados de blob de armazenamento concede à aplicação web, representada pela identidade gerida atribuída pelo sistema, acesso de leitura, escrita e eliminação ao contentor do blob e aos seus dados.
Nota
O Azure RBAC não suporta algumas operações em contentores privados de blobs, como visualizar blobs ou copiar blobs entre contas. Um contentor de blob com nível de acesso privado requer um token SAS para qualquer operação que o Azure RBAC não autorize. Para obter mais informações, consulte Quando usar uma assinatura de acesso compartilhado.
- No portal Azure, aceda à sua conta de armazenamento para conceder acesso à sua aplicação web.
- No menu esquerdo, selecione controlo de acesso (IAM), e depois selecione Atribuição de Funções. Vês uma lista de quem tem acesso à conta de armazenamento.
- Queres adicionar uma atribuição de função ao serviço de aplicação que precisa de acesso à conta de armazenamento. Selecione Adicionar>Adicionar atribuição de função para abrir a página Adicionar atribuição de função.
- Atribuir o papel de Contribuidor de Dados do Blob de Armazenamento ao Serviço de Aplicações no âmbito da conta de armazenamento. Para obter mais informações, consulte Atribuir funções do Azure usando o portal do Azure.
Seu aplicativo Web agora tem acesso à sua conta de armazenamento.
Acesso ao Blob Storage
A classe DefaultAzureCredential é usada para obter uma credencial token para o seu código autorizar pedidos a Azure Storage. Crie uma instância da classe DefaultAzureCredential , que usa a identidade gerenciada para buscar tokens e anexá-los ao cliente de serviço. O exemplo de código a seguir obtém a credencial de token autenticada e a usa para criar um objeto de cliente de serviço, que carrega um novo blob.
Para ver este código como parte de uma aplicação de exemplo, veja o exemplo em GitHub.
Instalar pacotes de biblioteca cliente
Instale o pacote NuGet Blob Storage para trabalhar com Blob Storage e o pacote NuGet da biblioteca cliente Azure Identity para .NET para autenticar com credenciais Microsoft Entra. Instale as bibliotecas do cliente utilizando a interface de linha de comandos .NET Core ou a Console do Package Manager no Visual Studio.
.NET Core linha de comandos
Abra uma linha de comando e alterne para o diretório que contém o arquivo de projeto.
Execute os comandos de instalação.
dotnet add package Azure.Storage.Blobs dotnet add package Azure.Identity
Consola do Gestor de Pacotes
Abra o projeto ou solução em Visual Studio e abra a consola usando o comando Tools>NuGet Package Manager>Package Manager Console.
Execute os comandos de instalação.
Install-Package Azure.Storage.Blobs Install-Package Azure.Identity
exemplo .NET
using System;
using Azure.Storage.Blobs;
using Azure.Storage.Blobs.Models;
using System.Collections.Generic;
using System.Threading.Tasks;
using System.Text;
using System.IO;
using Azure.Identity;
// Some code omitted for brevity.
static public async Task UploadBlob(string accountName, string containerName, string blobName, string blobContents)
{
// Construct the blob container endpoint from the arguments.
string containerEndpoint = string.Format("https://{0}.blob.core.windows.net/{1}",
accountName,
containerName);
// Get a credential and create a client object for the blob container.
BlobContainerClient containerClient = new BlobContainerClient(new Uri(containerEndpoint),
new DefaultAzureCredential());
try
{
// Create the container if it doesn't exist.
await containerClient.CreateIfNotExistsAsync();
// Upload text to a new block blob.
byte[] byteArray = Encoding.ASCII.GetBytes(blobContents);
using (MemoryStream stream = new MemoryStream(byteArray))
{
await containerClient.UploadBlobAsync(blobName, stream);
}
}
catch (Exception e)
{
throw e;
}
}
Limpar recursos
Se terminares este tutorial e já não precisares da aplicação web ou dos recursos associados, limpa os recursos que criaste.
Eliminar o grupo de recursos
No portal Azure, selecione Grupos de Recursos no menu do portal Azure e selecione o grupo de recursos que contém o seu serviço de aplicação e plano de serviços de aplicação.
Selecione Excluir grupo de recursos para excluir o grupo de recursos e todos os recursos.
Introduza o nome do grupo de recursos para confirmar.
Este processo pode demorar vários minutos a ser executado.
Próximos passos
Neste tutorial, ficou a saber como:
- Crie uma identidade gerenciada atribuída ao sistema.
- Crie uma conta de armazenamento e um contentor Blob Storage.
- Acesse o armazenamento de um aplicativo Web usando identidades gerenciadas.