Partilhar via


Criar uma aplicação para aceder a Microsoft Defender XDR sem um utilizador

Aplica-se a:

  • Microsoft Defender XDR

Importante

Algumas informações estão relacionadas com o produto pré-lançado que pode ser substancialmente modificado antes de ser lançado comercialmente. A Microsoft não oferece garantias, expressas ou implícitas, em relação às informações aqui fornecidas.

Esta página descreve como criar uma aplicação para obter acesso programático a Microsoft Defender XDR sem um utilizador definido, por exemplo, se estiver a criar um daemon ou um serviço em segundo plano.

Se precisar de acesso programático a Microsoft Defender XDR em nome de um ou mais utilizadores, consulte Criar uma aplicação para aceder Microsoft Defender XDR APIs em nome de um utilizador e Criar uma aplicação com acesso de parceiro a APIs Microsoft Defender XDR. Se não tiver a certeza de que tipo de acesso precisa, consulte Introdução.

Microsoft Defender XDR expõe grande parte dos seus dados e ações através de um conjunto de APIs programáticas. Essas APIs ajudam-no a automatizar fluxos de trabalho e a utilizar as capacidades do Microsoft Defender XDR. Este acesso à API requer autenticação OAuth2.0. Para obter mais informações, veja OAuth 2.0 Authorization Code Flow (Fluxo de Código de Autorização do OAuth 2.0).

Em geral, terá de seguir os seguintes passos para utilizar estas APIs:

  • Crie uma aplicação Microsoft Entra.
  • Obtenha um token de acesso com esta aplicação.
  • Utilize o token para aceder à API Microsoft Defender XDR.

Este artigo explica como:

  • Criar uma aplicação Microsoft Entra
  • Obter um token de acesso para Microsoft Defender XDR
  • Valide o token.

Criar uma aplicação

  1. Inicie sessão no Azure.

  2. Navegue para Microsoft Entra ID>Registos de aplicações>Novo registo.

    O separador Novo registo no portal do Microsoft Defender

  3. No formulário, selecione um nome para a sua aplicação e, em seguida, selecione Registar.

  4. Na página da sua aplicação, selecione Permissões> da API Adicionar APIs depermissão> quea minha organização utiliza>, escreva Proteção Contra Ameaças da Microsoft e selecione Proteção Contra Ameaças da Microsoft. A sua aplicação pode agora aceder a Microsoft Defender XDR.

    Sugestão

    O Microsoft Threat Protection é um nome antigo para Microsoft Defender XDR e não será apresentado na lista original. Tem de começar a escrever o respetivo nome na caixa de texto para vê-lo aparecer.

    O separador utilização das APIs da organização no portal do Microsoft Defender

  5. Selecione Permissões da aplicação. Escolha as permissões relevantes para o seu cenário (por exemplo, Incident.Read.All) e, em seguida, selecione Adicionar permissões.

    O painel de permissões da aplicação no portal do Microsoft Defender

    Nota

    Tem de selecionar as permissões relevantes para o seu cenário. Ler todos os incidentes é apenas um exemplo. Para determinar de que permissão precisa, veja a secção Permissões na API que pretende chamar.

    Por exemplo, para executar consultas avançadas, selecione a permissão "Executar consultas avançadas"; para isolar um dispositivo, selecione a permissão "Isolar máquina".

  6. Selecione Conceder consentimento do administrador. Sempre que adicionar uma permissão, tem de selecionar Conceder consentimento do administrador para que esta entre em vigor.

    O painel relacionado com a concessão de consentimento no portal do Microsoft Defender

  7. Para adicionar um segredo à aplicação, selecione Certificados & segredos, adicione uma descrição ao segredo e, em seguida, selecione Adicionar.

    Sugestão

    Depois de selecionar Adicionar, selecione copiar o valor do segredo gerado. Não poderá obter o valor do segredo depois de sair.

    O painel criar aplicação no portal do Microsoft Defender

  8. Registe o ID da aplicação e o ID do inquilino num local seguro. Estão listados em Descrição geral na página da sua aplicação.

    O painel Descrição Geral no portal do Microsoft Defender

  9. Apenas para parceiros Microsoft Defender XDR: siga estas instruções para o acesso de parceiros através das APIs Microsoft Defender XDR, defina a sua aplicação como multi-inquilino, para que possa estar disponível em todos os inquilinos assim que receber o consentimento do administrador. O acesso de parceiros é necessário para aplicações de terceiros, por exemplo, se criar uma aplicação que se destina a ser executada nos inquilinos de vários clientes. Não é necessário se criar um serviço que pretenda executar apenas no seu inquilino, como uma aplicação para utilização própria que só irá interagir com os seus próprios dados. Para definir a aplicação como multi-inquilino:

    • Aceda a Autenticação e adicione https://portal.azure.com como URI de Redirecionamento.

    • Na parte inferior da página, em Tipos de conta suportados, selecione o consentimento de contas em qualquer aplicação de diretório organizacional para a sua aplicação multi-inquilino.

    Uma vez que a sua aplicação interage com Microsoft Defender XDR em nome dos seus utilizadores, tem de ser aprovada para todos os inquilinos nos quais pretenda utilizá-la.

    O administrador do Active Directory para cada inquilino tem de selecionar a ligação de consentimento e aprovar a sua aplicação.

    A ligação de consentimento tem a seguinte estrutura:

    https://login.microsoftonline.com/common/oauth2/authorize?prompt=consent&client_id=<00000000-0000-0000-0000-000000000000>&response_type=code&sso_reload=true
    

    Os dígitos 00000000-0000-0000-0000-000000000000 devem ser substituídos pelo ID da Aplicação.

