Partilhar via


Tutorial: Aceder aos serviços do Azure a partir de uma aplicação Web .NET

Saiba como aceder aos serviços do Azure, como o Armazenamento do Azure, a partir de uma aplicação Web (não de um utilizador com sessão iniciada) em execução no Serviço de Aplicações do Azure utilizando identidades geridas. Este tutorial demonstra a conexão com o Armazenamento do Azure como um exemplo.

Qualquer serviço que suporte identidade gerenciada (B na imagem a seguir) pode ser acessado com segurança usando este tutorial:

  • Storage do Azure
  • Base de Dados SQL do Azure
  • Azure Key Vault

Diagrama que mostra como acessar o armazenamento.

Pretende adicionar acesso seguro aos serviços do Azure (Armazenamento do Azure, Base de Dados SQL do Azure, Cofre da Chave do Azure ou outros serviços) 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 verificada 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 gerenciada do Microsoft Entra ID permite que o Serviço de Aplicativo acesse recursos por meio do RBAC (controle de acesso baseado em função), sem exigir credenciais do aplicativo. Depois de atribuir uma identidade gerenciada ao seu aplicativo Web, o Azure cuida 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 contêiner de Armazenamento de Blob do Azure.
  • Acesse o armazenamento de um aplicativo Web usando identidades gerenciadas.

Se não tiver uma subscrição do Azure, crie uma conta gratuita do Azure antes de começar.

Pré-requisitos

Habilitar identidade gerenciada em um aplicativo

Se você criar e publicar seu aplicativo Web por meio do Visual Studio, a identidade gerenciada será habilitada em seu aplicativo para você. No seu serviço de aplicação, selecione Identidade no painel esquerdo e, em seguida, selecione Sistema atribuído. Verifique se o Status está definido como Ativado. Caso contrário, selecione Ativado e, em seguida , Guardar. Selecione Sim na caixa de diálogo de confirmação para ativar a identidade gerenciada atribuída ao sistema. Quando a identidade gerenciada é habilitada, o status é definido como Ativado e a ID do objeto está disponível.

Captura de tela que mostra a opção Identidade atribuída ao sistema.

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. Precisará dele mais tarde.

Criar uma conta de armazenamento e um contêiner de Armazenamento de Blob

Agora você está pronto para criar uma conta de armazenamento e um contêiner de Armazenamento de Blob.

Cada conta de armazenamento tem de pertencer a um grupo de recursos do Azure. Um grupo de recursos é um contentor lógico para agrupar os seus serviços do Azure. Ao criar uma conta de armazenamento, você tem a opção de 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 para fins gerais concede acesso a todos os serviços de Armazenamento do Azure: 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 Armazenamento do Azure são organizados em contêineres. 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 do Azure, siga estas etapas.

  1. No menu do portal do Azure, selecione Todos os serviços. Na lista de recursos, insira Contas de armazenamento. À medida que começa a escrever, a lista filtra com base na sua entrada. Selecione Contas do Storage.

  2. Na janela Contas de armazenamento exibida, selecione Criar.

  3. Selecione a subscrição na qua pretende criar a conta de armazenamento.

  4. No campo Grupo de recursos, selecione o grupo de recursos que contém seu aplicativo Web no menu suspenso.

  5. A seguir, introduza um nome para a sua conta de armazenamento. O nome que escolher tem de ser exclusivo em todo o Azure. O nome também deve ter entre 3 e 24 caracteres e pode incluir apenas números e letras minúsculas.

  6. Selecione um local (região) para sua conta de armazenamento ou use o valor padrão.

  7. Deixe os outros campos definidos para os respetivos valores predefinidos:

    Campo Value
    Modelo de implementação Gestor de Recursos
    Desempenho Standard
    Tipo de conta StorageV2 (fins gerais v2)
    Replicação Armazenamento georredundante com acesso de leitura (RA-GRS)
    Camada de acesso Muito Interessado
  8. Selecione Rever + Criar para rever as definições de conta de armazenamento e criar a conta.

  9. Selecione Criar.

