タダです.
前回 DuckDB CLI をセットアップしました.今回は CloudTrail ログを分析してみます.
S3 に入っているログからテーブルを作る
こちらの記事を参照させていただいてテーブルを作ってみました.
D CREATE TABLE trail_log_20170424 AS WITH raw_data AS ( SELECT * FROM read_json( 's3://[CloudTrail ログパス]', maximum_depth=2 ) ) SELECT unnest(Records) AS Event FROM raw_data; D show tables; ┌─────────────────────────────┐ │ name │ │ varchar │ ├─────────────────────────────┤ │ trail_log_20170427 │ └─────────────────────────────┘
より分析をしやすいようにフィールドを追加したテーブルを用意したらだいぶ見通しが良くなりました.
select * from trail_log_detailed_20170424 limit 10; ┌──────────────┬──────────────────────┬────────────────────┬─────────────────┬────────────────┬───┬─────────────────┬────────────────────┬───────────────┬────────────┬─────────────┬──────────────────────┐ │ eventVersion │ eventTime │ eventSource │ eventName │ awsRegion │ … │ managementEvent │ recipientAccountId │ eventCategory │ tlsVersion │ cipherSuite │ clientProvidedHost… │ │ varchar │ varchar │ varchar │ varchar │ varchar │ │ varchar │ varchar │ varchar │ varchar │ varchar │ varchar │ ├──────────────┼──────────────────────┼────────────────────┼─────────────────┼────────────────┼───┼─────────────────┼────────────────────┼───────────────┼────────────┼─────────────┼──────────────────────┤ │ 1.04 │ 2017-04-27T00:16:43Z │ logs.amazonaws.com │ CreateLogStream │ ap-northeast-1 │ … │ │ 1234567891011 │ │ │ │ │ │ 1.04 │ 2017-04-27T00:20:31Z │ logs.amazonaws.com │ CreateLogStream │ ap-northeast-1 │ … │ │ 1234567891011 │ │ │ │ │ │ 1.05 │ 2017-04-27T00:20:30Z │ sts.amazonaws.com │ AssumeRole │ us-east-1 │ … │ │ 1234567891011 │ │ │ │ │ │ 1.04 │ 2017-04-27T00:21:02Z │ logs.amazonaws.com │ CreateLogStream │ ap-northeast-1 │ … │ │ 1234567891011 │ │ │ │ │ │ 1.04 │ 2017-04-27T00:26:26Z │ logs.amazonaws.com │ CreateLogStream │ ap-northeast-1 │ … │ │ 1234567891011 │ │ │ │ │ │ 1.05 │ 2017-04-27T00:26:25Z │ sts.amazonaws.com │ AssumeRole │ us-east-1 │ … │ │ 1234567891011 │ │ │ │ │ │ 1.05 │ 2017-04-27T00:26:25Z │ sts.amazonaws.com │ AssumeRole │ us-east-1 │ … │ │ 1234567891011 │ │ │ │ │ │ 1.05 │ 2017-04-27T00:28:33Z │ sts.amazonaws.com │ AssumeRole │ ap-northeast-1 │ … │ │ 1234567891011 │ │ │ │ │ │ 1.05 │ 2017-04-27T00:30:38Z │ sts.amazonaws.com │ AssumeRole │ us-east-1 │ … │ │ 1234567891011 │ │ │ │ │ │ 1.05 │ 2017-04-27T00:33:55Z │ sts.amazonaws.com │ AssumeRole │ ap-northeast-1 │ … │ │ 1234567891011 │ │ │ │ │ ├──────────────┴──────────────────────┴────────────────────┴─────────────────┴────────────────┴───┴─────────────────┴────────────────────┴───────────────┴────────────┴─────────────┴──────────────────────┤ │ 10 rows 33 columns (11 shown) │ └──────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────┘
この中から CreateLogStream
のイベントだけ抽出してみます.2017年4月24日のログからは7件見つかりました.古いログすぎてフィールドが一致してなさそうなのですが,CloudTrail のログをスポットで分析する時にどういう操作をしたらいいのかのイメージが付きました.記事を参照させていただき,ありがとうございました!
D select * from trail_log_detailed_20170424 where eventName='CreateLogStream'; ┌──────────────┬──────────────────────┬────────────────────┬─────────────────┬────────────────┬───┬─────────────────┬────────────────────┬───────────────┬────────────┬─────────────┬──────────────────────┐ │ eventVersion │ eventTime │ eventSource │ eventName │ awsRegion │ … │ managementEvent │ recipientAccountId │ eventCategory │ tlsVersion │ cipherSuite │ clientProvidedHost… │ │ varchar │ varchar │ varchar │ varchar │ varchar │ │ varchar │ varchar │ varchar │ varchar │ varchar │ varchar │ ├──────────────┼──────────────────────┼────────────────────┼─────────────────┼────────────────┼───┼─────────────────┼────────────────────┼───────────────┼────────────┼─────────────┼──────────────────────┤ │ 1.04 │ 2017-04-27T00:16:43Z │ logs.amazonaws.com │ CreateLogStream │ ap-northeast-1 │ … │ │ 1234567891011 │ │ │ │ │ │ 1.04 │ 2017-04-27T00:20:31Z │ logs.amazonaws.com │ CreateLogStream │ ap-northeast-1 │ … │ │ 1234567891011 │ │ │ │ │ │ 1.04 │ 2017-04-27T00:21:02Z │ logs.amazonaws.com │ CreateLogStream │ ap-northeast-1 │ … │ │ 1234567891011 │ │ │ │ │ │ 1.04 │ 2017-04-27T00:26:26Z │ logs.amazonaws.com │ CreateLogStream │ ap-northeast-1 │ … │ │ 1234567891011 │ │ │ │ │ │ 1.04 │ 2017-04-27T01:17:15Z │ logs.amazonaws.com │ CreateLogStream │ ap-northeast-1 │ … │ │ 1234567891011 │ │ │ │ │ │ 1.04 │ 2017-04-27T03:18:56Z │ logs.amazonaws.com │ CreateLogStream │ ap-northeast-1 │ … │ │ 1234567891011 │ │ │ │ │ │ 1.04 │ 2017-04-27T04:29:09Z │ logs.amazonaws.com │ CreateLogStream │ ap-northeast-1 │ … │ │ 1234567891011 │ │ │ │ │ ├──────────────┴──────────────────────┴────────────────────┴─────────────────┴────────────────┴───┴─────────────────┴────────────────────┴───────────────┴────────────┴─────────────┴──────────────────────┤ │ 7 rows 33 columns (11 shown) │ └──────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────┘
まとめ
DuckDB で S3 にある CloudTrail のログを分析するのを試してみました.次は ALB のログを試してみたいです.