Feito! Registou uma aplicação com êxito! Veja os exemplos abaixo para obter a aquisição e validação de tokens.

Obter um token de acesso

Para obter mais informações sobre tokens de Microsoft Entra, veja o tutorial Microsoft Entra.

Importante

Embora os exemplos nesta secção o incentivem a colar valores secretos para fins de teste, nunca deve codificar segredos para uma aplicação em execução na produção. Um terceiro pode utilizar o segredo para aceder aos recursos. Pode ajudar a manter os segredos da sua aplicação seguros com o Azure Key Vault. Para obter um exemplo prático de como pode proteger a sua aplicação, veja Gerir segredos nas suas aplicações de servidor com o Azure Key Vault.

Obter um token de acesso com o PowerShell

# This code gets the application context token and saves it to a file named "Latest-token.txt" under the current directory.

$tenantId = '' # Paste your directory (tenant) ID here
$clientId = '' # Paste your application (client) ID here
$appSecret = '' # Paste your own app secret here to test, then store it in a safe place, such as the Azure Key Vault!

$resourceAppIdUri = 'https://api.security.microsoft.com'
$oAuthUri = "https://login.windows.net/$tenantId/oauth2/token"

$authBody = [Ordered] @{
    resource = $resourceAppIdUri
    client_id = $clientId
    client_secret = $appSecret
    grant_type = 'client_credentials'
}

$authResponse = Invoke-RestMethod -Method Post -Uri $oAuthUri -Body $authBody -ErrorAction Stop
$token = $authResponse.access_token

Out-File -FilePath "./Latest-token.txt" -InputObject $token

return $token

Obter um token de acesso com C#

Nota

O código seguinte foi testado com o Nuget Microsoft.Identity.Client 3.19.8.

Importante

O pacote NuGet Microsoft.IdentityModel.Clients.ActiveDirectory e Azure AD Authentication Library (ADAL) foram preteridos. Não foram adicionadas novas funcionalidades desde 30 de junho de 2020. Recomendamos vivamente que atualize, veja o guia de migração para obter mais detalhes.

  1. Crie uma nova aplicação de consola.

  2. Instale o NuGet Microsoft.Identity.Client.

  3. Adicione a seguinte linha:

    using Microsoft.Identity.Client;
    
  4. Copie e cole o seguinte código na sua aplicação (não se esqueça de atualizar as três variáveis: tenantId, , clientIdappSecret):

    csharp
    string tenantId = "00000000-0000-0000-0000-000000000000"; // Paste your own tenant ID here
    string appId = "11111111-1111-1111-1111-111111111111"; // Paste your own app ID here
    string appSecret = "22222222-2222-2222-2222-222222222222"; // Paste your own app secret here for a test, and then store it in a safe place! 
    const string authority = https://login.microsoftonline.com;
    const string audience = https://api.securitycenter.microsoft.com;
    
    IConfidentialClientApplication myApp = ConfidentialClientApplicationBuilder.Create(appId).WithClientSecret(appSecret).WithAuthority($"{authority}/{tenantId}").Build();
    
    List<string> scopes = new List<string>() { $"{audience}/.default" };
    
    AuthenticationResult authResult = myApp.AcquireTokenForClient(scopes).ExecuteAsync().GetAwaiter().GetResult();
    
    string token = authResult.AccessToken;
    

