Busca avançada usando Python
Aplica-se a:
Deseja experimentar o Microsoft Defender para Ponto de Extremidade? Inscreva-se para uma avaliação gratuita.
Observação
Se for um cliente do Us Government, utilize os URIs listados no Microsoft Defender para Endpoint para clientes do Us Government.
Dica
Para um melhor desempenho, pode utilizar o servidor mais próximo da localização geográfica:
- us.api.security.microsoft.com
- eu.api.security.microsoft.com
- uk.api.security.microsoft.com
- au.api.security.microsoft.com
- swa.api.security.microsoft.com
- ina.api.security.microsoft.com
Execute consultas avançadas com Python. Veja API de Investigação Avançada.
Nesta secção, partilhamos exemplos de Python para obter um token e utilizá-lo para executar uma consulta.
Pré-requisito: primeiro tem de criar uma aplicação.
Obter token
- Execute os seguintes comandos:
import json
import urllib.request
import urllib.parse
tenantId = '00000000-0000-0000-0000-000000000000' # Paste your own tenant ID here
appId = '11111111-1111-1111-1111-111111111111' # Paste your own app ID here
appSecret = '22222222-2222-2222-2222-222222222222' # Paste your own app secret here
url = "https://login.microsoftonline.com/%s/oauth2/token" % (tenantId)
resourceAppIdUri = 'https://api.securitycenter.microsoft.com'
body = {
'resource' : resourceAppIdUri,
'client_id' : appId,
'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"]
Em que
- tenantId: ID do inquilino em nome do qual pretende executar a consulta (ou seja, a consulta é executada nos dados deste inquilino)
- appId: ID da sua aplicação Microsoft Entra (a aplicação tem de ter a permissão "Executar consultas avançadas" no Microsoft Defender para Endpoint)
- appSecret: Segredo da sua aplicação Microsoft Entra
Executar consulta
Execute a seguinte consulta:
query = 'DeviceRegistryEvents | limit 10' # Paste your own query here
url = "https://api.securitycenter.microsoft.com/api/advancedqueries/run"
headers = {
'Content-Type' : 'application/json',
'Accept' : 'application/json',
'Authorization' : "Bearer " + aadToken
}
data = json.dumps({ 'Query' : query }).encode("utf-8")
req = urllib.request.Request(url, data, headers)
response = urllib.request.urlopen(req)
jsonResponse = json.loads(response.read())
schema = jsonResponse["Schema"]
results = jsonResponse["Results"]
- schema contém o esquema dos resultados da consulta
- os resultados contêm os resultados da consulta
Consultas complexas
Se quiser executar consultas complexas (ou consultas com várias linhas), guarde a consulta num ficheiro e, em vez da primeira linha no exemplo acima, execute o comando abaixo:
queryFile = open("D:\\Temp\\myQuery.txt", 'r') # Replace with the path to your file
query = queryFile.read()
queryFile.close()
Trabalhar com os resultados da consulta
Agora pode utilizar os resultados da consulta.
Para iterar os resultados, utilize o seguinte comando:
for result in results:
print(result) # Prints the whole result
print(result["EventTime"]) # Prints only the property 'EventTime' from the result
Para exportar os resultados da consulta no formato CSV no ficheiro file1.csv utilize o seguinte comando:
import csv
outputFile = open("D:\\Temp\\file1.csv", 'w')
output = csv.writer(outputFile)
output.writerow(results[0].keys())
for result in results:
output.writerow(result.values())
outputFile.close()
Para exportar os resultados da consulta no formato JSON no ficheiro file1.json utilize o seguinte comando:
outputFile = open("D:\\Temp\\file1.json", 'w')
json.dump(results, outputFile)
outputFile.close()
Tópico relacionado
- APIs do Microsoft Defender para Endpoint
- API de Investigação Avançada
- Busca avançada usando o PowerShell
Dica
Você deseja aprender mais? Contacte a comunidade de Segurança da Microsoft na nossa Comunidade Tecnológica: Microsoft Defender para Endpoint Tech Community.