Partilhar via


Autenticar aplicações Java alojadas no Azure para recursos do Azure usando uma identidade gerida atribuída pelo sistema

A abordagem recomendada para autenticar uma aplicação alojada em Azure a outros recursos Azure é usar uma identidade gerida. A maioria dos serviços Azure suporta esta abordagem, incluindo aplicações alojadas no Azure App Service, Azure Container Apps e Azure Virtual Machines. Para mais informações, consulte Azure serviços e tipos de recursos que suportam identidades geridas. Para mais informações sobre diferentes técnicas e abordagens de autenticação, consulte Autenticar Java aplicações para Azure serviços utilizando a biblioteca Azure Identity.

Nas secções seguintes, aprende-se:

  • Conceitos essenciais de identidade gerida.
  • Como criar uma identidade gerida atribuída pelo sistema para a sua aplicação.
  • Como atribuir papéis à identidade gerida atribuída pelo sistema.
  • Como autenticar-se usando a identidade gerida atribuída pelo sistema a partir do código da sua aplicação.

Conceitos essenciais de identidade gerenciada

Uma identidade gerida permite que a sua aplicação se conecte de forma segura a outros recursos do Azure sem o uso de chaves secretas ou outros segredos de aplicação. Internamente, o Azure acompanha a identidade e a quais recursos pode ligar-se. O Azure utiliza esta informação para obter automaticamente tokens Microsoft Entra para a aplicação, permitindo que esta se ligue a outros recursos do Azure.

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

  • As identidades geridas Atribuídas ao sistema são ativadas diretamente num recurso Azure e estão ligadas ao seu ciclo de vida. Quando o recurso é eliminado, o Azure apaga automaticamente a identidade para si. As identidades atribuídas pelo sistema fornecem uma abordagem minimalista para o uso de identidades gerenciadas.
  • As identidades geridas Atribuídas pelo utilizador são criadas como recursos de Azure autónomas e oferecem maior flexibilidade e capacidades. São ideais para soluções que envolvem múltiplos recursos do Azure que precisam de partilhar a mesma identidade e permissões. Por exemplo, se várias máquinas virtuais precisarem de aceder ao mesmo conjunto de recursos do Azure, uma identidade gerida atribuída pelo utilizador proporciona reutilização e gestão otimizada.

Sugestão

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

As secções seguintes descrevem os passos para ativar e usar uma identidade gerida atribuída pelo sistema para uma aplicação alojada no Azure. Se precisar de usar uma identidade gerida atribuída pelo utilizador, veja Autenticar aplicações Java alojadas em Azure para Azure recursos usando uma identidade gerida atribuída pelo utilizador.

Ativar uma identidade gerida atribuída pelo sistema no recurso de alojamento do Azure

Para começar a usar uma identidade gerida atribuída pelo sistema com a sua aplicação, ative a identidade no recurso Azure que aloja a sua aplicação, como um Azure App Service, Azure Container Apps ou Azure Virtual Machines.

Pode ativar uma identidade gerida atribuída pelo sistema para um recurso Azure usando o portal Azure ou a Azure CLI.

  1. No portal Azure, navegue até ao recurso que hospeda o código da sua aplicação, como uma instância do 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 Identidade, alterne o controle deslizante Status para On.

  4. Selecione Guardar para aplicar as alterações.

    Uma captura de tela mostrando como habilitar uma identidade gerenciada atribuída ao 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 aplicam-se apenas a esse recurso específico.
  • Grupo de recursos: As funções atribuídas aplicam-se a todos os recursos contidos no grupo de recursos.
  • Subscrição: As funções atribuídas aplicam-se a todos os recursos contidos na subscrição.

O exemplo seguinte mostra como atribuir papéis no âmbito do grupo de recursos, uma vez que muitas aplicações gerem todos os seus recursos Azure relacionados usando um único grupo de recursos.

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

  2. Selecione Controle de Acesso (IAM) na barra de navegação à esquerda.

  3. Na página Controlo de acesso (IAM), selecione + Adicionar no menu superior e, em seguida, 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 com guias em várias etapas para atribuir funções a identidades. No separador inicial Função, utiliza a caixa de pesquisa na parte superior para localizar a função que deseja atribuir à identidade.

  5. Selecione a função nos resultados e, em seguida, escolha Avançar para ir para o separador Membros.

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

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

  8. No painel Selecionar identidades geridas, use a lista suspensa Assinatura e a lista suspensa Identidade gerida para filtrar as suas identidades nos resultados da pesquisa. Use a caixa de pesquisa Select para localizar a identidade do sistema que ativou para o recurso Azure que hospeda a sua aplicação.

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

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

  10. Selecione Revisão + Atribua na parte inferior da página.

  11. Na aba final Revisão + atribuir, selecione Revisão + atribuir para concluir o fluxo de trabalho.

Autenticar os serviços do Azure a partir da sua aplicação

A biblioteca de identidade Azure fornece várias credenciais como implementações de TokenCredential. Cada implementação suporta diferentes cenários e fluxos de autenticação Microsoft Entra. Para aplicações alojadas em Azure, use DefaultAzureCredential, que descobre automaticamente credenciais de identidade gerida quando está a correr em Azure.

Implementar o código

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

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

Acede aos serviços do Azure utilizando classes cliente especializadas das bibliotecas cliente do Azure SDK. Os seguintes exemplos de código mostram-lhe como configurar a credencial para autenticação de identidade gerida atribuída pelo sistema.

Usar DefaultAzureCredential

Use DefaultAzureCredential para aplicações alojadas em Azure porque descobre automaticamente credenciais de identidade gerida ao correr em Azure. Para identidades geridas atribuídas pelo sistema, não é necessária configuração adicional.

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 Credencial de Identidade Gerida

Se quiser usar explicitamente a credencial de identidade gerida e evitar a procura na cadeia de credenciais em DefaultAzureCredential, use ManagedIdentityCredential diretamente. Para identidades geridas atribuídas pelo sistema, não especifique um ID de 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óximos passos

Este artigo abordava a autenticação usando uma identidade gerida atribuída pelo sistema. Esta forma de autenticação é uma das várias formas de autenticar no Azure SDK para Java. Os artigos seguintes descrevem outras formas:

Se tiver problemas relacionados com a autenticação de aplicações Azure-hospedadas, consulte Troubleshoot Azure-hosted application authentication.

Depois de dominar a autenticação, consulte Configure o registo no Azure SDK para Java para informações sobre a funcionalidade de registo fornecida pelo SDK.