Autenticar serviços do Azure Batch com o Microsoft Entra ID

O Azure Batch dá suporte à autenticação com o Microsoft Entra ID, o diretório multilocatário baseado em nuvem e o serviço de gerenciamento de identidades da Microsoft. O Azure usa o Microsoft Entra ID para autenticar os seus próprios clientes, administradores de serviço e utilizadores organizacionais.

A forma recomendada de autenticar Azure Batch aplicações é usar a biblioteca cliente Azure Identity, que fornece classes de autenticação baseadas em tokens (como DefaultAzureCredential, ManagedIdentityCredential, ClientSecretCredential e InteractiveBrowserCredential) que funcionam de forma consistente, quer a sua aplicação corra localmente, em Azure ou on-premises. Para uma visão geral das estratégias de autenticação recomendadas, veja:

Este artigo descreve dois cenários comuns para autenticação no Azure Batch com Microsoft Entra ID:

  • A autenticação integrada (interativa) autentica o utilizador que está a interagir com uma aplicação. Use uma credencial como InteractiveBrowserCredential ou DefaultAzureCredential (que pode encadear através de login de ferramentas de programador como CLI do Azure, Visual Studio e Visual Studio Code).

  • A autenticação da entidade de serviço ou da identidade gerida autentica uma aplicação sem intervenção do utilizador. Use uma credencial como ManagedIdentityCredential para aplicações alojadas em Azure, ou ClientSecretCredential / ClientCertificateCredential para aplicações que se autenticam com o segredo ou certificado de uma aplicação registada.

Para obter mais informações sobre o Microsoft Entra ID, consulte a documentação do Microsoft Entra.

Reunir pontos de extremidade para autenticação

Para autenticar aplicativos em lote com o Microsoft Entra ID, você precisa incluir o ponto de extremidade do Microsoft Entra e o ponto de extremidade do recurso Batch em seu código.

Ponto de extremidade do Microsoft Entra

O ponto de extremidade de autoridade base do Microsoft Entra é https://login.microsoftonline.com/. Para autenticar com o Microsoft Entra ID, use este ponto de extremidade com o ID do locatário que identifica o locatário do Microsoft Entra a ser utilizado para autenticação.

https://login.microsoftonline.com/<tenant-id>

Você pode obter sua ID de locatário na página principal do Microsoft Entra ID no portal do Azure. Você também pode selecionar Propriedades na navegação à esquerda e ver a ID do locatário na página Propriedades.

Captura de ecrã do ID do Inquilino no portal do Azure.

Importante

  • O ponto de extremidade do Microsoft Entra específico do inquilino é necessário quando efetua autenticação usando uma entidade de serviço.

  • Quando te autenticas usando autenticação integrada, o endpoint específico do inquilino é recomendado, mas opcional. Você também pode usar o ponto de extremidade comum do Microsoft Entra para fornecer uma interface genérica de recolha de credenciais quando não é fornecido um locatário específico. O ponto final comum é https://login.microsoftonline.com/common.

Para mais informações sobre os pontos de extremidade do Microsoft Entra, consulte Autenticação versus autorização.

Ponto de extremidade de recurso em lote

Use o endpoint https://batch.core.windows.net/ do recurso Batch para adquirir um token para autenticar requisições para o serviço Batch.

Registe a sua candidatura junto de um inquilino

A primeira etapa para usar a autenticação do Microsoft Entra é registrar seu aplicativo em um locatário do Microsoft Entra. Depois de a sua aplicação estar registada, pode usar as credenciais Azure Identity library do seu código para adquirir Microsoft Entra tokens para o serviço Batch. O registo da sua candidatura é obrigatório para fluxos confidenciais de clientes (principal de serviço) e para qualquer fluxo interativo que exija um registo de aplicação específico para o inquilino.

Tip

Se o seu código usar DefaultAzureCredential e iniciar sessão através de uma ferramenta de programador (CLI do Azure, Azure PowerShell, Visual Studio ou Visual Studio Code) ou de uma identidade gerida, não precisa de registar uma aplicação separada — a credencial usa a identidade já configurada nesse ambiente.

Ao registrar seu aplicativo, você fornece informações sobre seu aplicativo para o Microsoft Entra ID. Em seguida, o Microsoft Entra ID fornece uma ID de aplicação, também chamada de ID de cliente, que utiliza para associar a sua aplicação ao Microsoft Entra ID em tempo de execução. Para obter mais informações sobre a ID da aplicação, consulte Objetos da entidade de aplicação e serviço no Microsoft Entra ID.

Para registar a sua candidatura em lote, siga os passos em Registar uma candidatura.

Depois de registrar seu aplicativo, você pode ver o ID do aplicativo (cliente) na página Visão geral do aplicativo.

Captura de ecrã do ID da Aplicação apresentado no portal do Azure.

Configurar autenticação integrada

