Validation de l'intégrité du fichier CloudTrail journal à l'aide du AWS CLI - AWS CloudTrail

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.

Validation de l'intégrité du fichier CloudTrail journal à l'aide du AWS CLI

Pour valider les journaux avec le AWS Command Line Interface, utilisez la CloudTrail validate-logs commande. La commande utilise les fichiers de valeur de hachage livrés dans votre compartiment Amazon S3 pour effectuer la validation. Pour plus d'informations sur les fichiers de valeur de hachage, consultez CloudTrail structure du fichier digest.

Vous AWS CLI permet de détecter les types de modifications suivants :

  • Modification ou suppression de fichiers CloudTrail journaux

  • Modification ou suppression de fichiers CloudTrail de synthèse

  • Modification ou suppression des deux types de fichiers ci-dessus

Note

AWS CLI Valide uniquement les fichiers journaux référencés par des fichiers de synthèse. Pour plus d’informations, consultez Vérifier si un fichier en particulier a été livré par CloudTrail.

Prérequis

Pour valider l'intégrité du fichier journal avec le AWS CLI, les conditions suivantes doivent être remplies :

  • Vous devez disposer d'une connexion en ligne pour AWS.

  • Vous devez disposer d'un accès en lecture au compartiment Amazon S3 qui contient les fichiers de valeur de hachage et les fichiers journaux.

  • Les fichiers de synthèse et de journal ne doivent pas avoir été déplacés de l'emplacement Amazon S3 d'origine où ils ont été CloudTrail livrés.

Note

Les fichiers journaux qui ont été téléchargés sur le disque local ne peuvent pas être validés avec la AWS CLI. Pour des recommandations sur la création de vos propres outils pour la validation, consultez Implémentations personnalisées de validation de l'intégrité des fichiers CloudTrail journaux.

validate-logs

Syntaxe

Voici la syntaxe de validate-logs. Les paramètres facultatifs sont présentés entre crochets.

aws cloudtrail validate-logs --trail-arn <trailARN> --start-time <start-time> [--end-time <end-time>] [--s3-bucket <DOC-EXAMPLE-BUCKET>] [--s3-prefix <prefix>] [--account-id <account-id>] [--verbose]

Note

La commande validate-logs est spécifique à la région. Vous devez spécifier l'option --region globale pour valider les journaux d'un utilisateur spécifique Région AWS.

Options

Voici les options de ligne de commande pour validate-logs. Les options --trail-arn et --start-time sont requises. L'option --account-id est également requise pour les journaux de suivi d'organisation.

--start-time

Spécifie que les fichiers journaux fournis le jour ou après la valeur d'UTChorodatage spécifiée seront validés. Exemple: 2015-01-08T05:21:42Z.

--end-time

Spécifie éventuellement que les fichiers journaux fournis le jour ou avant la valeur d'UTChorodatage spécifiée seront validés. La valeur par défaut est l'UTCheure actuelle (Date.now()). Exemple: 2015-01-08T12:31:41Z.

Note

Pour la plage de temps spécifiée, la commande validate-logs vérifie uniquement les fichiers journaux qui sont référencés dans les fichiers de valeur de hachage correspondants. Aucun autre fichier journal dans le compartiment Amazon S3 n'est vérifié. Pour plus d'informations, consultez Vérifier si un fichier en particulier a été livré par CloudTrail.

--s3-bucket

Vous pouvez également spécifier le compartiment Amazon S3 où les fichiers de valeur de hachage sont stockés. Si aucun nom de compartiment n'est spécifié, il AWS CLI sera récupéré en appelantDescribeTrails().

--s3-prefix

Vous pouvez également spécifier le préfixe Amazon S3 où les fichiers de valeur de hachage sont stockés. S'il n'est pas spécifié, il le AWS CLI récupérera en appelantDescribeTrails().

Note

Vous devez utiliser cette option uniquement si votre préfixe actuel est différent du préfixe utilisé au cours de la plage de temps que vous spécifiez.

--account-id

Spécifie éventuellement le compte pour la validation des journaux. Ce paramètre est obligatoire pour les journaux de suivi d'organisation afin de valider les journaux d'un compte spécifique au sein d'une organisation.

--trail-arn

Spécifie le nom de ressource Amazon (ARN) du parcours à valider. Le format d'un parcours est le ARN suivant.

arn:aws:cloudtrail:us-east-2:111111111111:trail/MyTrailName
Note

Pour obtenir le tracé ARN d'un parcours, vous pouvez utiliser la describe-trails commande avant de courirvalidate-logs.

