Comment rechercher des appels d'API pour exécuter, arrêter, démarrer et résilier des instances EC2 dans les journaux CloudTrail ?

Date de la dernière mise à jour : 03/09/2019

Je souhaite suivre les appels d'API qui exécutent, arrêtent, démarrent et terminent mes instances Amazon Elastic Compute Cloud (Amazon EC2).

Brève description

AWS CloudTrail vous permet d'afficher et de suivre les appels d'API effectués sur votre compte. Vous pouvez suivre les appels d'API suivants pour la sécurité et la conformité :

Résolution

Utilisez l'historique des événements CloudTrail, les requêtes Amazon Athena ou téléchargez les journaux CloudTrail à partir de compartiments Amazon Simple Storage Service (S3).

Historique des événements CloudTrail

1.    Ouvrez la console CloudTrail, puis choisissez Event history (Historique des événements).

2.    Dans Filter (Filtre), sélectionnez le menu déroulant, puis choisissez Event name (Nom de l’événement).

3.    Dans la zone de texte Enter event name entrez le nom de l'événement que vous souhaitez rechercher (RunInstances, StopInstances, StartInstances ou TerminateInstances), puis choisissez le nom de l'événement.

4.    Dans Time range (Plage de temps), entrez la plage de temps souhaitée, puis choisissez Apply (Appliquer).

Remarque : vous pouvez afficher l'historique des événements des 90 derniers jours.

Pour plus d'informations, consultez Affichage des événements avec l'historique des événements CloudTrail.

Requête Athena

1.    Suivez les instructions pour interroger des journaux AWS CloudTrail.

2.    Ouvrez la console Athena, puis choisissez Query Editor (Éditeur de requête).

3.   Entrez l'exemple de requête suivant pour renvoyer toutes les informations d'événement disponibles pour l'appel d'API RunInstances, puis choisissez Run Query (Exécuter la requête).

Remarque : remplacez « cloudtrail-logs » par le nom de votre table Athena que vous avez créé à l' étape 1.

SELECT *
FROM cloudtrail-logs
WHERE eventName = 'RunInstances'

4.    Entrez l'exemple de requête suivant pour renvoyer des informations d'événement filtrées pour l'appel d'API RunInstances, puis choisissez Run Query (Exécuter la requête).

SELECT userIdentity.username, eventTime, eventName
FROM cloudtrail-logs
WHERE eventName = 'RunInstances'

5.    Entrez l'exemple de requête suivant pour renvoyer des informations d'événement pour les API qui se terminent par la chaîne Instances, du 1er avril 2019 à la date du jour, puis choisissez Run Query (Exécuter la requête).

SELECT userIdentity.username, eventTime, eventName
FROM cloudtrail-logs
WHERE (eventName LIKE '%Instances') AND eventTime > '2019-04-01T00:00:01Z'

Télécharger les journaux CloudTrail depuis Amazon S3

Utilisez jq ou votre processeur de ligne de commande JSON préféré pour analyser les journaux.

Remarque : vous devez disposer d'une piste d'audit activée pour vous connecter à un compartiment S3.

1.    Suivez les instructions pour rechercher vos fichiers journaux CloudTrail.

2.    Suivez les instructions pour télécharger vos fichiers journaux CloudTrail.

3.    Ouvrez un terminal Bash, puis créez ce répertoire pour stocker les fichiers journaux :

$ mkdir cloudtrail-logs

4.    Accédez au nouveau répertoire, puis téléchargez les journaux CloudTrail :

$ cd cloudtrail-logs

$ aws s3 cp s3://my_cloudtrail_bucket/AWSLogs/012345678901/CloudTrail/eu-west-1/2019/08/07 ./ --recursive

5.    Décompressez les fichiers journaux :

$ gzip -d *

L'exemple de requête suivant renvoie chaque événement dans son intégralité pour l'API RunInstances :

cat * | jq '.Records[] | select(.eventName=="RunInstances")'

L'exemple de requête suivant renvoie chaque événement dans son intégralité pour les API StopInstances et TerminateInstances :

cat * | jq '.Records[] | select(.eventName=="StopInstances" or .eventName=="TerminateInstances" )'