CloudTrail: APIのログをS3に記録するサービス。
問題:
"arn": "arn:aws:sts::222222222222:assumed-role/some-role/botocore-session-1234567890",
例: アカウントB上のリソースを作成した、アカウントAのユーザを調べる
AWSCLIのprofileを使う場合、セッション名を変更できるようになった。
[profile namedsessionrole] role_arn = arn:aws:iam::234567890123:role/SomeRole source_profile = default role_session_name = Session_Maria_Garcia
例えば不正利用でEC2「RunInstances」の頻度が通常より多くなったら検出等。
基本的には有効にしたい。
profile="default" region=ap-northeast-1 start_date="2019-09-01T00:00:00Z" end_date="2019-09-30T23:59:59Z" event_name=TerminateInstances aws cloudtrail lookup-events \ --lookup-attributes "AttributeKey=EventName,AttributeValue=${event_name}" \ --start-time $start_date \ --end-time $end_date \ --profile $profile \ --region $region \
profile=default region=ap-northeast-1 date=2019/09 s3_path=s3://<bucket>/AWSLogs/<aws account id>/CloudTrail/$region/$date out_file=out.tsv aws s3 sync ${s3_path} log --profile $profile --quiet echo -e 'eventTime\tawsRegion\teventSource\teventName\tuserName\tsourceIPAddress\tuserAgent\trequestParameters' > ${out_file} find ./log -name "*.json.gz" | xargs gunzip -c | jq ".Records[]" | \ jq -r '"\(.eventTime)\t\(.awsRegion)\t\(.eventSource)\t\(.eventName)\t\(.userIdentity.userName)\t\(.sourceIPAddress)\t\(.userAgent)\t\(.requestParameters)"' >> ${out_file}
複数アカウントがあり、全アカウントを対象にCloudTrailのログを保存できる。
aws cloudtrail put-event-selectors --profile example --region ap-northeast-1 --trail-name detault --event-selectors '[{"ReadWriteType": "WriteOnly"}]'