Compartilhar via


Autenticar aplicativos Java hospedados no Azure em recursos do Azure usando uma identidade gerenciada atribuída pelo sistema

A abordagem recomendada para autenticar um aplicativo hospedado em Azure para outros recursos Azure é usar uma identidade gerenciada. A maioria dos serviços Azure dá suporte a essa abordagem, incluindo aplicativos hospedados em Azure App Service, Azure Container Apps e Azure Virtual Machines. Para obter mais informações, consulte Azure serviços e tipos de recursos que dão suporte a identidades gerenciadas. Para obter mais informações sobre diferentes técnicas e abordagens de autenticação, consulte autenticar aplicativos Java em serviços do Azure usando a biblioteca de identidade do Azure.

Nas seções a seguir, você aprenderá:

  • Conceitos essenciais de identidade gerenciada.
  • Como criar uma identidade gerenciada atribuída pelo sistema para seu aplicativo.
  • Como atribuir funções à identidade gerenciada atribuída pelo sistema.
  • Como autenticar usando a identidade gerenciada atribuída pelo sistema a partir do código do aplicativo.

Conceitos essenciais de identidade gerenciada

Uma identidade gerenciada permite que seu aplicativo se conecte com segurança a outros recursos Azure sem o uso de chaves secretas ou outros segredos do aplicativo. Internamente, Azure controla a identidade e os recursos aos quais tem permissão para se conectar. Azure usa essas informações para obter automaticamente Microsoft Entra tokens para o aplicativo para permitir que ele se conecte a outros recursos Azure.

Há dois tipos de identidades gerenciadas a serem consideradas ao configurar seu aplicativo hospedado:

  • As identidades gerenciadas atribuídas pelo sistema são habilitadas diretamente em um recurso do Azure e estão vinculadas ao seu ciclo de vida. Quando o recurso é excluído, Azure exclui automaticamente a identidade para você. As identidades atribuídas pelo sistema fornecem uma abordagem minimalista para o uso de identidades gerenciadas.
  • Identidades gerenciadas atribuídas ao usuário são criadas como recursos autônomos do Azure e oferecem maior flexibilidade e funcionalidades. Elas são ideais para soluções que envolvem vários recursos de Azure que precisam compartilhar a mesma identidade e permissões. Por exemplo, se várias máquinas virtuais precisarem acessar o mesmo conjunto de recursos Azure, uma identidade gerenciada atribuída pelo usuário fornecerá reutilização e gerenciamento otimizado.

Dica

Saiba mais sobre como selecionar e gerenciar identidades gerenciadas atribuídas pelo sistema e atribuídas pelo usuário no artigo de recomendações de melhores práticas de identidade gerenciada .

As seções a seguir descrevem as etapas para habilitar e usar uma identidade gerenciada atribuída pelo sistema para um aplicativo hospedado Azure. Se você precisar usar uma identidade gerenciada atribuída pelo usuário, consulte Autenticar aplicativos Java hospedados no Azure para acessar recursos do Azure usando uma identidade gerenciada atribuída pelo usuário.

Habilitar uma identidade gerenciada atribuída pelo sistema no recurso de hospedagem Azure

Para começar a usar uma identidade gerenciada atribuída pelo sistema com seu aplicativo, habilite a identidade no recurso Azure que hospeda seu aplicativo, como uma instância Azure App Service, Azure Container Apps ou Azure Virtual Machines.

Você pode habilitar uma identidade gerenciada atribuída pelo sistema para um recurso de Azure usando o portal do Azure ou o Azure CLI.

  1. No portal Azure, navegue até o recurso que hospeda o código do aplicativo, como uma instância Azure App Service ou Azure Container Apps.

  2. Na página Visão geral do recurso, expanda Configurações e selecione Identidade na navegação.

  3. Na página de Identidade do, alterne o controle deslizante de Status do para On.

  4. Selecione Salvar para aplicar suas alterações.

    Uma captura de tela mostrando como habilitar uma identidade gerenciada atribuída pelo sistema em um aplicativo de contêiner.

Atribuir funções à identidade gerenciada

Em seguida, determine quais funções seu aplicativo precisa e atribua essas funções à identidade gerenciada. Você pode atribuir funções a uma identidade gerenciada nos seguintes escopos:

  • Resource: as funções atribuídas se aplicam somente a esse recurso específico.
  • grupo de recursos: as funções atribuídas se aplicam a todos os recursos contidos no grupo de recursos.
  • Assinatura: As funções designadas se aplicam a todos os recursos contidos na assinatura.

