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.
Durante o desenvolvimento local, as aplicações precisam de se autenticar no Azure para aceder a vários serviços do Azure. Este artigo explica como usar um principal de serviço de aplicação como uma das duas abordagens comuns para autenticação local.
- Como registar uma aplicação na plataforma Microsoft Entra para criar um principal de serviço
- Como usar grupos Microsoft Entra para gerir permissões de forma eficiente
- 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.
Quando a aplicação é registada no Azure, é criado um principal de serviço de aplicação. Para o desenvolvimento local:
- Crie um registro de aplicativo separado para cada desenvolvedor que trabalha no aplicativo para garantir que cada desenvolvedor tenha sua própria entidade de serviço de aplicativo, evitando a necessidade de compartilhar credenciais.
- Crie um registro de aplicativo separado para cada aplicativo para limitar as permissões do aplicativo apenas ao necessário.
Durante o desenvolvimento local, as variáveis de ambiente são definidas com a identidade principal do serviço do aplicativo. A biblioteca Azure Identity lê estas variáveis de ambiente para autenticar a aplicação aos recursos necessários do Azure.
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.
Nota
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.
Crie um grupo Microsoft Entra para desenvolvimento local
Crie um grupo Microsoft Entra para encapsular os papéis (permissões) que a aplicação necessita no desenvolvimento local, em vez de atribuir os papéis a objetos principais de serviço individuais. Esta 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 programador ingressar na equipa, um novo principal de serviço da aplicação será criado para o programador e adicionado ao grupo, garantindo que o programador tenha as permissões certas para trabalhar na aplicação.
Navegue até à página de visão geral Microsoft Entra ID no portal Azure.
Selecione Todos os grupos no menu à esquerda.
Na página Grupos , selecione Novo grupo.
Na página Novo de grupo, preencha os seguintes campos de formulário:
- Tipo de grupo: Selecione Segurança.
- Nome do grupo: insira um nome para o grupo que inclua uma referência ao nome do aplicativo ou ambiente.
- Descrição do grupo: insira uma descrição que explique a finalidade do grupo.
Selecione o link Sem membros selecionados em Membros para adicionar membros ao grupo.
No painel suspenso que se abre, procure o principal de serviço que criou anteriormente e selecione-o nos resultados filtrados. Escolha o botão Selecionar na parte inferior do painel para confirmar sua seleção.
Selecione Criar na parte inferior da página Novo grupo para criar o grupo e retornar à página Todos os grupos . Se não vir o novo grupo listado, aguarde um momento e atualize a página.
Atribuir funções ao grupo
De seguida, determina que funções (permissões) a tua aplicação precisa sobre que recursos e atribui esses papéis ao grupo Microsoft Entra que criaste. Os grupos podem receber uma função em um recurso, num grupo de recursos ou no âmbito de uma assinatura. 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.
- Procura o grupo Microsoft Entra que criaste anteriormente e seleciona-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: O ID da aplicação registada na Azure. -
AZURE_TENANT_ID: O ID do tenant da Microsoft Entra. -
AZURE_CLIENT_SECRET: A credencial secreta do cliente para a aplicação.
Como a maioria dos programadores trabalha em múltiplas aplicações, recomenda-se a utilização de um pacote como python-dotenv para aceder a variáveis de ambiente a partir de um .env ficheiro armazenado no diretório da aplicação durante o desenvolvimento. Esta abordagem abrange as variáveis do ambiente para que só esta aplicação as possa utilizar.
O ficheiro .env nunca é registado no sistema de controlo de versão, pois contém a chave secreta da aplicação do Azure. O ficheiro padrão .gitignore para Python exclui automaticamente o ficheiro .env do check-in.
Para usar o python-dotenv pacote, instale-o primeiro na sua aplicação:
pip install python-dotenv
Em seguida, crie um .env arquivo no diretório raiz do aplicativo. Defina os valores das variáveis de ambiente com os valores obtidos no processo de registo da aplicação:
AZURE_CLIENT_ID=<your-client-id>
AZURE_TENANT_ID=<your-tenant-id>
AZURE_CLIENT_SECRET=<your-client-secret>
Finalmente, no código de arranque da sua aplicação, use a python-dotenv biblioteca para ler as variáveis de ambiente do .env ficheiro no arranque:
from dotenv import load_dotenv
load_dotenv()
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)