Je souhaite effectuer une recherche dans une vaste collection de journaux AWS CloudTrail. Pour éviter les erreurs, je souhaite éviter la création manuelle de tables dans Amazon Athena.
Résolution
Utilisez la console CloudTrail pour créer automatiquement des tables dans Athena. Pour en savoir plus, consultez l’article Recherche dans les journaux AWS CloudTrail à l’aide d’Amazon Athena.
Création d’une table Athena
1. Ouvrez la console CloudTrail, puis choisissez Journaux de suivi dans le volet de navigation. Prenez note du compartiment S3.
2. Dans le volet de navigation, choisissez Historique des événements, puis Créer une table Athena.
3. Dans la fenêtre Créer une table dans Amazon Athena, ouvrez le menu Emplacement de stockage, puis choisissez le compartiment Amazon Simple Storage Service (Amazon S3) contenant les fichiers journaux CloudTrail.
Remarque : vous pouvez améliorer les performances de votre recherche pour des périodes spécifiques au sein d’une seule région AWS en utilisant la projection de partition pour les journaux CloudTrail avec Athena.
4. Choisissez Créer une table.
5. Choisissez Accéder à Athena.
Remarque : il est possible que le message d’erreur « Votre compte ne dispose pas des autorisations suffisantes pour créer des tables dans Amazon Athena » s’affiche. Dans ce cas, attachez la politique gérée AmazonAthenaFullAccess selon les instructions de la section Ajout de politiques AWS IAM (console).
Vous pouvez utiliser un ou plusieurs des exemples de requêtes suivants dans le cadre de vos journaux. Remplacez your_athena_tablename par le nom de votre table Athena et access_key_id par votre clé d’accès à 20 caractères. La clé d’accès commence généralement par les caractères AKIA ou ASIA.
Exécution de la requête Athena
1. Ouvrez la console Athena, choisissez Nouvelle requête, puis choisissez la boîte de dialogue permettant d’effacer l’exemple de requête.
2. Saisissez votre requête, puis choisissez Exécuter la requête.
Affichage de toutes les activités enregistrées de l’API AWS pour une clé d’accès spécifique
SELECT eventTime, eventName, userIdentity.principalId
FROM your_athena_tablename
WHERE userIdentity.accessKeyId like 'access_key_id'
Identification de toute modification apportée aux groupes de sécurité de votre instance EC2
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;
Affichage de toutes les connexions à la console au cours des dernières 24 heures
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';
Affichage de toutes les tentatives de connexion à la console ayant échoué au cours des dernières 24 heures
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';
Identification des augmentations de coûts mensuels de CloudTrail
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 définies dans eventtime sont limitées à un mois. Pour obtenir des résultats sur plusieurs mois, vous devrez exécuter des requêtes supplémentaires.
Identification d’autorisations IAM manquantes
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 ne montrent pas l’échec de l’appel d’API, élargissez la plage de requêtes comme suit :
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
Informations connexes
Interrogation des journaux AWS CloudTrail
Ajout et suppression d’autorisations basées sur l’identité IAM
Comment puis-je résoudre les erreurs d’accès refusé ou non autorisé liées aux autorisations IAM ?