Vous souhaiterez peut-être spécifier le nom et le préfixe du compartiment en plus du journal ARN si les fichiers journaux ont été envoyés à plusieurs compartiments au cours de la période que vous avez spécifiée, et si vous souhaitez limiter la validation aux fichiers journaux d'un seul des compartiments.

--verbose

Génère, en option, des informations de validation pour chaque fichier journal ou fichier de valeur de hachage dans la plage de temps spécifiée. La sortie indique si le fichier reste inchangé ou s'il a été modifié ou supprimé. En mode non détaillé (la valeur par défaut), les informations sont renvoyées uniquement en cas d'échec de validation.

Exemple

L'exemple suivant valide les fichiers journaux à partir de l'heure de début spécifiée jusqu'à l'heure actuelle, à l'aide du compartiment Amazon S3 configuré pour le journal d'activité actuel et en spécifiant une sortie détaillée.

aws cloudtrail validate-logs --start-time 2015-08-27T00:00:00Z --end-time 2015-08-28T00:00:00Z --trail-arn arn:aws:cloudtrail:us-east-2:111111111111:trail/my-trail-name --verbose

Fonctionnement d’validate-logs

La commande validate-logs commence par valider le fichier de valeur de hachage le plus récent dans la plage de temps spécifiée. Elle vérifie d'abord que le fichier de valeur de hachage a été téléchargé à partir de l'emplacement auquel il prétend appartenir. En d'autres termes, si le fichier df1 de synthèse CLI télécharge depuis l'emplacement S3p1, validate-logs le vérifiera. p1 == df1.digestS3Bucket + '/' + df1.digestS3Object

Si la signature du fichier de valeur de hachage est valide, elle vérifie la valeur de hachage de chacun des journaux référencés dans le fichier de valeur de hachage. La commande remonte ensuite dans le temps et valide les fichiers de valeur de hachage précédents ainsi que les fichiers journaux référencés dans l'ordre. Elle continue jusqu'à ce que la valeur spécifiée pour start-time soit atteinte, ou jusqu'à la fin de chaîne de valeur de hachage prenne fin. Si un fichier de valeur de hachage est manquant ou non valide, la plage de temps ne pouvant pas être validée est indiquée dans la sortie.

Résultats de la validation

Les résultats de la validation commencent par un en-tête récapitulatif au format suivant :

Validating log files for trail trail_ARN between time_stamp and time_stamp

Chaque ligne de la sortie principale contient les résultats de validation d'un fichier de valeur de hachage ou d'un fichier journal au format suivant :

<Digest file | Log file> <S3 path> <Validation Message>

Le tableau suivant décrit les messages de validation possibles pour les fichiers journaux et les fichiers de valeur de hachage.

Type de fichier Message de validation Description
Digest file valid La signature du fichier de valeur de hachage est valide. Les fichiers journaux auxquels if fait référence peuvent être vérifiés. Ce message est inclus uniquement en mode détaillé.
Digest file INVALID: has been moved from its original location Le compartiment S3 ou l'objet S3 à partir dont le fichier de valeur de hachage été extrait ne correspond pas aux emplacements de compartiment S3 ou d'objet S3 enregistrées dans le fichier de valeur de hachage.
Digest file INVALID: invalid format Le format du fichier de valeur de hachage n'est pas valide. Les fichiers journaux correspondant à la plage de temps que le fichier de valeur de hachage représente ne peuvent pas être validés.
Digest file INVALID: not found Le fichier de valeur de hachage est introuvable. Les fichiers journaux correspondant à la plage de temps que le fichier de valeur de hachage représente ne peuvent pas être validés.
Digest file INVALID: public key not found for fingerprint fingerprint La clé publique correspondant à l'empreinte digitale enregistrée dans le fichier de valeur de hachage est introuvable. Le fichier de valeur de hachage ne peut pas être validé.
Digest file INVALID: signature verification failed La signature du fichier de valeur de hachage n'est pas valide. Le fichier condensé n'étant pas valide, les fichiers journaux auxquels il fait référence ne peuvent pas être validés et aucune assertion ne peut être faite quant à l'APIactivité qu'ils contiennent.
Digest file INVALID: Unable to load PKCS #1 key with fingerprint fingerprint Comme la clé publique DER codée au format PKCS #1 ayant l'empreinte spécifiée n'a pas pu être chargée, le fichier condensé ne peut pas être validé.
Log file valid Le fichier journal a été validé et n'a pas été modifié depuis le moment de la livraison. Ce message est inclus uniquement en mode détaillé.
Log file INVALID: hash value doesn't match Le hachage du fichier journal ne correspond pas. Le fichier journal a été modifié après sa livraison par CloudTrail.
Log file INVALID: invalid format Le format du fichier journal n'est pas valide. Le fichier journal ne peut pas être validé.
Log file INVALID: not found Le fichier journal est introuvable et ne peut pas être validé.

