https://dev.classmethod.jp/articles/validating-cloudtrail-log-file-integrity/
ログファイルの整合性の検証を有効にすると、CloudTrail は、配信するすべてのログファイルに対してハッシュを作成します。
また、1 時間ごとに、CloudTrail は、過去 1 時間のログファイルを参照し、それぞれのハッシュを含むファイルを作成して配信します。
-- 1. コマンド等のインストール
-- 1.1 aws cli version 2 インストール
curl "https://awscli.amazonaws.com/awscli-exe-linux-x86_64.zip" -o "awscliv2.zip"
unzip awscliv2.zip
sudo ./aws/install
aws --version
-- 1.2 jqインストール
sudo yum -y install jq
-- 2. S3 バケットを作成する
aws s3 mb s3://bucket123
aws s3 ls
-- 3. バケットポリシーの追加
{
"Version": "2012-10-17",
"Statement": [
{
"Sid": "AWSCloudTrailAclCheck20150319",
"Effect": "Allow",
"Principal": {"Service": "cloudtrail.amazonaws.com"},
"Action": "s3:GetBucketAcl",
"Resource": "arn:aws:s3:::bucket123"
},
{
"Sid": "AWSCloudTrailWrite20150319",
"Effect": "Allow",
"Principal": {"Service": "cloudtrail.amazonaws.com"},
"Action": "s3:PutObject",
"Resource": "arn:aws:s3:::bucket123/AWSLogs/999999999999/*",
"Condition": {
"StringEquals": {
"s3:x-amz-acl": "bucket-owner-full-control",
"aws:SourceArn": "arn:aws:cloudtrail:ap-northeast-1:999999999999:trail/trail01"
}
}
}
]
}
aws s3api put-bucket-policy \
--bucket bucket123 \
--policy file://policy01.json
aws s3api get-bucket-policy \
--bucket bucket123
-- 4. 証跡の作成(整合性検証を有効)
aws cloudtrail create-trail \
--name trail01 \
--s3-bucket-name bucket123 \
--no-include-global-service-events \
--no-is-multi-region-trail \
--enable-log-file-validation \
--no-is-organization-trail
aws cloudtrail list-trails
aws cloudtrail describe-trails
aws cloudtrail get-trail \
--name trail01
-- 5. ログ記録の開始
aws cloudtrail get-trail-status \
--name trail01
aws cloudtrail start-logging \
--name trail01
1時間程度待つ
-- 6. 整合性の検証
aws s3 ls s3://bucket123 --recursive
aws s3 ls s3://bucket123/AWSLogs/999999999999/CloudTrail --recursive
aws s3 ls s3://bucket123/AWSLogs/999999999999/CloudTrail-Digest --recursive
aws cloudtrail validate-logs \
--trail-arn arn:aws:cloudtrail:ap-northeast-1:999999999999:trail/trail01 \
--start-time 20220712T00:00:00Z \
--end-time 20220714T00:00:00Z \
--verbose
aws s3 rm s3://bucket123/AWSLogs/999999999999/CloudTrail/ap-northeast-1/2022/07/12/999999999999_CloudTrail_ap-northeast-1_20220712T1425Z_V8z8YxxS7xxKRaaa.json.gz
ログファイルを削除して検証がエラーとなることを確認
aws s3 rm s3://bucket123/AWSLogs/999999999999/CloudTrail-Digest/ap-northeast-1/2022/07/12/999999999999_CloudTrail-Digest_ap-northeast-1_trail01_ap-northeast-1_20220712T142754Z.json.gz
ダイジェストファイルを削除した場合は、特にエラーとならず、存在するダイジェストファイルだけで評価が実施される
-- 7. クリーンアップ
-- 証跡の削除
aws cloudtrail describe-trails
aws cloudtrail delete-trail \
--name trail01
-- バケットの削除
aws s3 ls
aws s3 rb s3://bucket123 --force