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.
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ù l'ARN de la ressource se termine par example/datafile.txt
. Pour des raisons de lisibilité, la fonction replacearn:aws:s3:::
initiale de l'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 formats JSON, par exemple
STRUCT
, extrayez les données depuis JSON. Pour de plus amples informations, veuillez consulter Extraire des données JSON à partir de chaînes.Quelques suggestions pour envoyer des requêtes sur votre CloudTrail table :
-
Commencez par examiner quels utilisateurs ont appelé les différentes opérations d'API et à partir de quelles adresses IP sources.
-
Utilisez la requête SQL de base suivante dans votre 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.