Para criar um contêiner de Armazenamento de Blob no Armazenamento do Azure, siga estas etapas.

  1. Aceda à sua nova conta de armazenamento no portal do Azure.

  2. No menu esquerdo da conta de armazenamento, role até a seção Armazenamento de dados e selecione Contêineres.

  3. Selecione o botão + Contentor.

  4. Escreva um nome para o novo contentor. O nome do contentor tem estar em minúsculas, tem de começar com uma letra ou um número e só pode incluir letras, números e o caráter de travessão (-).

  5. Defina o nível de acesso público ao contentor. O nível predefinido é Privado (sem acesso anónimo).

  6. 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. Em uma etapa anterior, você configurou o aplicativo Web em execução no Serviço de Aplicativo com uma identidade gerenciada. Usando o RBAC do Azure, você pode conceder à identidade gerenciada acesso a outro recurso, assim como qualquer entidade de segurança. A função de Colaborador de Dados de Blob de Armazenamento dá ao aplicativo Web (representado pela identidade gerenciada atribuída ao sistema) acesso de leitura, gravação e exclusão ao contêiner de blob e aos dados.

Nota

Algumas operações em contêineres de blob privados não são suportadas pelo RBAC do Azure, como exibir blobs ou copiar blobs entre contas. Um contêiner de blob com nível de acesso privado requer um token SAS para qualquer operação não autorizada pelo RBAC do Azure. Para obter mais informações, consulte Quando usar uma assinatura de acesso compartilhado.

No portal do Azure, entre em sua conta de armazenamento para conceder acesso ao seu aplicativo Web. Selecione Controle de acesso (IAM) no painel esquerdo e, em seguida, selecione Atribuições de função. Você verá uma lista de quem tem acesso à conta de armazenamento. Agora você deseja adicionar uma atribuição de função a um robô, o serviço de aplicativo que precisa acessar a conta de armazenamento. Selecione Adicionar>atribuição de função para abrir a página Adicionar atribuição de função.

Atribua a função de Colaborador de Dados de Blob de Armazenamento ao Serviço de Aplicativo no escopo da assinatura. Para obter os passos detalhados, veja o artigo Atribuir funções do Azure com o portal do Azure.

Seu aplicativo Web agora tem acesso à sua conta de armazenamento.

Acessar armazenamento de Blob

A classe DefaultAzureCredential é usada para obter uma credencial de token para seu código para autorizar solicitações ao Armazenamento do Azure. 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 esse código como parte de um aplicativo de exemplo, consulte o exemplo no GitHub.

Instalar pacotes de biblioteca cliente

Instale o pacote NuGet de Armazenamento de Blob para trabalhar com o Armazenamento de Blob e a biblioteca de cliente do Azure Identity para o pacote NuGet do .NET para autenticação com credenciais do Microsoft Entra. Instale as bibliotecas de cliente usando a interface de linha de comando .NET Core ou o Console do Gerenciador de Pacotes no Visual Studio.

Linha de comando do .NET Core

  1. Abra uma linha de comando e alterne para o diretório que contém o arquivo de projeto.

  2. Execute os comandos de instalação.

    dotnet add package Azure.Storage.Blobs
    
    dotnet add package Azure.Identity
    

Consola do Gestor de Pacotes

  1. Abra o projeto ou a solução no Visual Studio e abra o console usando o comando Tools>NuGet Package Manager>Package Manager Console.

  2. Execute os comandos de instalação.

    Install-Package Azure.Storage.Blobs
    
    Install-Package Azure.Identity
    

Exemplo do .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 does not 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;
    }
}

Clean up resources (Limpar recursos)

Se você tiver terminado este tutorial e não precisar mais do aplicativo Web ou dos recursos associados, limpe os recursos criados.

Eliminar o grupo de recursos

No portal do Azure, selecione Grupos de recursos no menu do portal e selecione o grupo de recursos que contém o serviço de aplicativo e o plano de serviço de aplicativo.

Selecione Excluir grupo de recursos para excluir o grupo de recursos e todos os recursos.

Captura de tela que mostra a exclusão do grupo de recursos.

Esse comando pode levar vários minutos para 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 contêiner de Armazenamento de Blob.
  • Acesse o armazenamento de um aplicativo Web usando identidades gerenciadas.