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 seções a seguir, você aprende:
- Como registar uma aplicação na plataforma Microsoft Entra para criar um principal de serviço
- Como atribuir funções às permissões de âmbito
- Como autenticar usando um principal de serviço a partir do código da sua aplicação
Utilizar princípios dedicados de serviços de aplicação permite-lhe aderir ao princípio do menor privilégio ao aceder aos recursos do Azure. As permissões estão limitadas aos requisitos específicos da aplicação durante o desenvolvimento, evitando o acesso acidental a recursos do Azure destinados a outras aplicações ou serviços. Essa abordagem também ajuda a evitar problemas quando o aplicativo é movido para produção, garantindo que ele não seja excessivamente privilegiado no ambiente de desenvolvimento.
Um registro de aplicativo diferente deve ser criado para cada ambiente em que o aplicativo está hospedado. Isto permite configurar permissões específicas de recurso para cada principal de serviço e garantir que uma aplicação implementada num ambiente não comunica com recursos do Azure que fazem parte de outro 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, insira um valor de Current.
- Para o valor expira, deixe o valor padrão recomendado de 180 dias.
- Selecione Adicionar para adicionar o segredo.
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. Existem várias formas de configurar variáveis de ambiente ao trabalhar com Python, 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.
Em Visual Studio Code, as variáveis de ambiente podem ser definidas no ficheiro launch.json localizado na pasta .vscode do seu projeto. Esses valores são carregados automaticamente quando a aplicação arranca. No entanto, essas configurações não viajam com seu aplicativo durante a implantação, portanto, você precisa configurar variáveis de ambiente em seu ambiente de hospedagem de destino.
{
"configurations": [
{
"env": {
"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 azure-identity fornece várias implementações credenciais — implementações de TokenCredential adaptadas para suportar diferentes cenários e fluxos de autenticação Microsoft Entra. Os passos seguintes demonstram como usar ClientSecretCredential ao trabalhar com entidades de serviço localmente e em produção.
Implementar o código
Comece por adicionar o pacote à sua candidatura.
pip install azure-identity
De seguida, para qualquer código Python que crie um objeto cliente do Azure SDK na sua aplicação, deve:
- Importe a
ClientSecretCredentialclasse doazure.identitymódulo. - Importa o
osmódulo para ler variáveis de ambiente. - Leia as variáveis de ambiente para obter o ID do cliente, o ID do tenant e o segredo do cliente.
- Crie um
ClientSecretCredentialobjeto que passe o ID do inquilino, o ID do cliente e o segredo do cliente. - Passe o objeto
ClientSecretCredentialpara o construtor do objeto cliente do Azure SDK.
Um exemplo dessa abordagem é mostrado no segmento de código a seguir.
import os
from azure.identity import ClientSecretCredential
from azure.storage.blob import BlobServiceClient
tenant_id = os.environ.get("AZURE_TENANT_ID")
client_id = os.environ.get("AZURE_CLIENT_ID")
client_secret = os.environ.get("AZURE_CLIENT_SECRET")
credential = ClientSecretCredential(tenant_id, client_id, client_secret)
blob_service_client = BlobServiceClient(
account_url="https://<my_account_name>.blob.core.windows.net",
credential=credential)