Usar identidades gerenciadas para acessar a Configuração de Aplicativos

As Identidades Gerenciadas do Microsoft Entra simplificam o gerenciamento de segredos para seu aplicativo de nuvem. Com uma identidade gerenciada, seu código pode usar a entidade de serviço que foi criada para o serviço do Azure em que ele é executado. Você usa uma identidade gerenciada, em vez de uma credencial separada armazenada no Azure Key Vault ou uma cadeia de caracteres de conexão local.

A Configuração de Aplicativos do Azure e suas bibliotecas de clientes do .NET, do .NET Framework e do Java Spring são equipadas com suporte de identidade gerenciada. Embora você não precise usá-la, o identidade gerenciada elimina a necessidade de um token de acesso que contenha segredos. Seu código pode acessar o repositório de configurações de aplicativos usando apenas o ponto de extremidade de serviço. Você pode inserir esta URL no seu código diretamente sem expor nenhum segredo.

Este artigo mostra como você pode aproveitar a identidade gerenciada para acessar a configuração de aplicativos. Ele se baseia no aplicativo Web introduzido nos Inícios Rápidos. Antes de continuar, conclua Criar um aplicativo ASP.NET Core com a Configuração de Aplicativos primeiro.

Este artigo mostra como você pode aproveitar a identidade gerenciada para acessar a configuração de aplicativos. Ele se baseia no aplicativo Web introduzido nos Inícios Rápidos. Antes de continuar, primeiro Crie um aplicativo Java Spring com a Configuração de Aplicativos do Azure.

Importante

A identidade gerenciada não pode ser usada para autenticar aplicativos executados localmente. Seu aplicativo deve ser implantado em um serviço do Azure que dê suporte à Identidade Gerenciada. Este artigo usa o Serviço de Aplicativo do Azure como exemplo. No entanto, o mesmo conceito se aplica a qualquer outro serviço do Azure que dê suporte à identidade gerenciada. Por exemplo, o Serviço de Kubernetes do Azure, a Máquina Virtual do Azure e as Instâncias de Contêiner do Azure. Se sua carga de trabalho estiver hospedada em um desses serviços, você também poderá aproveitar o suporte de identidade gerenciada do serviço.

Você pode usar qualquer editor de código para executar as etapas deste tutorial. O Visual Studio Code é uma excelente opção disponível nas plataformas Windows, macOS e Linux.

Neste artigo, você aprenderá como:

  • Permita acesso a uma identidade gerenciada à Configuração de Aplicativo.
  • Configure seu aplicativo para usar uma identidade gerenciada ao conectar-se à Configuração de Aplicativo.

Pré-requisitos

Para concluir este tutorial, você deve ter:

Caso você não tenha uma assinatura do Azure, crie uma conta gratuita do Azure antes de começar.

Adicionar uma identidade gerenciada

Para configurar uma identidade gerenciada no portal, primeiro, crie um aplicativo e, em seguida, habilite o recurso.

  1. Acesse o seu recurso Serviços de Aplicativos no portal do Azure. Se você não tiver um recurso de Serviços de Aplicativos existente para usar, crie um.

  2. Role a página para baixo até o grupo Configurações no painel de navegação à esquerda e selecione Identidade.

  3. Na guia Sistema atribuído, alterne o Status para Ativado e selecione Salvar.

  4. Quando solicitado, responda Sim para ativar a identidade gerenciada atribuída pelo sistema.

    Captura de tela de como adicionar uma identidade gerenciada no Serviço de Aplicativo.

Permitir acesso à Configuração de Aplicativo

As etapas a seguir descrevem como atribuir a função de leitor de dados de configuração de aplicativo ao serviço de aplicativo. Para ver as etapas detalhadas, confira Atribuir funções do Azure usando o portal do Azure.

  1. No portal do Azure, selecione seu repositório de Configuração de Aplicativos.

  2. Selecione IAM (Controle de acesso) .

  3. Selecione Adicionar>Adicionar atribuição de função.

    Captura de tela que mostra a página Controle de Acesso (IAM) com o menu Adicionar atribuição de função aberto.

    Se você não tiver permissões para atribuir funções, a opção Adicionar atribuição de função será desativada. Para obter mais informações, veja Funções internas do Azure.

  4. Na guia Função, selecione a função Leitor de Dados de Configuração de Aplicativos e, em seguida, Avançar.

    Captura de tela que mostra a página Adicionar atribuição de função com a guia Função selecionada.

  5. Na guia Membros, selecione Identidade gerenciada e selecione Selecionar membros.

    Captura de tela que mostra a página Adicionar atribuição de função com a guia Membros selecionada.

  6. Selecione a assinatura do Azure; para a Identidade Gerenciada, selecione Serviço de Aplicativo e escolha o nome do Serviço de Aplicativo.

    Captura de tela que mostra a página de identidades gerenciadas selecionadas.

  7. Na guia Examinar + atribuir, selecione Examinar + atribuir para atribuir a função.

