{CloudTrail}CloudTrail ログファイルの整合性の検証

https://docs.aws.amazon.com/ja_jp/awscloudtrail/latest/userguide/cloudtrail-log-file-validation-intro.html

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. バケットポリシーの追加

vim policy01.json

{
    "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