La sortie inclut des informations récapitulative sur les résultats retournés.

Exemples de sorties

Détaillée

L'exemple de commande validate-logs suivant utilise l'indicateur --verbose et produit le résultat qui suit. [...] indique l'exemple de sortie abrégée.

aws cloudtrail validate-logs --trail-arn arn:aws:cloudtrail:us-east-2:111111111111:trail/example-trail-name --start-time 2015-08-31T22:00:00Z --end-time 2015-09-01T19:17:29Z --verbose
Validating log files for trail arn:aws:cloudtrail:us-east-2:111111111111:trail/example-trail-name between 2015-08-31T22:00:00Z and 2015-09-01T19:17:29Z Digest file s3://DOC-EXAMPLE-BUCKET/AWSLogs/111111111111/CloudTrail-Digest/us-east-2/2015/09/01/111111111111_CloudTrail-Digest_us-east-2_example-trail-name_us-east-2_20150901T201728Z.json.gz valid Log file s3://DOC-EXAMPLE-BUCKET/AWSLogs/111111111111/CloudTrail/us-east-2/2015/09/01/111111111111_CloudTrail_us-east-2_20150901T1925Z_WZZw1RymnjCRjxXc.json.gz valid Log file s3://DOC-EXAMPLE-BUCKET/AWSLogs/111111111111/CloudTrail/us-east-2/2015/09/01/111111111111_CloudTrail_us-east-2_20150901T1915Z_POuvV87nu6pfAV2W.json.gz valid Log file s3://DOC-EXAMPLE-BUCKET/AWSLogs/111111111111/CloudTrail/us-east-2/2015/09/01/111111111111_CloudTrail_us-east-2_20150901T1930Z_l2QgXhAKVm1QXiIA.json.gz valid Log file s3://DOC-EXAMPLE-BUCKET/AWSLogs/111111111111/CloudTrail/us-east-2/2015/09/01/111111111111_CloudTrail_us-east-2_20150901T1920Z_eQJteBBrfpBCqOqw.json.gz valid Log file s3://DOC-EXAMPLE-BUCKET/AWSLogs/111111111111/CloudTrail/us-east-2/2015/09/01/111111111111_CloudTrail_us-east-2_20150901T1950Z_9g5A6qlR2B5KaRdq.json.gz valid Log file s3://DOC-EXAMPLE-BUCKET/AWSLogs/111111111111/CloudTrail/us-east-2/2015/09/01/111111111111_CloudTrail_us-east-2_20150901T1920Z_i4DNCC12BuXd6Ru7.json.gz valid Log file s3://DOC-EXAMPLE-BUCKET/AWSLogs/111111111111/CloudTrail/us-east-2/2015/09/01/111111111111_CloudTrail_us-east-2_20150901T1915Z_Sg5caf2RH6Jdx0EJ.json.gz valid Digest file s3://DOC-EXAMPLE-BUCKET/AWSLogs/111111111111/CloudTrail-Digest/us-east-2/2015/09/01/111111111111_CloudTrail-Digest_us-east-2_example-trail-name_us-east-2_20150901T191728Z.json.gz valid Log file s3://DOC-EXAMPLE-BUCKET/AWSLogs/111111111111/CloudTrail/us-east-2/2015/09/01/111111111111_CloudTrail_us-east-2_20150901T1910Z_YYSFiuFQk4nrtnEW.json.gz valid [...] Log file s3://DOC-EXAMPLE-BUCKET/AWSLogs/144218288521/CloudTrail/us-east-2/2015/09/01/144218288521_CloudTrail_us-east-2_20150901T1055Z_0Sfy6m9f6iBzmoPF.json.gz valid Log file s3://DOC-EXAMPLE-BUCKET/AWSLogs/144218288521/CloudTrail/us-east-2/2015/09/01/144218288521_CloudTrail_us-east-2_20150901T1040Z_lLa3QzVLpOed7igR.json.gz valid Digest file s3://DOC-EXAMPLE-BUCKET/AWSLogs/144218288521/CloudTrail-Digest/us-east-2/2015/09/01/144218288521_CloudTrail-Digest_us-east-2_example-trail-name_us-east-2_20150901T101728Z.json.gz INVALID: signature verification failed Digest file s3://DOC-EXAMPLE-BUCKETAWSLogs/144218288521/CloudTrail-Digest/us-east-2/2015/09/01/144218288521_CloudTrail-Digest_us-east-2_example-trail-name_us-east-2_20150901T091728Z.json.gz valid Log file s3://DOC-EXAMPLE-BUCKET/AWSLogs/144218288521/CloudTrail/us-east-2/2015/09/01/144218288521_CloudTrail_us-east-2_20150901T0830Z_eaFvO3dwHo4NCqqc.json.gz valid Digest file s3://DOC-EXAMPLE-BUCKET/AWSLogs/144218288521/CloudTrail-Digest/us-east-2/2015/09/01/144218288521_CloudTrail-Digest_us-east-2_example-trail-name_us-east-2_20150901T081728Z.json.gz valid Digest file s3://DOC-EXAMPLE-BUCKET/AWSLogs/144218288521/CloudTrail-Digest/us-east-2/2015/09/01/144218288521_CloudTrail-Digest_us-east-2_example-trail-name_us-east-2_20150901T071728Z.json.gz valid [...] Log file s3://DOC-EXAMPLE-BUCKET/AWSLogs/111111111111/CloudTrail/us-east-2/2015/08/31/111111111111_CloudTrail_us-east-2_20150831T2245Z_mbJkEO5kNcDnVhGh.json.gz valid Log file s3://DOC-EXAMPLE-BUCKET/AWSLogs/111111111111/CloudTrail/us-east-2/2015/08/31/111111111111_CloudTrail_us-east-2_20150831T2225Z_IQ6kXy8sKU03RSPr.json.gz valid Log file s3://DOC-EXAMPLE-BUCKET/AWSLogs/111111111111/CloudTrail/us-east-2/2015/08/31/111111111111_CloudTrail_us-east-2_20150831T2230Z_eRPVRTxHQ5498ROA.json.gz valid Log file s3://DOC-EXAMPLE-BUCKET/AWSLogs/111111111111/CloudTrail/us-east-2/2015/08/31/111111111111_CloudTrail_us-east-2_20150831T2255Z_IlWawYZGvTWB5vYN.json.gz valid Digest file s3://DOC-EXAMPLE-BUCKET/AWSLogs/111111111111/CloudTrail-Digest/us-east-2/2015/08/31/111111111111_CloudTrail-Digest_us-east-2_example-trail-name_us-east-2_20150831T221728Z.json.gz valid Results requested for 2015-08-31T22:00:00Z to 2015-09-01T19:17:29Z Results found for 2015-08-31T22:17:28Z to 2015-09-01T20:17:28Z: 22/23 digest files valid, 1/23 digest files INVALID 63/63 log files valid

