Salta al contenuto

Come posso creare automaticamente tabelle in Athena per effettuare ricerche nei log di CloudTrail?

4 minuti di lettura
0

Desidero effettuare una ricerca in un'ampia raccolta di log di AWS CloudTrail e creare automaticamente tabelle in Amazon Athena.

Risoluzione

Crea la tabella Athena dai log di CloudTrail

Completa i seguenti passaggi:

  1. Apri la console CloudTrail.
  2. Nel pannello di navigazione, scegli Trail, quindi annota il nome del bucket Amazon Simple Storage Service (Amazon S3) che contiene i log di CloudTrail.
  3. Nel pannello di navigazione, scegli Cronologia degli eventi, quindi scegli Crea una tabella Athena.
  4. Nella finestra Crea una tabella in Amazon Athena, seleziona il bucket S3 dal menu Posizione dello storage.
    Nota: per migliorare la ricerca in un intervallo di tempo specifico, puoi utilizzare la proiezione delle partizioni per i log di CloudTrail in Athena.
  5. Scegli Crea tabella.
    Nota: la tabella fa riferimento ai log di CloudTrail nel bucket S3 specificato, inclusi i nuovi log che CloudTrail fornisce al bucket.

Se non hai le autorizzazioni per creare una tabella, potresti ricevere il messaggio di errore "Your account does not have sufficient permissions to create tables in Amazon Athena".

Per risolvere il problema, collega la policy gestita AmazonAthenaFullAccess al ruolo AWS Identity and Access Management (AWS IAM).

Esegui le query Athena sulla tabella dei log di CloudTrail

Completa i seguenti passaggi:

  1. Apri la console Athena.
  2. Per cancellare l'esempio di query, scegli ** Cancella**.
  3. Inserisci la query e scegli Esegui query.

Utilizza gli esempi di query

Se è la prima volta che utilizzi Athena, imposta un bucket S3 come posizione in cui archiviare i risultati delle query prima di eseguire la prima query.

Per impostare una posizione del bucket S3, completa i seguenti passaggi:

  1. Apri la console Athena.
  2. Nel pannello di navigazione, scegli Editor di query.
  3. Scegli la scheda Impostazioni query.
  4. Scegli Gestisci.
  5. Nel campo Posizione del risultato delle query - facoltativo, inserisci un bucket S3.
  6. Scegli Salva.

Di seguito sono riportati alcuni esempi di query che puoi utilizzare.

Nota: nelle seguenti query, sostituisci your_athena_tablename con il nome della tua tabella Athena e access_key_id con la tua chiave di accesso di 20 caratteri. La chiave di accesso generalmente inizia con i caratteri AKIA o ASIA.

Per visualizzare l'attività dell'operazione API AWS registrata per una chiave di accesso specifica, esegui questa query:

SELECT eventTime, eventName, userIdentity.principalId    FROM your_athena_tablename   
 WHERE userIdentity.accessKeyId like 'access_key_id'

Per identificare le modifiche al gruppo di sicurezza nell'istanza Amazon Elastic Compute Cloud (Amazon EC2), esegui questa query:

SELECT eventname, useridentity.username, sourceIPAddress, eventtime, requestparameters    FROM your_athena_tablename  
 WHERE (requestparameters LIKE '%sg-5887f224%' OR requestparameters LIKE '%sg-e214609e%' OR requestparameters LIKE '%eni-6c5ca5a8%')  
       AND eventtime > '2017-02-15T00:00:00Z'  
 ORDER BY eventtime ASC;

Per visualizzare gli accessi alla console nelle ultime 24 ore, esegui questa query:

SELECT useridentity.username, sourceipaddress, eventtime, additionaleventdata    FROM your_athena_tablename   
 WHERE eventname = 'ConsoleLogin'  
       AND eventtime >= '2017-02-17T00:00:00Z'  
       AND eventtime < '2017-02-18T00:00:00Z';

Per visualizzare i tentativi di accesso alla console non riusciti nelle ultime 24 ore, esegui questa query:

SELECT useridentity.username, sourceipaddress, eventtime, additionaleventdata    FROM your_athena_tablename  
 WHERE eventname = 'ConsoleLogin'  
       AND useridentity.username = 'HIDDEN_DUE_TO_SECURITY_REASONS'  
       AND eventtime >= '2017-02-17T00:00:00Z'  
       AND eventtime < '2017-02-18T00:00:00Z';

Per identificare gli aumenti mensili dei costi di CloudTrail, esegui questa query:

SELECT eventName,count(eventName) AS NumberOfChanges,eventSource    FROM your_athena_tablename   
 WHERE eventtime >= '2019-01-01T00:00:00Z' AND eventtime < '2019-01-31T00:00:00Z'  
 GROUP BY eventName, eventSource  
 ORDER BY NumberOfChanges DESC

Nota: i valori eventtime definiti si riferiscono a un solo mese. Per ottenere risultati per più mesi, esegui ulteriori query.

Per identificare le autorizzazioni IAM mancanti, esegui questa query:

SELECT COUNT(*) AS TotalEvents, useridentity.arn, eventsource, eventname, errorCode, errorMessage    FROM your_athena_tablename  
 WHERE (errorcode LIKE '%Denied%' OR errorcode LIKE '%Unauthorized%')  
   AND eventtime >= '2019-10-28T00:00:00Z'  
   AND eventtime < '2019-10-29T00:00:00Z'  
 GROUP BY eventsource, eventname, errorCode, errorMessage, useridentity.arn  
 ORDER BY eventsource, eventname

Se i risultati non mostrano l'operazione API non riuscita, esegui questa query per aumentare l'intervallo della query:

SELECT COUNT(*) as TotalEvents, useridentity.arn, eventsource, eventname, errorCode, errorMessage    FROM your_athena_tablename  
 WHERE errorcode <> ''  
       AND eventtime >= '2019-10-28T00:00:00Z'  
       AND eventtime < '2019-10-29T00:00:00Z'  
 GROUP BY eventsource, eventname, errorCode, errorMessage, useridentity.arn  
 ORDER BY eventsource, eventname