O exemplo a seguir mostra como atribuir funções no escopo do grupo de recursos, já que muitos aplicativos gerenciam todos os recursos de Azure relacionados usando um único grupo de recursos.

  1. Navegue até a página Visão Geral do grupo de recursos que contém o aplicativo com a identidade gerenciada atribuída pelo sistema.

  2. Selecione Controle de Acesso (IAM) no menu de navegação à esquerda.

  3. Na página Controle de Acesso (IAM), selecione + Adicionar no menu superior e escolha Adicionar atribuição de função para navegar até a página Adicionar atribuição de função.

    Uma captura de tela mostrando como acessar a página de atribuição de função de identidade.

  4. A página Adicionar atribuição de função apresenta um fluxo de trabalho multi-etapas com abas para atribuir funções a identidades. Na guia inicial de Função, use o campo de busca na parte superior para localizar a função que você deseja atribuir à identidade.

  5. Selecione a função nos resultados e escolha Próximo para acessar a guia Membros.

  6. Para a opção Atribuir acesso a, selecione Identidade gerenciada.

  7. Para a opção Membros, selecione + Selecionar membros para abrir o painel Selecionar identidades gerenciadas.

  8. No painel Selecionar identidades gerenciadas, use as listas suspensas de Assinatura e Identidade gerenciada para filtrar os resultados da pesquisa para suas identidades. Use a caixa de pesquisa Select para localizar a identidade do sistema habilitada para o recurso Azure que hospeda seu aplicativo.

    Uma captura de tela mostrando o processo de atribuição de identidade gerenciada.

  9. Selecione a identidade e escolha Selecione na parte inferior do painel para continuar.

  10. Selecione Revisar + atribuir na parte inferior da página.

  11. Na guia Revisar + atribuir final, selecione Revisar + atribuir para concluir o fluxo de trabalho.

Autenticar nos serviços do Azure a partir do seu aplicativo

A biblioteca Azure Identity fornece várias credenciais como implementações de TokenCredential. Cada implementação dá suporte a diferentes cenários e fluxos de autenticação Microsoft Entra. Para aplicativos hospedados Azure, use DefaultAzureCredential, que descobre automaticamente as credenciais de identidade gerenciada ao executar em Azure.

Implementar o código

Adicione a dependência azure-identity ao arquivo pom.xml:

<dependency>
    <groupId>com.azure</groupId>
    <artifactId>azure-identity</artifactId>
</dependency>

Você acessa Azure serviços usando classes de cliente especializadas das bibliotecas de cliente Azure SDK. Os exemplos de código a seguir mostram como configurar a credencial para autenticação de identidade gerenciada atribuída pelo sistema.

Usar DefaultAzureCredential

Use DefaultAzureCredential para aplicativos hospedados Azure porque ele descobre automaticamente as credenciais de identidade gerenciada ao executar em Azure. Para identidades gerenciadas atribuídas pelo sistema, nenhuma configuração extra é necessária.

import com.azure.identity.DefaultAzureCredential;
import com.azure.identity.DefaultAzureCredentialBuilder;
import com.azure.security.keyvault.secrets.SecretClient;
import com.azure.security.keyvault.secrets.SecretClientBuilder;

// DefaultAzureCredential automatically discovers managed identity when running in Azure
DefaultAzureCredential credential = new DefaultAzureCredentialBuilder().build();

// Azure SDK client builders accept the credential as a parameter
SecretClient client = new SecretClientBuilder()
    .vaultUrl("https://<your-key-vault-name>.vault.azure.net")
    .credential(credential)
    .buildClient();

Usar ManagedIdentityCredential

Se você quiser usar explicitamente a credencial de identidade gerenciada e evitar a pesquisa da cadeia de credenciais, use ManagedIdentityCredential diretamente no DefaultAzureCredential. Para identidades gerenciadas atribuídas pelo sistema, não especifique uma ID do cliente:

import com.azure.identity.ManagedIdentityCredential;
import com.azure.identity.ManagedIdentityCredentialBuilder;
import com.azure.security.keyvault.secrets.SecretClient;
import com.azure.security.keyvault.secrets.SecretClientBuilder;

// For system-assigned managed identity, don't specify a client ID
ManagedIdentityCredential credential = new ManagedIdentityCredentialBuilder().build();

// Azure SDK client builders accept the credential as a parameter
SecretClient client = new SecretClientBuilder()
    .vaultUrl("https://<your-key-vault-name>.vault.azure.net")
    .credential(credential)
    .buildClient();

Próximas Etapas 

Este artigo abordou a autenticação usando uma identidade gerenciada atribuída pelo sistema. Essa forma de autenticação é uma das várias maneiras pelas quais você pode se autenticar no Azure SDK para Java. Os artigos a seguir descrevem outras maneiras:

Se você encontrar problemas relacionados à autenticação de aplicativo hospedado Azure, consulte Troubleshoot Azure-hosted application authentication.

Depois de dominar a autenticação, consulte Configurar o log no Azure SDK para Java para obter informações sobre a funcionalidade de registro em log fornecida pelo SDK.