Compartilhar via


Autenticar aplicativos Java em serviços do Azure durante o desenvolvimento local usando principais de serviço

Durante o desenvolvimento local, os aplicativos precisam se autenticar para Azure para acessar vários serviços Azure. Você pode autenticar localmente usando uma das seguintes abordagens:

Este artigo explica como usar uma entidade de serviço de aplicativo. Para obter mais informações sobre entidades de serviço, consulte Objetos de aplicativo e de entidade de serviço no Microsoft Entra ID. Neste artigo, você aprende:

  • Como registrar um aplicativo na Microsoft Entra para criar um principal de serviço.
  • Como usar Microsoft Entra grupos para gerenciar permissões com eficiência.
  • Como atribuir funções a permissões dentro de um escopo.
  • Como autenticar usando um principal de serviço a partir do código do seu aplicativo.

O uso de entidades de serviço de aplicativo dedicadas permite que você siga o princípio do privilégio mínimo ao acessar recursos do Azure. Você pode limitar as permissões aos requisitos específicos do aplicativo durante o desenvolvimento para impedir o acesso acidental a Azure recursos destinados a outros aplicativos ou serviços. Essa abordagem também ajuda você a evitar problemas ao mover o aplicativo para produção, garantindo que ele não tenha privilégios excessivos no ambiente de desenvolvimento.

Um diagrama que mostra como um aplicativo de Java local usa um principal de serviço para se conectar a recursos do Azure.

Quando você registra o aplicativo no Azure, um principal de serviço do aplicativo é criado. Para desenvolvimento local, você deve:

  • Crie um registro de aplicativo separado para cada desenvolvedor que trabalha no aplicativo para que cada desenvolvedor tenha sua própria entidade de serviço de aplicativo e não precise compartilhar credenciais.
  • Crie um registro de aplicativo separado para cada aplicativo para limitar as permissões do aplicativo apenas ao que é necessário.

Durante o desenvolvimento local, defina variáveis de ambiente com a identidade do principal do serviço de aplicativo. A biblioteca Azure Identity lê essas variáveis de ambiente para autenticar o aplicativo nos recursos de Azure necessários.

Registrar o aplicativo no Azure

Os objetos do service principal do aplicativo são criados por meio de um registro no Azure usando o portal do Azure ou o Azure CLI.

  1. No portal Azure, use a barra de pesquisa para navegar até a página App registrations.

  2. Na página App registrations, selecione + Novo registro.

  3. Na página Registrar um aplicativo:

    • Para o campo Nome, insira um valor descritivo que inclui o nome do aplicativo e o ambiente de destino.
    • Para os Tipos de conta com suporte, selecione Contas somente neste diretório organizacional (somente cliente da Microsoft – Locatário único) ou qualquer opção que melhor atenda às suas necessidades.
  4. Selecione Registrar para registrar seu aplicativo e criar a entidade de serviço.

    Uma captura de tela mostrando como criar um registro de aplicativo no portal do Azure.

  5. Na página Registro do aplicativo , copie a ID do aplicativo (cliente) e a ID do diretório (locatário) e cole-as em um local temporário para uso posterior nas configurações do código do aplicativo.

  6. Selecione Adicionar um certificado ou um secreto para configurar credenciais para seu aplicativo.

  7. Na página Certificados e segredos, selecione + Novo segredo do cliente.

  8. No painel de submenu Adicionar um segredo do cliente que se abre:

    • Para a Descrição, insira um valor para Atual.
    • Para o valor de expiração , deixe o valor padrão recomendado de 180 dias.
    • Selecione Adicionar para adicionar o segredo.
  9. Na página Certificados e segredos, copie a propriedade Value do segredo do cliente para uso em uma etapa futura.

    Observação

    O valor do segredo do cliente só é exibido uma vez depois que o registro do aplicativo é criado. Você pode adicionar mais segredos do cliente sem invalidar esse segredo do cliente, mas não há como exibir esse valor novamente.

Criar um grupo de Microsoft Entra para desenvolvimento local

Crie um grupo do Microsoft Entra para encapsular as funções (permissões) que o aplicativo precisa no desenvolvimento local, em vez de atribuir as funções a objetos principal de serviço individuais. Essa abordagem oferece as seguintes vantagens:

  • Cada desenvolvedor tem as mesmas funções atribuídas no nível do grupo.
  • Se uma nova função for necessária para o aplicativo, ela só precisará ser adicionada ao grupo do aplicativo.
  • Se um novo desenvolvedor ingressar na equipe, um novo principal de serviço de aplicativo será criado para o desenvolvedor e adicionado ao grupo, garantindo que o desenvolvedor tenha as permissões corretas para trabalhar no aplicativo.
  1. Navegue até a página de visão geral Microsoft Entra ID no portal Azure.

  2. Selecione Todos os grupos no menu à esquerda.

  3. Na página Grupos , selecione Novo grupo.

  4. Na página Novo grupo , preencha os seguintes campos de formulário:

    • Tipo de grupo: Selecione Segurança.
    • Nome do grupo: insira um nome para o grupo que inclui uma referência ao nome do aplicativo ou do ambiente.
    • Descrição do grupo: insira uma descrição que explique a finalidade do grupo.

    Uma captura de tela mostrando como criar um grupo no portal do Azure.

  5. Selecione o link Nenhum membro selecionado em Membros para adicionar membros ao grupo.

  6. No painel de submenu que é aberto, procure a entidade de serviço que você criou anteriormente e selecione-a nos resultados filtrados. Escolha o botão Selecionar na parte inferior do painel para confirmar sua seleção.

  7. Selecione Criar na parte inferior da página Novo grupo para criar o grupo e retornar à página Todos os grupos . Se você não vir o novo grupo listado, aguarde um momento e atualize a página.