Obter um token de acesso com o Python

import json
import urllib.request
import urllib.parse

tenantId = '' # Paste your directory (tenant) ID here
clientId = '' # Paste your application (client) ID here
appSecret = '' # Paste your own app secret here to test, then store it in a safe place, such as the Azure Key Vault!

url = "https://login.windows.net/%s/oauth2/token" % (tenantId)

resourceAppIdUri = 'https://api.security.microsoft.com'

body = {
    'resource' : resourceAppIdUri,
    'client_id' : clientId,
    'client_secret' : appSecret,
    'grant_type' : 'client_credentials'
}

data = urllib.parse.urlencode(body).encode("utf-8")

req = urllib.request.Request(url, data)
response = urllib.request.urlopen(req)
jsonResponse = json.loads(response.read())
aadToken = jsonResponse["access_token"]

Obter um token de acesso com o curl

Nota

O Curl está pré-instalado no Windows 10, versões 1803 e posteriores. Para outras versões do Windows, transfira e instale a ferramenta diretamente a partir do site oficial do Curl.

  1. Abra uma linha de comandos e defina CLIENT_ID para o ID da aplicação do Azure.

  2. Defina CLIENT_SECRET para o segredo da sua aplicação do Azure.

  3. Defina TENANT_ID para o ID de inquilino do Azure do cliente que pretende utilizar a sua aplicação para aceder a Microsoft Defender XDR.

  4. Execute o seguinte comando:

    curl -i -X POST -H "Content-Type:application/x-www-form-urlencoded" -d "grant_type=client_credentials" -d "client_id=%CLIENT_ID%" -d "scope=https://api.security.microsoft.com/.default" -d "client_secret=%CLIENT_SECRET%" "https://login.microsoftonline.com/%TENANT_ID%/oauth2/v2.0/token" -k
    

    Uma resposta bem-sucedida terá o seguinte aspeto:

    {"token_type":"Bearer","expires_in":3599,"ext_expires_in":0,"access_token":"eyJ0eXAiOiJKV1QiLCJhbGciOiJSUzI1NiIsIn <truncated> aWReH7P0s0tjTBX8wGWqJUdDA"}
    

Validar o token

  1. Copie e cole o token no site do validador de tokens Web JSON, JWT, para o descodificar.

  2. Confirme que a afirmação de funções no token descodificado contém as permissões pretendidas.

    Na imagem seguinte, pode ver um token descodificado adquirido a partir de uma aplicação, com Incidents.Read.All, Incidents.ReadWrite.Alle AdvancedHunting.Read.All permissões:

    O painel Token descodificado no portal do Microsoft Defender

Utilizar o token para aceder à API de Microsoft Defender XDR

  1. Escolha a API que pretende utilizar (incidentes ou investigação avançada). Para obter mais informações, veja ApIs de Microsoft Defender XDR suportadas.

  2. No pedido http que está prestes a enviar, defina o cabeçalho de autorização como "Bearer" <token>, Portador sendo o esquema de autorização e token sendo o token validado.

  3. O token irá expirar dentro de uma hora. Pode enviar mais do que um pedido durante este período com o mesmo token.

O exemplo seguinte mostra como enviar um pedido para obter uma lista de incidentes com C#.

    var httpClient = new HttpClient();
    var request = new HttpRequestMessage(HttpMethod.Get, "https://api.security.microsoft.com/api/incidents");

    request.Headers.Authorization = new AuthenticationHeaderValue("Bearer", token);

    var response = httpClient.SendAsync(request).GetAwaiter().GetResult();

Sugestão

Quer saber mais? Interaja com a comunidade do Microsoft Security na nossa Tech Community: Microsoft Defender XDR Tech Community.