継続は力なり

タイトル通り定期的な更新を心掛けるブログです。

【AWS】CloudTrailのログを見るときにjqを使ってみた

タダです。


CloudTrailのログを見る機会があり、JSONの内容の中でも必要な情報だけ抜き出したいと思ってjqを使いました。
jqはJSONを整形するツールです。
jq

CloufTrailは、AWSAPIの全操作(マネジメントコンソールログインから)を記録しているためログサービスとしてとても有効です。
CloudTrailではJSONでログがS3に出力されているのですが、内容も膨大なので整形すると見やすくなります。
AWS CloudTrail (AWS API の呼び出し記録とログファイル送信) | AWS

jqを入れる

Macに入れるときは、brewコマンドでインストールできます。

brew install jq 

ログを分析する

予め、対象のログをダウンロードしておきます。
例えば、EC2の操作ログを分析したい時は次のように実行しました。

echo 'eventTime|awsRegion|eventSource|eventName|userName|sourceIPAddress|userAgent|requestParameters|userIdentity' > OUTFILE.tsv
find . -name "*.json.gz" | xargs gunzip -c | jq '.Records[] | select(contains({eventSource:"ec2.amazonaws.com"}))'  | jq -r '"\(.eventTime) \(.awsRegion) \(.eventSource) \(.eventName) \(.userName)  \(.sourceIPAddress)  \(.requestParameters)   \(.userIdentity)"' >> OUTFILE.tsv

TSVファイルで出力していますが、エクセルで開くことができますので、出力後確認してみてください。

各パラメータの意味は以下の通りです。

項目名 説明
eventTime イベントが発生した日時(UTC)
awsRegion イベントが発生したリージョン
eventSource イベントが発生したサービス。EC2だと、ec2.amazonaws.comになる。
eventName イベント名
userName アカウント名
sourceIPAddress リクエスト元IPアドレス
requestParameters ブラウザの情報や携帯端末の機種情報
userIdentity 送信されたリクエストパラメータ

まとめ

今回試してみた結果を書いてみました。
今回、コマンドでしたがAWS内で完結できるのであれば、ElasitcSearchに取り込んで可視化したり、サードパーティツールを使うなどのアプローチがあるかと思います。
ちょっと試してみたらまたブログ書いてみようと思います。