Eseguire query sui risultati di Amazon GuardDuty
Amazon GuardDuty
Per maggiori informazioni su Amazon GuardDuty, consulta la Guida per l'utente di Amazon GuardDuty.
Prerequisiti
-
Attivare la funzione GuardDuty per l'esportazione dei risultati in Amazon S3. Per le fasi, consulta Esportazione dei risultati nella Guida per l'utente di Amazon GuardDuty.
Creare una tabella in Athena per i risultati GuardDuty
Per eseguire query sui risultati GuardDuty da Athena, è necessario creare una tabella.
Per creare una tabella in Athena per i risultati GuardDuty
Aprire la console Athena all'indirizzo https://console.aws.amazon.com/athena/
. -
Incollare la seguente istruzione DDL nella console Athena. Modificare i valori in
LOCATION 's3://amzn-s3-demo-bucketper puntare ai risultati GuardDuty in Amazon S3./AWSLogs/account-id/GuardDuty/'CREATE EXTERNAL TABLE `gd_logs` ( `schemaversion` string, `accountid` string, `region` string, `partition` string, `id` string, `arn` string, `type` string, `resource` string, `service` string, `severity` string, `createdat` string, `updatedat` string, `title` string, `description` string) ROW FORMAT SERDE 'org.openx.data.jsonserde.JsonSerDe' LOCATION 's3://amzn-s3-demo-bucket/AWSLogs/account-id/GuardDuty/' TBLPROPERTIES ('has_encrypted_data'='true')Nota
SerDe prevede che ogni documento JSON sia su una singola riga di testo senza caratteri di terminazione riga che separano i campi nel registro. Se il testo JSON è formattato, quando si prova a eseguire una query sulla tabella dopo averla creata, è possibile che venga visualizzato un messaggio di errore come
HIVE_CURSOR_ERROR: Row is not a valid JSON Object (HIVE_CURSOR_ERROR: la riga non è un oggetto JSON valido)oHIVE_CURSOR_ERROR: JsonParseException: Unexpected end-of-input: expected close marker for OBJECT(HIVE_CURSOR_ERROR: JSONParseException: fine di input imprevisto: indicatore di chiusura previsto per OBJECT). Per ulteriori informazioni, consulta File di dati JSONnella documentazione OpenX SerDe su GitHub. -
Eseguire la query nella console Athena per registrare la tabella
gd_logs. Al termine della query, i risultati sono pronti per le query da Athena.
Query di esempio
Negli esempi seguenti viene illustrato come eseguire query sui risultati GuardDuty da Athena.
Esempio Estrazione dei dati DNS
La query seguente restituisce informazioni relative alle istanze Amazon EC2 che potrebbero estrarre i dati tramite query DNS.
SELECT title, severity, type, id AS FindingID, accountid, region, createdat, updatedat, json_extract_scalar(service, '$.count') AS Count, json_extract_scalar(resource, '$.instancedetails.instanceid') AS InstanceID, json_extract_scalar(service, '$.action.actiontype') AS DNS_ActionType, json_extract_scalar(service, '$.action.dnsrequestaction.domain') AS DomainName, json_extract_scalar(service, '$.action.dnsrequestaction.protocol') AS protocol, json_extract_scalar(service, '$.action.dnsrequestaction.blocked') AS blocked FROM gd_logs WHERE type = 'Trojan:EC2/DNSDataExfiltration' ORDER BY severity DESC
Esempio - Accesso utente IAM non autorizzato
La query seguente restituisce tutti i tipi di risultati UnauthorizedAccess:IAMUser per un'entità principale IAM da tutte le Regioni.
SELECT title, severity, type, id, accountid, region, createdat, updatedat, json_extract_scalar(service, '$.count') AS Count, json_extract_scalar(resource, '$.accesskeydetails.username') AS IAMPrincipal, json_extract_scalar(service,'$.action.awsapicallaction.api') AS APIActionCalled FROM gd_logs WHERE type LIKE '%UnauthorizedAccess:IAMUser%' ORDER BY severity desc;
Suggerimenti per le query sui risultati GuardDuty
Quando si crea la query, tenere a mente i seguenti punti.
-
Per estrarre dati dai campi JSON nidificati, utilizzare le funzioni
json_extractojson_extract_scalardi Presto. Per ulteriori informazioni, consulta Estrarre dati JSON da stringhe. -
Assicurarsi che tutti i caratteri nei campi JSON siano in minuscolo.
-
Per informazioni sul download dei risultati delle query, consulta Download dei file dei risultati delle query mediante la console Athena.