Para autenticar com autenticação integrada, você precisa conceder permissão ao seu aplicativo para se conectar à API de serviço em lote. Esta etapa permite que seu aplicativo use o Microsoft Entra ID para autenticar chamadas para a API de serviço em lote.

Depois de registrar seu aplicativo, siga estas etapas para conceder ao aplicativo acesso ao serviço Batch:

  1. No portal do Azure, pesquise e selecione registros de aplicativos.
  2. Na página Registos de Aplicações, selecione a sua aplicação.
  3. Na página do seu aplicativo, selecione Permissões de API na navegação à esquerda.
  4. Na página Permissões da API, selecione Adicionar uma permissão.
  5. Na página Solicitar permissões de API, selecione Azure Batch.
  6. Na página Azure Batch, em Selecionar permissões, marque a caixa de seleção ao lado de user_impersonation e, em seguida, selecione Adicionar permissões.

A página de permissões da API agora mostra que seu aplicativo Microsoft Entra tem acesso ao Microsoft Graph e ao Azure Batch. As permissões são concedidas ao Microsoft Graph automaticamente quando você registra um aplicativo com o Microsoft Entra ID.

Configurar um principal de serviço

Para autenticar uma aplicação que é executada sem supervisão, use uma entidade de serviço. Quando a sua aplicação autentica usando uma entidade de serviço, envia a ID da aplicação e uma chave secreta para o Microsoft Entra ID.

Depois de registar a sua aplicação, siga estas etapas no portal do Azure para configurar um principal de serviço:

  1. Solicite um segredo para a sua candidatura.
  2. Atribua o controle de acesso baseado em função do Azure (Azure RBAC) ao seu aplicativo.

Solicite um segredo para a sua candidatura

Siga estas etapas para criar e copiar a chave secreta a ser usada em seu código:

  1. No portal do Azure, pesquise e selecione registros de aplicativos.
  2. Na página Registos de Aplicações, selecione a sua aplicação.
  3. Na página do seu aplicativo, selecione Certificados & segredos na navegação à esquerda.
  4. Na página Certificados & segredos, selecione Novo segredo do cliente.
  5. Na página Adicionar um segredo do cliente, insira uma descrição e selecione um período de expiração para o segredo.
  6. Selecione Adicionar para criar o segredo e exibi-lo na página Certificados & segredos .
  7. Copie o valor secreto para um local seguro, porque você não poderá acessá-lo novamente depois de sair desta página. Se perder o acesso à sua chave, pode gerar uma nova.

Atribuir o RBAC do Azure ao seu aplicativo

Siga estas etapas para atribuir uma função RBAC do Azure ao seu aplicativo. Para obter mais informações, consulte Controle de acesso baseado em função para o serviço Batch do Azure.

  1. No portal do Azure, navegue até a conta Batch que seu aplicativo usa.
  2. Selecione Controle de acesso (IAM) na navegação à esquerda.
  3. Na página Controle de acesso (IAM), selecione Adicionar atribuição de função.
  4. Na página Adicionar atribuição de função, selecione o separador Função e, em seguida, selecione uma das funções RBAC internas do Azure Batch para a sua aplicação.
  5. Selecione a guia Membros e selecione Selecionar membros em Membros.
  6. No ecrã Selecionar membros , procure e selecione a sua aplicação e, em seguida, selecione Selecionar.
  7. Selecione Rever + atribuir na página Adicionar atribuição de função.

O seu aplicativo agora deve aparecer no separador de Atribuições de função da página de Controle de acesso (IAM) da conta de Batch.

Exemplos de código

Os exemplos de código nesta secção mostram como autenticar no Azure Batch com o Microsoft Entra ID usando credenciais da biblioteca Azure Identity. Os exemplos usam .NET e Python, mas os mesmos padrões aplicam-se a outras linguagens SDK do Azure.

Nota

Um token de autenticação do Microsoft Entra expira após uma hora. Quando utiliza um objeto BatchClient de longa duração, a credencial Azure IdentityTokenCredential que fornece coloca o token em cache e renova-o de forma transparente, pelo que um novo token é obtido do Microsoft Entra ID apenas quando necessário. Para obter mais informações sobre tokens no Microsoft Entra ID, consulte Tokens de segurança.

Tip

Para a maioria dos cenários, use DefaultAzureCredential. Ele tenta automaticamente múltiplos métodos de autenticação (identidade gerida, variáveis de ambiente, login de ferramentas de programação, e assim por diante), por isso o mesmo código funciona quer a tua aplicação corra localmente durante o desenvolvimento, no Azure ou on-premises. Consulte Autenticar .NET apps e Autenticar Python apps para orientação na escolha da credencial certa.

Exemplo de código: Autenticar no Azure Batch a partir de .NET

