Exemples de requêtes de CloudTrail journal - Amazon Athena

Les traductions sont fournies par des outils de traduction automatique. En cas de conflit entre le contenu d'une traduction et celui de la version originale en anglais, la version anglaise prévaudra.

Exemples de requêtes de CloudTrail journal

L'exemple suivant montre une partie d'une requête qui renvoie toutes les demandes anonymes (non signées) provenant de la table créée pour les journaux d' CloudTrail événements. Cette requête sélectionne ces demandes où useridentity.accountid est anonyme et useridentity.arn n'est pas spécifié :

SELECT * FROM cloudtrail_logs WHERE eventsource = 's3.amazonaws.com' AND eventname in ('GetObject') AND useridentity.accountid = 'anonymous' AND useridentity.arn IS NULL AND requestparameters LIKE '%[your bucket name ]%';

Pour plus d'informations, consultez le billet de blog consacré au AWS Big Data Analysez la sécurité, la conformité AWS CloudTrail et l'activité opérationnelle à l'aide d'Amazon Athena.

Interrogez les champs imbriqués dans les journaux CloudTrail

Les champs userIdentity et resources étant des types de données imbriqués, leur interrogation nécessite un traitement particulier.

L'objet userIdentity est constitué de types STRUCT imbriqués. Il est possible de les interroger en utilisant un point pour séparer les champs, comme dans l'exemple suivant :

SELECT eventsource, eventname, useridentity.sessioncontext.attributes.creationdate, useridentity.sessioncontext.sessionissuer.arn FROM cloudtrail_logs WHERE useridentity.sessioncontext.sessionissuer.arn IS NOT NULL ORDER BY eventsource, eventname LIMIT 10

Le champ resources est un tableau d'objets STRUCT. Pour ces tableaux, utilisez CROSS JOIN UNNEST pour désimbriquer le tableau afin de pouvoir interroger ses objets.

L'exemple suivant renvoie toutes les lignes où ARN se termine la ressourceexample/datafile.txt. Pour des raisons de lisibilité, la fonction replace supprime la arn:aws:s3::: sous-chaîne initiale du. ARN

SELECT awsregion, replace(unnested.resources_entry.ARN,'arn:aws:s3:::') as s3_resource, eventname, eventtime, useragent FROM cloudtrail_logs t CROSS JOIN UNNEST(t.resources) unnested (resources_entry) WHERE unnested.resources_entry.ARN LIKE '%example/datafile.txt' ORDER BY eventtime

L'exemple suivant interroge les événements DeleteBucket. La requête extrait de l'objet resources le nom du compartiment et l'ID du compte auquel le compartiment appartient.

SELECT awsregion, replace(unnested.resources_entry.ARN,'arn:aws:s3:::') as deleted_bucket, eventtime AS time_deleted, useridentity.username, unnested.resources_entry.accountid as bucket_acct_id FROM cloudtrail_logs t CROSS JOIN UNNEST(t.resources) unnested (resources_entry) WHERE eventname = 'DeleteBucket' ORDER BY eventtime

Pour plus d'informations sur la désimbrication, voir Matrices de filtres.

Conseils pour interroger CloudTrail les journaux

Tenez compte des points suivants lorsque vous explorez les données du CloudTrail journal :

  • Avant d'exécuter des requêtes sur ces journaux, vérifiez que votre table de journaux ressemble à celle dans Création d'une table pour les CloudTrail journaux dans Athena à l'aide du partitionnement manuel. Si ce n'est pas la première table, supprimez la table existante à l'aide de la commande suivante : DROP TABLE cloudtrail_logs.

  • Une fois que vous la table existante supprimée recréez-la. Pour de plus amples informations, veuillez consulter Création d'une table pour les CloudTrail journaux dans Athena à l'aide du partitionnement manuel.

    Vérifiez que les champs figurant dans votre requête Athena sont répertoriés correctement. Pour plus d'informations sur la liste complète des champs d'un CloudTrail enregistrement, consultez la section Contenu de l'CloudTrail enregistrement.

    Si votre requête inclut des champs dans des JSON formats tels que « extraire STRUCT des données de JSON ». Pour de plus amples informations, veuillez consulter Extraire JSON des données à partir de chaînes.

    Quelques suggestions pour envoyer des requêtes sur votre CloudTrail table :

  • Commencez par examiner quels utilisateurs ont effectué quelles API opérations et à partir de quelles adresses IP sources.

  • Utilisez la SQL requête de base suivante comme modèle. Collez la requête dans la console Athena et exécutez-la.

    SELECT useridentity.arn, eventname, sourceipaddress, eventtime FROM cloudtrail_logs LIMIT 100;
  • Modifiez la requête pour explorer davantage vos données.

  • Pour améliorer les performances, insérez la clause LIMIT pour renvoyer un sous-ensemble spécifié de lignes.