Partilhar via


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

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 sobre:

  • Conceitos essenciais de identidade gerida.
  • Como criar uma identidade gerida atribuída pelo utilizador para a sua aplicação.
  • Como atribuir funções à identidade gerida atribuída a utilizador.
  • Como autenticar-se usando a identidade gerida atribuída pelo utilizador 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 utilizador para uma aplicação alojada no Azure. Se precisar de usar uma identidade gerida atribuída pelo sistema, veja Autenticar aplicações Java alojadas no Azure a recursos do Azure usando uma identidade gerida atribuída pelo sistema.

Criar uma identidade gerenciada atribuída pelo usuário

As identidades geridas atribuídas pelo utilizador são criadas como recursos autónomos na sua subscrição Azure usando o portal Azure ou a Azure CLI. Azure CLI comandos podem ser executados no Azure Cloud Shell ou numa estação de trabalho com o Azure CLI instalado.

  1. No portal Azure, introduza Identidades Geridas na barra principal de pesquisa e selecione o resultado correspondente na secção Serviços.

  2. Na página Identidades Gerenciadas, selecione + Criar.

    Uma captura de tela mostrando a página para gerenciar identidades gerenciadas atribuídas pelo usuário.

  3. Na página Criar Identidade Gerida Atribuída ao Utilizador, selecione uma subscrição, um grupo de recursos e uma região para a identidade gerida atribuída ao utilizador, e forneça um nome.

  4. Selecione Rever + criar para rever e validar as suas entradas.

    Uma captura de tela mostrando o formulário para criar uma identidade gerenciada atribuída pelo usuário.

  5. Selecione Criar para criar a identidade gerenciada atribuída pelo usuário.

  6. Depois que a identidade for criada, selecione Ir para o recurso.

  7. Na página Visão Geral da nova identidade, copie o valor ID do Cliente para utilizar mais tarde, ao configurar o código da aplicação.

Atribuir a identidade gerenciada ao seu aplicativo

Uma identidade gerida atribuída pelo utilizador pode ser associada a um ou mais recursos do Azure. Todos os recursos que usam essa identidade obtêm as permissões aplicadas por meio das funções da identidade.

  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 para o separador Atribuído ao usuário.

  4. Selecione + Adicionar para abrir o painel Adicionar identidade gerenciada atribuída ao usuário.

  5. No painel Adicionar identidade gerenciada atribuída ao utilizador, use a lista suspensa Assinatura para filtrar os resultados da pesquisa para as suas identidades. Use a caixa de pesquisa Identidades geridas atribuídas pelo utilizador para localizar a identidade gerida atribuída pelo utilizador que ativou para o recurso Azure que hospeda a sua aplicação.

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

    Uma captura de tela mostrando como associar uma identidade gerenciada atribuída pelo usuário a um aplicativo.

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 para a página Visão Geral do grupo de recursos que contém o aplicativo com a identidade gerida atribuída pelo utilizador.

  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 gerida atribuída pelo utilizador 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 Azure Identity oferece diferentes credenciais como implementações de TokenCredential. Cada implementação suporta diferentes cenários e fluxos de autenticação Microsoft Entra. Para identidades geridas atribuídas pelo utilizador, especifique o ID do cliente, o ID do recurso ou o ID do objeto da identidade ao configurar a credencial.

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 utilizador.

Usar DefaultAzureCredential

Use DefaultAzureCredential como credencial para aplicações Azure alojadas. Para identidades geridas atribuídas pelo utilizador, configure o ID do cliente usando o managedIdentityClientId método:

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

// Configure DefaultAzureCredential with the user-assigned managed identity's client ID
DefaultAzureCredential credential = new DefaultAzureCredentialBuilder()
    .managedIdentityClientId("<user-assigned-managed-identity-client-id>")
    .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 utilizador, pode especificar a identidade usando o ID do cliente, ID de recurso ou ID de objeto.

Use o ID do cliente para identificar uma identidade gerida quando configurar aplicações ou serviços que precisam de autenticação, usando essa identidade.

Recupere o ID do cliente atribuído a uma identidade gerida atribuída pelo utilizador usando o seguinte comando:

az identity show \
    --resource-group <resource-group-name> \
    --name <identity-name> \
    --query clientId \
    --output tsv

Configure ManagedIdentityCredential com a 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;

// Specify the client ID of the user-assigned managed identity
ManagedIdentityCredential credential = new ManagedIdentityCredentialBuilder()
    .clientId("<user-assigned-managed-identity-client-id>")
    .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 utilizador. Esta forma de autenticação é uma das várias formas de autenticar no Azure SDK para Java. Os artigos seguintes descrevem outras formas de autenticação:

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.