Este exemplo usa Azure. Compute.Batch com o Azure. Biblioteca de identidade.

  1. Instale os pacotes NuGet Azure.Compute.Batch e Azure.Identity.

  2. Declare as seguintes using instruções em seu código:

    using Azure.Compute.Batch;
    using Azure.Core;
    using Azure.Identity;
    
  3. Consulte o endpoint da sua conta Batch:

    private const string BatchAccountUrl = "https://<myaccount>.<mylocation>.batch.azure.com";
    
  4. Crie uma credencial e passe-a para o construtor BatchClient. Utilize o cliente para operações subsequentes com o serviço Batch.

    Recomendado: DefaultAzureCredential — funciona localmente com os logins de ferramentas de programador (CLI do Azure, Visual Studio, Visual Studio Code) e usa identidade gerida automaticamente quando a aplicação corre em Azure:

    TokenCredential credential = new DefaultAzureCredential();
    
    BatchClient client = new BatchClient(new Uri(BatchAccountUrl), credential);
    
    await foreach (BatchJob job in client.GetJobsAsync())
    {
        Console.WriteLine(job.Id);
    }
    

    Início de sessão interativo (integrado) — pede ao utilizador que inicie sessão através do navegador do sistema. Use isto quando a sua aplicação tiver de autenticar um utilizador específico de forma interativa:

    TokenCredential credential = new InteractiveBrowserCredential(
        new InteractiveBrowserCredentialOptions
        {
            TenantId = "<tenant-id>",
            ClientId = "<application-id>",      // optional; required only if you registered your own app
            RedirectUri = new Uri("http://localhost")
        });
    
    BatchClient client = new BatchClient(new Uri(BatchAccountUrl), credential);
    

    Principal de serviço (cliente secreto) — utilização para aplicações não acompanhadas que autenticam com um segredo de registo de aplicações:

    TokenCredential credential = new ClientSecretCredential(
        tenantId: "<tenant-id>",
        clientId: "<application-id>",
        clientSecret: "<client-secret>");
    
    BatchClient client = new BatchClient(new Uri(BatchAccountUrl), credential);
    

    Identidade gerida — use quando a sua aplicação corre num recurso Azure (como uma VM, App Service ou Container App) que tenha uma identidade gerida atribuída pelo sistema ou pelo utilizador:

    // System-assigned managed identity
    TokenCredential credential = new ManagedIdentityCredential();
    
    // Or, user-assigned managed identity
    // TokenCredential credential = new ManagedIdentityCredential(clientId: "<user-assigned-client-id>");
    
    BatchClient client = new BatchClient(new Uri(BatchAccountUrl), credential);
    

Exemplo de código: Autenticar para Azure Batch a partir de Python

Este exemplo utiliza o cliente azure-batch com as credenciais da biblioteca azure-identity. A classe legada azure.common.credentials.ServicePrincipalCredentials está preterida; utilize credenciais azure-identity em alternativa.

  1. Instale os pacotes necessários:

    pip install azure-batch azure-identity
    
  2. Consulte o endpoint da sua conta Batch e o âmbito do recurso Batch:

    BATCH_ACCOUNT_URL = "https://<myaccount>.<mylocation>.batch.azure.com"
    BATCH_SCOPE = "https://batch.core.windows.net/.default"
    
  3. Cria uma credencial e passa-a para o BatchServiceClient.

    Recomendado: DefaultAzureCredential — trabalha localmente com login de ferramentas de programador e usa identidade gerida automaticamente quando executado em Azure:

    from azure.batch import BatchServiceClient
    from azure.identity import DefaultAzureCredential
    
    credential = DefaultAzureCredential()
    
    batch_client = BatchServiceClient(
        credentials=credential,
        batch_url=BATCH_ACCOUNT_URL,
    )
    

    Início de sessão interativo (integrado) — pede ao utilizador que inicie sessão através do navegador do sistema:

    from azure.batch import BatchServiceClient
    from azure.identity import InteractiveBrowserCredential
    
    credential = InteractiveBrowserCredential(
        tenant_id="<tenant-id>",
        client_id="<application-id>",  # optional; required only if you registered your own app
    )
    
    batch_client = BatchServiceClient(
        credentials=credential,
        batch_url=BATCH_ACCOUNT_URL,
    )
    

    Principal de serviço (segredo do cliente) — utilize para aplicações não assistidas:

    from azure.batch import BatchServiceClient
    from azure.identity import ClientSecretCredential
    
    credential = ClientSecretCredential(
        tenant_id="<tenant-id>",
        client_id="<application-id>",
        client_secret="<client-secret>",
    )
    
    batch_client = BatchServiceClient(
        credentials=credential,
        batch_url=BATCH_ACCOUNT_URL,
    )
    

    Identidade gerida — use quando a sua aplicação corre num recurso Azure com identidade gerida:

    from azure.batch import BatchServiceClient
    from azure.identity import ManagedIdentityCredential
    
    # System-assigned managed identity
    credential = ManagedIdentityCredential()
    
    # Or, user-assigned managed identity
    # credential = ManagedIdentityCredential(client_id="<user-assigned-client-id>")
    
    batch_client = BatchServiceClient(
        credentials=credential,
        batch_url=BATCH_ACCOUNT_URL,
    )
    

Próximos passos