Memo/AmazonWebServices/CloudTrail

https://dexlab.net:443/pukiwiki/index.php?Memo/AmazonWebServices/CloudTrail
 

CloudTrail

CloudTrail: APIのログをS3に記録するサービス。

  • Q: AWS Management ConsoleでCloudTrailのログに「user name=root」だが、存在しないAccessKeyIDが表示される。
  • A: AWSサポートの回答: AccessKeyID が「ASIA*** 」から始まる場合、AWS Management Consoleでrootユーザでログインした操作ログ。一時的なIDが利用されるため。

CloudTrail Insights: 異常なAPIアクティビティを検出

例えば不正利用でEC2「RunInstances」の頻度が通常より多くなったら検出等。
基本的には有効にしたい。


Athena で検索する

  • Athenaはスキャンしたデータサイズによって課金されるので、日時やリソース名で適切に絞り込む。1TBあたり1回、$5

awscli: lookup-events で過去90日以内のログから検索

  • TerminateInstancesのイベントを探す
    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 \

awscli: ログからtsvを生成

  • s3 bucketから1ヶ月分をダウンロードして、tsvを生成
    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}

EC2のイベントを検索する


Organizationsでの利用

複数アカウントがあり、全アカウントを対象にCloudTrailのログを保存できる。

  • 組織の証跡の作成 - AWS CloudTrail
    • OrganizationsのAWSにs3 bucektが一つでき、その中に全てのOrganizationsのログが貯まる。
    • OrganizationsにAWSアカウントが追加されても、自動で追加される。

有効化


トップ   編集 凍結 差分 バックアップ 添付 複製 名前変更 リロード   新規 一覧 単語検索 最終更新   ヘルプ   最終更新のRSS
Last-modified: 2019-11-28 (木) 15:34:32 (10d)