Compartilhar via


Autenticar para Azure recursos de aplicativos Python hospedados localmente

Os aplicativos hospedados fora do Azure, como em um ambiente local ou em um data center de terceiros, devem usar uma entidade de serviço de aplicativo por meio de Microsoft Entra ID para autenticar nos serviços do Azure. Nas seções a seguir, você aprenderá:

  • Como registrar um aplicativo no Microsoft Entra para criar um principal de serviço
  • Como atribuir as funções às permissões de escopo
  • Como autenticar-se usando uma entidade de serviço direto do código do seu aplicativo

O uso de entidades de serviço de aplicativo dedicadas permite que você aderir ao princípio de privilégio mínimo ao acessar recursos do Azure. As permissões são limitadas aos requisitos específicos do aplicativo durante o desenvolvimento, impedindo o acesso acidental a recursos Azure destinados a outros aplicativos ou serviços. Essa abordagem também ajuda a evitar problemas quando o aplicativo é movido para produção, garantindo que ele não seja super privilegiado no ambiente de desenvolvimento.

Um registro de aplicativo diferente deve ser criado para cada ambiente em que o aplicativo está hospedado. Isso permite que permissões de recurso específicas do ambiente sejam configuradas para cada principal de serviço e garantir que um aplicativo implantado em um ambiente não interaja com recursos do Azure que fazem parte de outro ambiente.

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.

Atribuir funções ao principal de serviço do aplicativo

Em seguida, determine quais funções (permissões) seu aplicativo precisa em quais recursos e atribua essas funções à entidade de serviço que você criou. As funções podem ser atribuídas no escopo de um recurso, de um grupo de recursos ou de uma 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 a entidade de serviço que você criou anteriormente e selecione-a nos resultados filtrados. Escolha Selecionar para escolher o grupo e fechar o painel de menu.
    • Selecione Examinar + atribuir na parte inferior da guia Membros .

    Uma captura de tela mostrando como atribuir uma função à entidade de serviço.

  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. Há várias maneiras de configurar variáveis de ambiente ao trabalhar com Python, 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.

Em Visual Studio Code, as variáveis de ambiente podem ser definidas no arquivo launch.json localizado na pasta .vscode do projeto. Esses valores são extraídos automaticamente quando o aplicativo é iniciado. 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 nos serviços do Azure a partir do seu aplicativo

A biblioteca azure-identity fornece várias credenciais—implementações de TokenCredential adaptadas para dar suporte a diferentes cenários e fluxos de autenticação do Microsoft Entra. As etapas a seguir demonstram como usar ClientSecretCredential ao trabalhar com entidades de serviço localmente e em produção.

Implementar o código

Comece adicionando o pacote ao seu aplicativo.

pip install azure-identity

Em seguida, para qualquer código Python que crie um objeto cliente Azure SDK em seu aplicativo, você deve:

  1. Importar a classe ClientSecretCredential do módulo azure.identity.
  2. Importe o os módulo para ler variáveis de ambiente.
  3. Leia as variáveis de ambiente para obter a ID do cliente, a ID do locatário e o segredo do cliente.
  4. Crie um ClientSecretCredential objeto passando a ID do locatário, a ID do cliente e o segredo do cliente.
  5. Passe o objeto ClientSecretCredential para o construtor do objeto cliente 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)