Atribuir funções ao grupo

Em seguida, determine quais funções (permissões) seu aplicativo precisa em quais recursos e atribua essas funções ao grupo de Microsoft Entra criado. Os grupos podem ser atribuídos a uma função no nível do recurso, do grupo de recursos ou da assinatura. Este exemplo mostra como atribuir funções no escopo do grupo de recursos, já que a maioria dos aplicativos agrupa todos os seus recursos Azure em um único grupo de recursos.

  1. No portal Azure, navegue até a página Overview do grupo de recursos que contém seu aplicativo.

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

  3. Na página controle de acesso (IAM), selecione + Adicionar e escolha Adicionar atribuição de função no menu suspenso. A página Adicionar atribuição de função fornece várias guias para configurar e atribuir funções.

  4. Na guia Função , use a caixa de pesquisa para localizar a função que você deseja atribuir. Selecione a função e escolha Avançar.

  5. Na guia Membros :

    • Para atribuir acesso ao valor, selecione Usuário, grupo ou entidade de serviço .
    • Para o valor Membros, escolha + Selecionar membros para abrir o painel de seleção Selecionar membros.
    • Pesquise o grupo de Microsoft Entra criado anteriormente e selecione-o nos resultados filtrados. Escolha Selecionar para escolher o grupo e fechar o painel de menu.
    • Selecione Examinar + atribuir na parte inferior da guia Membros .

    A captura de tela mostrando como atribuir uma função ao grupo de Microsoft Entra.

  6. Na guia Revisão + atribuição , selecione Examinar + atribuir na parte inferior da página.

Definir as variáveis de ambiente do aplicativo

Durante a execução, determinadas credenciais da biblioteca Azure Identity, como DefaultAzureCredential, EnvironmentCredential e ClientSecretCredential, pesquisam informações do principal de serviço por convenção nas variáveis de ambiente. Ao trabalhar com Java, você pode configurar variáveis de ambiente de diferentes maneiras, dependendo de suas ferramentas e ambiente.

Independentemente da abordagem escolhida, configure as seguintes variáveis de ambiente para uma entidade de serviço:

  • AZURE_CLIENT_ID: usado para identificar o aplicativo registrado no Azure.
  • AZURE_TENANT_ID: O ID do locatário do Microsoft Entra.
  • AZURE_CLIENT_SECRET: a credencial secreta que foi gerada para o aplicativo.

Adicione as linhas a seguir ao arquivo ~/.bashrc ou ~/.zshrc. Substitua os valores de placeholder pelos valores reais do cadastro do aplicativo:

export AZURE_CLIENT_ID="<your-client-id>"
export AZURE_TENANT_ID="<your-tenant-id>"
export AZURE_CLIENT_SECRET="<your-client-secret>"

Depois de editar o arquivo, execute source ~/.bashrc ou source ~/.zshrc aplique as alterações à sessão atual.

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

A biblioteca Azure Identity fornece várias credenciais - implementações de TokenCredential que dão suporte a diferentes cenários e fluxos de autenticação do Microsoft Entra. As etapas a seguir mostram como usar ClientSecretCredential ao trabalhar com entidades de serviço tanto localmente quanto em produção.

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 várias bibliotecas de cliente Azure SDK. Para qualquer código Java que crie um objeto cliente Azure SDK em seu aplicativo, siga estas etapas:

  1. Importe a ClientSecretCredentialBuilder classe do com.azure.identity pacote.
  2. Crie um ClientSecretCredential objeto usando ClientSecretCredentialBuilder com o tenantId, clientIde clientSecret.
  3. Passe a instância de ClientSecretCredential para o método credential do construtor de objetos do cliente Azure SDK.

Um exemplo dessa abordagem é mostrado no seguinte segmento de código:

import com.azure.identity.ClientSecretCredential;
import com.azure.identity.ClientSecretCredentialBuilder;
import com.azure.storage.blob.BlobServiceClient;
import com.azure.storage.blob.BlobServiceClientBuilder;

String tenantId = System.getenv("AZURE_TENANT_ID");
String clientId = System.getenv("AZURE_CLIENT_ID");
String clientSecret = System.getenv("AZURE_CLIENT_SECRET");

ClientSecretCredential credential = new ClientSecretCredentialBuilder()
    .tenantId(tenantId)
    .clientId(clientId)
    .clientSecret(clientSecret)
    .build();

BlobServiceClient blobServiceClient = new BlobServiceClientBuilder()
    .endpoint("https://<account-name>.blob.core.windows.net")
    .credential(credential)
    .buildClient();

Próximas Etapas 

Este artigo abordou a autenticação por meio de uma entidade de serviço. Essa forma de autenticação é uma das várias maneiras que você pode autenticar no Azure SDK para Java. Os artigos a seguir descrevem outras maneiras de autenticar:

Se você encontrar problemas relacionados à autenticação da entidade de serviço, consulte Solucionar problemas de autenticação da entidade de serviço.

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.