Passer au contenu

Comment puis-je créer automatiquement des tables dans Athena pour effectuer des recherches dans les journaux CloudTrail ?

Lecture de 4 minute(s)
0

Je souhaite effectuer une recherche dans une grande collection de journaux AWS CloudTrail et créer automatiquement des tables Amazon Athena.

Résolution

Créer la table Athena à partir de vos journaux CloudTrail

Procédez comme suit :

  1. Ouvrez la console CloudTrail.
  2. Dans le volet de navigation, choisissez Journaux d’activité, puis notez le nom du compartiment Amazon Simple Storage Service (Amazon S3) qui contient les journaux CloudTrail.
  3. Dans le volet de navigation, choisissez Historique des événements, puis Créer une table Athena.
  4. Dans la fenêtre Créer une table dans Amazon Athena, sélectionnez le compartiment S3 dans le menu Emplacement de stockage.
    Remarque : pour améliorer votre recherche dans une période donnée, utilisez la projection de partition pour les journaux CloudTrail dans Athena.
  5. Choisissez Créer une table.
    Remarque : la table fait référence aux journaux CloudTrail dans le compartiment S3 spécifié, y compris les nouveaux journaux que CloudTrail transmet au compartiment.

Si vous n'êtes pas autorisé à créer une table, le message d'erreur « Your account does not have sufficient permissions to create tables in Amazon Athena » peut s'afficher.

Pour résoudre cette erreur, associez la politique gérée AmazonAthenaFullAccess à votre rôle Gestion des identités et des accès AWS (AWS IAM).

Exécuter des requêtes Athena sur votre table de journaux CloudTrail

Procédez comme suit :

  1. Ouvrez la console Athena.
  2. Pour effacer l'exemple de requête, choisissez Effacer.
  3. Saisissez votre requête, puis choisissez Exécuter la requête.

Utiliser des exemples de requête

Si vous utilisez Athena pour la première fois, définissez un compartiment S3 comme emplacement pour stocker les résultats des requêtes avant d'exécuter votre première requête.

Pour définir l'emplacement d'un compartiment S3, procédez comme suit :

  1. Ouvrez la console Athena.
  2. Dans le volet de navigation, choisissez Éditeur de requêtes.
  3. Choisissez l'onglet Paramètres de requête.
  4. Sélectionnez Gérer.
  5. Dans le champ Emplacement du résultat de la requête - facultatif, saisissez un compartiment S3.
  6. Sélectionnez Enregistrer.

Voici des exemples de requête que vous pouvez exécuter.

Remarque : dans les requêtes suivantes, remplacez your_athena_tablename par le nom de votre table Athena et access_key_id par la clé d’accès de 20 caractères. La clé d’accès commence généralement par les caractères AKIA ou ASIA.

Pour afficher les activités de l'opération d’API AWS enregistrées pour une clé d'accès spécifique, exécutez la requête suivante :

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

Pour identifier les modifications apportées au groupe de sécurité de votre instance Amazon Elastic Compute Cloud (Amazon EC2), exécutez la requête suivante :

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;

Pour afficher toutes les connexions à la console au cours des dernières 24 heures, exécutez la requête suivante :

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';

Pour afficher les tentatives de connexion à la console qui ont échoué au cours des dernières 24 heures, exécutez la requête suivante :

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';

Pour identifier les augmentations de coûts mensuelles de CloudTrail, exécutez la requête suivante :

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

Remarque : les valeurs de eventtime définies sont valables pour un seul mois. Pour obtenir des résultats sur plusieurs mois, exécutez des requêtes supplémentaires.

Pour identifier les autorisations IAM manquantes, exécutez la requête suivante :

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

Si les résultats n’indiquent pas l'opération d'API qui a échoué, exécutez la requête suivante pour augmenter la plage de requêtes :

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
AWS OFFICIELA mis à jour il y a 6 mois