Autenticar serviços do Lote do Azure com o Microsoft Entra ID
O Lote do Azure dá suporte à autenticação com o Microsoft Entra ID, o serviço de gerenciamento de diretório e identidade multilocatário baseado em nuvem da Microsoft. O Azure usa o Microsoft Entra ID para autenticar seus clientes, administradores de serviços e usuários organizacionais.
Este artigo descreve duas maneiras de usar a autenticação Microsoft Entra com o Lote do Azure:
A autenticação integrada autentica um usuário que está interagindo com um aplicativo. O aplicativo reúne as credenciais de um usuário e usa essas credenciais para autenticar o acesso aos recursos do Lote.
Uma entidade de serviço autentica um aplicativo autônomo. A entidade de serviço define a política e as permissões para o aplicativo e representar o aplicativo ao acessar recursos do Lote no runtime.
Para obter mais informações sobre a ID do Microsoft Entra, consulte a documentação do Microsoft Entra.
Coletar pontos de extremidade para autenticação
Para autenticar aplicativos do Lote com Microsoft Entra ID, você precisa incluir o ponto de extremidade do Microsoft Entra ID e o ponto de extremidade de recurso do Lote 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 esse ponto de extremidade com a ID do locatário que identifica o locatário do Microsoft Entra ID a ser usado 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 no painel de navegação esquerdo e ver a ID do Locatário na página Propriedades.
Importante
O ponto de extremidade específico ao locatário do Microsoft Entra é necessário quando você realiza uma autenticação usando uma entidade de serviço.
Quando você autentica usando a autenticação integrada, o ponto de extremidade específico do locatário é recomendado, mas opcional. Você também pode usar o ponto de extremidade comum do Microsoft Entra para fornecer uma interface de coleta de credenciais genérica quando um locatário específico não é fornecido. O ponto de extremidade comum é
https://login.microsoftonline.com/common
.
Para obter mais informações sobre pontos de extremidade do Microsoft Entra, consulte Autenticação versus autorização.
Ponto de extremidade de recursos do Lote
Use o ponto de extremidade de recursos do https://batch.core.windows.net/
para adquirir um token para autenticar solicitações no serviço do Lote.
Registrar seu aplicativo em um locatário
A primeira etapa para usar a autenticação do Microsoft Entra é registrar seu aplicativo em um locatário do Microsoft Entra. Quando você registra o aplicativo, pode chamar a MSAL (Biblioteca de Autenticação da Microsoft) do seu código. A MSAL fornece uma API para realizar a autenticação no Microsoft Entra ID por meio do aplicativo. O registro do aplicativo é necessário se você usa a autenticação integrada ou uma entidade de serviço.
Ao registrar o aplicativo, você fornece informações sobre ele ao Microsoft Entra ID. O Microsoft Entra ID, em seguida, fornece um ID do aplicativo (também chamado de ID do Cliente) que você usa para associar o aplicativo ao Microsoft Entra ID no runtime. Para obter mais informações sobre a ID do aplicativo, consulte objetos de aplicativo e entidade de serviço no Microsoft Entra ID.
Para registrar seu aplicativo do Lote, siga as etapas em Registrar um aplicativo.
Depois de registrar seu aplicativo, você pode ver a ID do aplicativo (cliente) na página Visão geral do aplicativo.
Configurar a autenticação integrada
Para autenticar com a autenticação integrada, você precisa conceder as permissão de aplicativo para se conectar à API do serviço do Lote. Esta etapa permite que seu aplicativo use o Microsoft Entra ID para autenticar chamadas para a API de serviço do Lote.
Depois de registrar seu aplicativo, siga estas etapas para conceder ao aplicativo acesso ao serviço do Lote:
- No portal do Azure, pesquise e selecione Registros de aplicativo.
- Na página Registros de aplicativo, selecione seu aplicativo.
- Na página do aplicativo, selecione Permissões de API na navegação à esquerda.
- Na página Permissões de API, escolha Adicionar uma permissão.
- Na página Solicitar permissões de API, selecione Lote do Azure.
- Na página Lote do Azure, 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 Permissões de API agora mostra que o aplicativo do Microsoft Entra ID tem acesso ao Microsoft Graph e ao Lote do Azure. As permissões são concedidas ao Microsoft Graph automaticamente quando você registra um aplicativo com o Microsoft Entra ID.
Configurar uma entidade de serviço
Para autenticar um aplicativo que é executado de forma autônoma, use uma entidade de serviço. Quando o aplicativo é autenticado com uma entidade de serviço, ele envia a ID do aplicativo e uma chave secreta para o Microsoft Entra ID.
Depois de registrar o aplicativo, siga estas etapas no portal do Azure para configurar uma entidade de serviço:
- Solicite um segredo para o aplicativo.
- Atribua permissões de controle de acesso baseado em função do Azure (Azure RBAC) ao seu aplicativo.
Solicitar um segredo para o aplicativo
Siga estas etapas para criar e copiar a chave secreta a ser usada em seu código:
- No portal do Azure, pesquise e selecione Registros de aplicativo.
- Na página Registros de aplicativo, selecione seu aplicativo.
- Na página do seu aplicativo, selecione Certificados e segredos na navegação à esquerda.
- Na página Certificados e segredos, selecione Novo segredo do cliente.
- Na página Adicionar um segredo do cliente, insira uma descrição e selecione um período de expiração para o segredo.
- Selecione Adicionar para criar o segredo e exibi-lo na página Certificados e segredos.
- Copie o segredo Valor para um local seguro, pois você não poderá acessá-lo novamente depois de sair da página. Se você perder o acesso à sua chave, poderá gerar uma nova.
Atribuir Azure RBAC ao seu aplicativo
Siga estas etapas para atribuir uma função RBAC do Azure ao seu aplicativo. Para saber mais, consulte Controle de acesso baseado em função para o serviço do Lote do Azure.
- No portal do Azure, navegue para a conta do Lote usada pelo aplicativo.
- Selecione Controle de acesso (IAM) na navegação à esquerda.
- Na página Controle de acesso (IAM), selecione Adicionar atribuição de função.
- Na página Adicionar atribuição de função, selecione a guia Função e selecione uma das Funções RBAC internas do Lote do Azure, a função para seu aplicativo.
- Selecione a guia Membros e selecione Selecionar membros em Membros.
- Na tela Selecionar membros, pesquise e selecione seu aplicativo e selecione Selecionar.
- Selecione Examinar + atribuir na página Adicionar atribuição de função.
Seu aplicativo agora deve aparecer na guia Atribuições de função da página Controle de acesso (IAM) da conta do Lote.
Exemplos de código
Os exemplos de código desta seção mostram como realizar a autenticação com o Microsoft Entra ID usando a autenticação integrada ou com uma entidade de serviço. Os exemplos de código usam o .NET e Python, mas os conceitos são semelhantes para outras linguagens.
Observação
Um token de autenticação do Microsoft Entra expirará após uma hora. Quando você usa um objeto BatchClient de longa duração, é melhor obter um token da MSAL em cada solicitação para garantir que você sempre tenha um token válido.
Para fazer isso no .NET, escrever um método que recupera o token do Microsoft Entra ID e passar esse método para um BatchTokenCredentials objeto como um delegado. Cada solicitação para o serviço de lote chama o método delegado para garantir que um token válido seja fornecido. Por padrão MSAL armazena em cache os tokens, para que um novo token é recuperado do Microsoft Entra somente quando necessário. Para mais informações sobre tokens no Microsoft Entra ID, confira Tokens de segurança.
Exemplo de código: Usar a autenticação integrada do Microsoft Entra com o Batch .NET
Para autenticar com a autenticação integrada do Batch .NET:
Instale o Lote do Azure .NET e os pacotes NuGet da MSAL.
Declare as seguintes instruções
using
no seu código:using Microsoft.Azure.Batch; using Microsoft.Azure.Batch.Auth; using Microsoft.Identity.Client;
Faça referência ao ponto de extremidade do Microsoft Entra, incluindo a ID do locatário. Você pode obter sua ID de locatário na página Visão geral do Microsoft Entra ID no portal do Azure.
private const string AuthorityUri = "https://login.microsoftonline.com/<tenant-id>";
Referencie o ponto de extremidade de recursos do serviço do Lote:
private const string BatchResourceUri = "https://batch.core.windows.net/";
Referencie a conta do Lote:
private const string BatchAccountUrl = "https://<myaccount>.<mylocation>.batch.azure.com";
Especifique a ID do aplicativo (cliente) para seu aplicativo. Você pode obter a ID do aplicativo na página Visão geral do aplicativo no portal do Azure.
private const string ClientId = "<application-id>";
Especifique o URI de redirecionamento que você inseriu ao registrar o aplicativo cliente.
private const string RedirectUri = "https://<redirect-uri>";
Escreva um método de retorno de chamada para adquirir o token de autenticação do Microsoft Entra ID. O exemplo a seguir chama o MSAL para autenticar um usuário que está interagindo com o aplicativo. O método MSAL IConfidentialClientApplication.AcquireTokenByAuthorizationCode solicita ao usuário suas credenciais. O aplicativo prossegue quando o usuário fornecer credenciais.
O parâmetro authorizationCode é o código de autorização obtido do servidor de autorização após a autenticação do usuário.
WithRedirectUri
especifica o URI de redirecionamento para o qual o servidor de autorização redireciona o usuário após a autenticação.public static async Task<string> GetTokenUsingAuthorizationCode(string authorizationCode, string redirectUri, string[] scopes) { var app = ConfidentialClientApplicationBuilder.Create(ClientId) .WithAuthority(AuthorityUri) .WithRedirectUri(RedirectUri) .Build(); var authResult = await app.AcquireTokenByAuthorizationCode(scopes, authorizationCode).ExecuteAsync(); return authResult.AccessToken; }
Chame esse método com o código a seguir, substituindo
<authorization-code>
pelo código de autorização obtido do servidor de autorização. O escopo.default
garante que o usuário tenha permissão para acessar todos os escopos do recurso.var token = await GetTokenUsingAuthorizationCode("<authorization-code>", "RedirectUri", new string[] { "BatchResourceUri/.default" });
Construa um objeto BatchTokenCredentials que use o delegado como um parâmetro. Use essas credenciais para abrir um objeto BatchClient. Em seguida, use esse objeto BatchClient para operações subsequentes no serviço do Lote:
public static void PerformBatchOperations() { Func<Task<string>> tokenProvider = () => GetTokenUsingAuthorizationCode(); using (var client = BatchClient.Open(new BatchTokenCredentials(BatchAccountUrl, tokenProvider))) { client.JobOperations.ListJobs(); } }
Exemplo de código: usar uma entidade de serviço do Microsoft Entra com o .NET do Lote
Para autenticar com uma entidade de serviço do Batch .NET:
Instale o Lote do Azure .NET e os pacotes NuGet da MSAL.
Declare as seguintes instruções
using
no seu código:using Microsoft.Azure.Batch; using Microsoft.Azure.Batch.Auth; using Microsoft.Identity.Client;
Faça referência ao ponto de extremidade do Microsoft Entra, incluindo a ID do locatário. Ao usar uma entidade de serviço, você deve fornecer um ponto de extremidade específico ao locatário. Você pode obter sua ID de locatário na página Visão geral do Microsoft Entra ID no portal do Azure.
private const string AuthorityUri = "https://login.microsoftonline.com/<tenant-id>";
Referencie o ponto de extremidade de recursos do serviço do Lote:
private const string BatchResourceUri = "https://batch.core.windows.net/";
Referencie a conta do Lote:
private const string BatchAccountUrl = "https://<myaccount>.<mylocation>.batch.azure.com";
Especifique a ID do aplicativo (cliente) para seu aplicativo. Você pode obter a ID do aplicativo na página Visão geral do aplicativo no portal do Azure.
private const string ClientId = "<application-id>";
Especifique a chave secreta que você copiou do portal do Azure.
private const string ClientKey = "<secret-key>";
Escreva um método de retorno de chamada para adquirir o token de autenticação do Microsoft Entra ID. O método ConfidentialClientApplicationBuilder.Create a seguir chama MSAL para autenticação autônoma.
public static async Task<string> GetAccessToken(string[] scopes) { var app = ConfidentialClientApplicationBuilder.Create(clientId) .WithClientSecret(ClientKey) .WithAuthority(new Uri(AuthorityUri)) .Build(); var result = await app.AcquireTokenForClient(scopes).ExecuteAsync(); return result.AccessToken; }
Chame esse método usando o código a seguir. O escopo
.default
garante que o aplicativo tenha permissão para acessar todos os escopos do recurso.var token = await GetAccessToken(new string[] { $"{BatchResourceUri}/.default" });
Construa um objeto BatchTokenCredentials que use o delegado como um parâmetro. Use essas credenciais para abrir um objeto BatchClient. Em seguida, use esse objeto BatchClient para operações subsequentes no serviço do Lote:
public static void PerformBatchOperations() { Func<Task<string>> tokenProvider = () => GetAccessToken(); using (var client = BatchClient.Open(new BatchTokenCredentials(BatchAccountUrl, tokenProvider))) { client.JobOperations.ListJobs(); } }
Exemplo de código: usar uma entidade de serviço do Microsoft Entra com o Python do Lote
Para autenticar com uma entidade de serviço do Batch Python:
Instale os módulos Python azure-batch e azure-common.
Referencie os módulos:
from azure.batch import BatchServiceClient from azure.common.credentials import ServicePrincipalCredentials
Para usar uma entidade de serviço, forneça um ponto de extremidade específico do locatário. Você pode obter sua ID de locatário na página Visão geral ou Propriedades do Microsoft Entra ID no portal do Azure.
TENANT_ID = "<tenant-id>"
Referencie o ponto de extremidade de recursos do serviço do Lote:
RESOURCE = "https://batch.core.windows.net/"
Referencie a conta do Lote:
BATCH_ACCOUNT_URL = "https://<myaccount>.<mylocation>.batch.azure.com"
Especifique a ID do aplicativo (cliente) para seu aplicativo. Você pode obter a ID do aplicativo na página Visão geral do aplicativo no portal do Azure.
CLIENT_ID = "<application-id>"
Especifique a chave secreta que você copiou do portal do Azure:
SECRET = "<secret-key>"
Crie um objeto ServicePrincipalCredentials:
credentials = ServicePrincipalCredentials( client_id=CLIENT_ID, secret=SECRET, tenant=TENANT_ID, resource=RESOURCE )
Use as credenciais da entidade de serviço para abrir um objeto BatchServiceClient. Em seguida, use o objeto BatchServiceClient para operações subsequentes no serviço do Lote.
batch_client = BatchServiceClient( credentials, batch_url=BATCH_ACCOUNT_URL )
Para obter um exemplo com Python de como criar um cliente do Lote autenticado usando um token do Microsoft Entra ID, consulte o exemplo Implantar imagem personalizada do Lote do Azure com um script Python.
Próximas etapas
- Autenticar soluções de gerenciamento do lote com o Active Directory
- Fluxos de credencial do cliente na MSAL.NET
- Usando MSAL.NET para obter tokens por código de autorização (para sites da Web)
- Objetos de entidade de serviço e aplicativo no Microsoft Entra ID
- Como criar um aplicativo do Microsoft Entra e uma entidade de serviço que possa acessar os recursos
- Exemplos de código da plataforma de identidade da Microsoft