Non détaillée

L'exemple de commande validate-logs suivant n'utilise pas l'indicateur --verbose. Dans l'exemple de sortie qui suit, une erreur a été détectée. Seules les informations concernant l'en-tête, les erreurs et les informations récapitulatives sont renvoyées.

aws cloudtrail validate-logs --trail-arn arn:aws:cloudtrail:us-east-2:111111111111:trail/example-trail-name --start-time 2015-08-31T22:00:00Z --end-time 2015-09-01T19:17:29Z
Validating log files for trail arn:aws:cloudtrail:us-east-2:111111111111:trail/example-trail-name between 2015-08-31T22:00:00Z and 2015-09-01T19:17:29Z Digest file s3://DOC-EXAMPLE-BUCKET/AWSLogs/144218288521/CloudTrail-Digest/us-east-2/2015/09/01/144218288521_CloudTrail-Digest_us-east-2_example-trail-name_us-east-2_20150901T101728Z.json.gz INVALID: signature verification failed Results requested for 2015-08-31T22:00:00Z to 2015-09-01T19:17:29Z Results found for 2015-08-31T22:17:28Z to 2015-09-01T20:17:28Z: 22/23 digest files valid, 1/23 digest files INVALID 63/63 log files valid

Vérifier si un fichier en particulier a été livré par CloudTrail

Pour vérifier si un fichier spécifique de votre bucket a été livré par CloudTrail, exécutez-le validate-logs en mode détaillé pendant la période pendant laquelle le fichier est inclus. Si le fichier apparaît dans la sortie devalidate-logs, il a été livré par CloudTrail.