Je souhaite effectuer des recherches dans un grand ensemble de journaux AWS CloudTrail. Pour éviter toute erreur, je ne souhaite pas créer de tables Amazon Athena manuellement.
Résolution
Utilisez la CloudTrail pour créer automatiquement des tables Athena. Pour plus d'informations, consultez Recherche dans les journaux AWS CloudTrail à l’aide d'Amazon Athena.
Créer la table Athena
1. Ouvrez la console CloudTrail, puis sélectionnez Trails (Pistes) dans le panneau de navigation. Notez le nom du compartiment S3.
2. Dans le panneau de navigation, choisissez Event History (Historique des événements), puis Create Athena table (Créer une table Athena).
3. Dans la fenêtre Create a table in Amazon Athena (Créeer une table dans Amazon Athena), ouvrez le menu Storage location (Emplacement de stockage), puis choisissez le compartiment Amazon Simple Storage Service (Amazon S3) avec les fichiers journaux CloudTrail.
Remarque : Vous pouvez améliorer les performances de recherche pour des périodes spécifiques dans une seule région AWS à l'aide de la projection de partitions pour les journaux CloudTrail avec Athena.
4. Sélectionnez Créer une table.
5. Choisissez Go to Athena (Accéder à Athena).
Remarque : il se peut que le message d'erreur « Your account does not have sufficient permissions to create tables in Amazon Athena » (Votre compte ne dispose pas des autorisations suffisantes pour créer des tables dans Amazon Athena). Dans ce cas, attachez la stratégie gérée AmazonAthenaFullAccess en suivant les instructions décrites dans la section Ajouter les stratégies AWS Identity and Access Management (IAM) (console).
Vous pouvez utiliser un ou plusieurs des exemples de requêtes suivants avec vos journaux. Remplacez votre_nomdetable__athena par le nom de la table Athena et id_clé_accès_ 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.
Exécutez la requête Athena
1. Ouvrez la console Athena, sélectionnez New query (Nouvelle requête), puis sélectionnez la boîte de dialogue pour effacer l'exemple de requête.
2. Entrez votre requête, puis choisissez Run Query (Exécuter la requête).
Affichez toute l'activité des API AWS enregistrée pour une clé d'accès spécifique
SELECT eventTime, eventName, userIdentity.principalId
FROM your_athena_tablename
WHERE userIdentity.accessKeyId like 'access_key_id'
Identifiez toutes les modifications de groupe de sécurité pour 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;
Affichez 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';
Affichez 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';
Identifier les augmentations des coûts mensuels 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 eventtime définies sont limitées à un seul mois. Pour obtenir des résultats pour plusieurs mois, exécutez des requêtes supplémentaires.
Identifiez les 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 n'affichent pas l'appel d'API ayant échoué, é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 d'identité IAM
Comment éliminer les erreurs d'autorisation d'accès IAM refusée ou non autorisée ?