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

4 minuti di lettura
0

Desidero eseguire una ricerca in un'ampia raccolta di log di AWS CloudTrail. Per evitare errori, non voglio creare manualmente tabelle Amazon Athena.

Risoluzione

Usa la console CloudTrail per creare automaticamente le tabelle Athena. Per ulteriori informazioni, consulta Ricerca di log di AWS CloudTrail con Amazon Athena.

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.
  6. Scegli Vai a Athena.

Nota: potresti visualizzare l'errore "Your account does not have sufficient permissions to create tables in Amazon Athena". Se ricevi questo errore, collega la policy gestita AmazonAthenaFullAccess al tuo ruolo AWS Identity and Access Management (IAM).

Esegui le query Athena sulla tabella dei log di CloudTrail

Completa i seguenti passaggi:

  1. Apri la console Athena.
  2. Scegli Nuova query e cancella l'esempio di query.
  3. Inserisci la query e scegli Esegui query.

Utilizza gli esempi di query

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

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 tutte le attività dell'API AWS registrate per una chiave di accesso specifica, esegui la seguente 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 la seguente 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 tutti gli accessi alla console nelle ultime 24 ore, esegui la seguente 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 tutti i tentativi di accesso alla console non riusciti nelle ultime 24 ore, esegui la seguente 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 la seguente 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 la seguente 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 la chiamata API non riuscita, aumenta 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

Informazioni correlate

Esecuzione di query sui log di AWS CloudTrail

Aggiunta e rimozione di autorizzazioni per identità IAM

Come posso ottenere dati per la risoluzione degli errori relativi all'accesso rifiutato o non autorizzato alle autorizzazioni IAM?