Nota
O acesso a esta página requer autorização. Pode tentar iniciar sessão ou alterar os diretórios.
O acesso a esta página requer autorização. Pode tentar alterar os diretórios.
As aplicações alojadas fora do Azure, como em instalações locais ou num centro de dados de terceiros, devem usar um principal de serviço de aplicação através do Microsoft Entra ID para autenticar aos serviços Azure. Nas secções seguintes, aprende-se:
- Como registar uma aplicação no Microsoft Entra para criar um principal de serviço.
- Como atribuir funções a permissões de escopo.
- Como autenticar-se usando um principal de serviço a partir do código da sua aplicação.
Ao utilizar princípios dedicados de serviços de aplicação, pode seguir o princípio do menor privilégio ao aceder aos recursos do Azure. Limite as permissões aos requisitos específicos da aplicação durante o desenvolvimento para evitar o acesso acidental a recursos do Azure destinados a outras aplicações ou serviços. Esta abordagem também ajuda a evitar problemas ao passar a aplicação para produção, garantindo que a aplicação não é demasiado privilegiada no ambiente de desenvolvimento.
Crie um registo diferente para cada ambiente onde hospeda a aplicação. Pode configurar permissões de recurso específicas para cada principal de serviço e garantir que uma aplicação implementada num ambiente não acede a recursos do Azure noutro ambiente.
Registe a aplicação no Azure
Os objetos principais de serviço de aplicação são criados através de um registo de aplicação no Azure, utilizando o portal do Azure ou o Azure CLI.
No portal Azure, use a barra de pesquisa para navegar até à página App registrations.
Na página App registrations, selecione + Nova inscrição.
Na página de Registar uma candidatura
- Para o campo Nome, insira um valor descritivo que inclua o nome do aplicativo e o ambiente de destino.
- Para o Tipos de conta suportados, selecione Contas apenas neste diretório organizacional (Somente Liderado pelo Cliente Microsoft - Locatário único)ou a opção que melhor atenda às suas necessidades.
Selecione Registrar para registar a sua aplicação e criar o principal de serviço.
Na página de registro do aplicativo para seu aplicativo, copie o ID do aplicativo (cliente) e ID do diretório (locatário) e cole-os em um local temporário para uso posterior nas configurações de código do aplicativo.
Selecione Adicionar um certificado ou secreto para configurar credenciais para seu aplicativo.
Na página Certificados & segredos, selecione + Novo segredo de cliente.
No Adicionar um segredo de cliente no painel suspenso que se abre:
- Para a Descrição, introduza um valor de
Current. - Para o valor Expires, mantenha o valor recomendado por defeito de
180 days. - Selecione Adicionar para adicionar o segredo.
- Para a Descrição, introduza um valor de
Na página Certificados & segredos, copie a propriedade Value do segredo do cliente para uso em uma etapa futura.
Observação
O valor secreto do cliente só é exibido uma vez após a criação do registro do aplicativo. Você pode adicionar mais segredos de cliente sem invalidar esse segredo de cliente, mas não há como exibir esse valor novamente.
Atribuir funções à entidade de serviço do aplicativo
De seguida, determina que funções (permissões) a tua aplicação precisa sobre que recursos e atribui esses papéis ao principal de serviço que criaste. Os papéis podem ser atribuídos no âmbito do recurso, grupo de recursos ou subscrição. Este exemplo mostra como atribuir papéis no âmbito do grupo de recursos, uma vez que a maioria das aplicações agrupa todos os seus recursos do Azure num único grupo de recursos.
No portal Azure, navegue até à página Overview do grupo de recursos que contém a sua aplicação.
Selecione Controle de acesso (IAM) na navegação à esquerda.
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.
Na guia Função , use a caixa de pesquisa para localizar a função que você deseja atribuir. Selecione a função e, em seguida, escolha Avançar.
Na aba Membros
- Para o valor Atribuir acesso a , selecione Usuário, grupo ou entidade de serviço .
- Para o valor Membros, escolha + Selecionar membros para abrir o painel flutuante Selecionar membros.
- Procure o principal de serviço que criou anteriormente e selecione-o nos resultados filtrados. Escolha e depois selecione para selecionar o grupo e fechar o painel de pop-up.
- Selecione Revisar + atribuir no fundo do separador Membros.
No separador Rever + atribuir, selecione Rever + atribuir na parte de baixo da página.
Definir as variáveis de ambiente do aplicativo
Em tempo de execução, certas credenciais da biblioteca de identidade Azure, como DefaultAzureCredential, EnvironmentCredential e ClientSecretCredential, pesquisam informação do principal de serviço por convenção nas variáveis de ambiente. Ao trabalhar com Java, pode configurar variáveis de ambiente de várias formas, dependendo das suas ferramentas e ambiente.
Independentemente da abordagem escolhida, configure as seguintes variáveis de ambiente para um principal de serviço:
-
AZURE_CLIENT_ID: Usado para identificar a aplicação registada em Azure. -
AZURE_TENANT_ID: O ID do tenant da Microsoft Entra. -
AZURE_CLIENT_SECRET: A credencial secreta que foi gerada para o aplicativo.
Defina as seguintes variáveis de ambiente. Substitua os valores provisórios pelos valores reais do registo da sua aplicação:
export AZURE_CLIENT_ID="<your-client-id>"
export AZURE_TENANT_ID="<your-tenant-id>"
export AZURE_CLIENT_SECRET="<your-client-secret>"
Para uma aplicação Java a correr como um serviço systemd num servidor de produção, defina as variáveis de ambiente num ficheiro e referencia-o com a diretiva EnvironmentFile no ficheiro da unidade de serviço:
[Unit]
Description=Java application service
After=network.target
[Service]
User=app-user
WorkingDirectory=/path/to/java-app
EnvironmentFile=/path/to/java-app/app-environment-variables
ExecStart=/usr/bin/java -jar app.jar
[Install]
WantedBy=multi-user.target
O ficheiro de ambiente deve conter uma lista de variáveis de ambiente com os seus valores:
AZURE_CLIENT_ID=<your-client-id>
AZURE_TENANT_ID=<your-tenant-id>
AZURE_CLIENT_SECRET=<your-client-secret>
Autenticar os serviços do Azure a partir da sua aplicação
A biblioteca de Identidade do Azure fornece várias credenciais - implementações de TokenCredential que suportam diferentes cenários e fluxos de autenticação da Microsoft Entra. Os passos seguintes mostram-lhe como usar o ClientSecretCredential quando trabalha com responsáveis de serviço localmente e em produção.
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 de cliente especializadas das várias bibliotecas de clientes do Azure SDK. Para qualquer código Java que crie um objeto cliente do Azure SDK na sua aplicação, siga estes passos:
- Importa a
ClientSecretCredentialBuilderclasse docom.azure.identitypacote. - Crie um
ClientSecretCredentialobjeto usandoClientSecretCredentialBuildercom ostenantId,clientId, eclientSecret. - Passa a instância
ClientSecretCredentialpara o métodocredentialdo construtor de objetos cliente Azure SDK.
Um exemplo desta 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();