Rilevazione avanzata con Python
Si applica a:
Se si desidera provare Microsoft Defender per endpoint, iscriversi a una versione di valutazione gratuita.
Nota
Se si è un cliente del governo degli Stati Uniti, usare gli URI elencati in Microsoft Defender per endpoint per i clienti del governo degli Stati Uniti.
Consiglio
Per ottenere prestazioni migliori, è possibile usare il server più vicino alla posizione geografica:
- 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
Eseguire query avanzate con Python, vedere API di ricerca avanzata.
In questa sezione vengono condivisi esempi di Python per recuperare un token e usarlo per eseguire una query.
Prerequisito: è prima di tutto necessario creare un'app.
Ottenere il token
- Eseguire i comandi seguenti:
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"]
Dove:
- tenantId: ID del tenant per conto del quale si vuole eseguire la query, ovvero la query viene eseguita sui dati di questo tenant
- appId: ID dell'app Microsoft Entra (l'app deve disporre dell'autorizzazione "Esegui query avanzate" per Microsoft Defender per endpoint)
- appSecret: segreto dell'app Microsoft Entra
Esegui query
Eseguire la query seguente:
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 contiene lo schema dei risultati della query
- i risultati contengono i risultati della query
Query complesse
Se si desidera eseguire query complesse (o query multiriga), salvare la query in un file e, anziché la prima riga nell'esempio precedente, eseguire il comando seguente:
queryFile = open("D:\\Temp\\myQuery.txt", 'r') # Replace with the path to your file
query = queryFile.read()
queryFile.close()
Usare i risultati delle query
È ora possibile usare i risultati della query.
Per eseguire l'iterazione dei risultati, usare il comando seguente:
for result in results:
print(result) # Prints the whole result
print(result["EventTime"]) # Prints only the property 'EventTime' from the result
Per restituire i risultati della query in formato CSV nel file file1.csv usare il comando seguente:
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()
Per restituire i risultati della query in formato JSON nel file file1.json usare il comando seguente:
outputFile = open("D:\\Temp\\file1.json", 'w')
json.dump(results, outputFile)
outputFile.close()
Argomento correlato
Consiglio
Per saperne di più, Collaborare con la community di Microsoft Security nella community tech: Microsoft Defender per endpoint Tech Community.