Usar uma identidade gerenciada

  1. Adicione uma referência ao pacote Azure.Identity:

    dotnet add package Azure.Identity
    
  2. Localize o ponto de extremidade para o repositório de Configuração de Aplicativos. Essa URL é listada na guia Chaves de acesso para o repositório no portal do Azure.

  3. Abra o arquivo appsettings.json e adicione o script a seguir. Substitua <service_endpoint>, incluindo os colchetes, pela URL para seu repositório de configurações do aplicativo.

    "AppConfig": {
        "Endpoint": "<service_endpoint>"
    }
    
  4. Abra o arquivo Program.cs e adicione uma referência ao namespace Azure.Identity:

    using Azure.Identity;
    
  5. Para acessar os valores armazenados na Configuração de Aplicativos, atualize a configuração Builder para utilizar o método AddAzureAppConfiguration().

    var builder = WebApplication.CreateBuilder(args);
    
    builder.Configuration.AddAzureAppConfiguration(options =>
        options.Connect(
            new Uri(builder.Configuration["AppConfig:Endpoint"]),
            new ManagedIdentityCredential()));
    

    Observação

    Caso você queira usar uma identidade gerenciada atribuída pelo usuário, especifique clientId ao criar ManagedIdentityCredential.

    new ManagedIdentityCredential("<your_clientId>")
    

    Conforme explicado nas Perguntas frequentes sobre identidades gerenciadas para recursos do Azure, há uma maneira padrão de resolver qual identidade gerenciada é usada. Nesse caso, a biblioteca de Identidade do Azure impõe que você especifique a identidade desejada para evitar possíveis problemas de tempo de execução no futuro. Por exemplo, se uma nova identidade gerenciada atribuída pelo usuário for adicionada ou se a identidade gerenciada atribuída pelo sistema estiver habilitada. Portanto, você precisará especificar a clientId mesmo se apenas uma identidade gerenciada atribuída pelo usuário for definida e não houver nenhuma identidade gerenciada atribuída pelo sistema.

  1. Localize o ponto de extremidade para o repositório de Configuração de Aplicativos. Essa URL é listada na guia Visão geral para o repositório no portal do Azure.

  2. Abra bootstrap.properties, remova a propriedade cadeia de conexão e substitua-a pelo ponto de extremidade da Identidade Atribuída ao Sistema:

spring.cloud.azure.appconfiguration.stores[0].endpoint=<service_endpoint>

para a Identidade Atribuída pelo Usuário:

spring.cloud.azure.appconfiguration.stores[0].endpoint=<service_endpoint>
spring.cloud.azure.credential.managed-identity-enabled= true
spring.cloud.azure.credential.client-id= <client_id>

Observação

Para obter mais informações, consulte Autenticação do Spring Cloud Azure.

Implantar seu aplicativo

Você deve implantar o aplicativo em um serviço do Azure ao usar identidades gerenciadas. Identidades gerenciadas não podem ser usadas para autenticação de aplicativos em execução localmente. Para implantar o aplicativo .NET Core que você criou no início rápido em Criar um aplicativo ASP.NET Core com a Configuração de Aplicativos e modificou para usar identidades gerenciadas, siga as orientações em Publicar seu aplicativo web.

Usar identidades gerenciadas exige que você implante seu aplicativo em um serviço do Azure. Identidades gerenciadas não podem ser usadas para autenticação de aplicativos em execução localmente. Para implantar o aplicativo Spring que você criou no início rápido em Criar um aplicativo Java Spring com a Configuração de Aplicativos do Azure e modificou para usar identidades gerenciadas, siga as diretrizes em Publicar seu aplicativo Web.

Além do Serviço de Aplicativo, muitos outros serviços do Azure dão suporte a identidades gerenciadas. Para mais informações, consulte Serviços que dão suporte a identidades gerenciadas para recursos do Azure.

Limpar os recursos

Se não deseja continuar usando os recursos criados neste artigo, exclua o grupo de recursos que você criou aqui para evitar encargos.

Importante

A exclusão de um grupo de recursos é irreversível. O grupo de recursos e todos os recursos contidos nele são excluídos permanentemente. Não exclua acidentalmente grupo de recursos ou recursos incorretos. Se tiver criado os recursos para este artigo dentro de um grupo de recursos que contém outros recursos que você deseja manter, exclua cada um individualmente do respectivo painel em vez de excluir o grupo de recursos.

  1. Entre no portal do Azure e selecione Grupos de recursos.
  2. Na caixa Filtrar por nome..., digite o nome do seu grupo de recursos.
  3. Na lista de resultados, selecione o nome do grupo de recursos para conferir uma visão geral.
  4. Selecione Excluir grupo de recursos.
  5. Você receberá uma solicitação para confirmar a exclusão do grupo de recursos. Insira o nome do grupo de recursos para confirmar e selecione Excluir.

Após alguns instantes, o grupo de recursos e todos os recursos dele são excluídos.

Próximas etapas

Neste tutorial, você adicionou uma identidade gerenciada do Azure para simplificar o acesso à Configuração de Aplicativos e melhorar o gerenciamento de credenciais do aplicativo. Para saber mais sobre como usar a Configuração de Aplicativo, continue para ver as amostras da CLI do Azure.