【AWSのログ管理】CloudTrailのログをAthenaを使って調査してみる

CloudTrailのログとは

CloudTrailは、AWSのサービスで発生したアクションやイベントのログを記録するサービスです。これにより、誰が、いつ、何を行ったかをログとして記録します。ログは不正アクセスの検出や変更の追跡などに使用することができ、セキュリティ、コンプライアンス、トラブルシューティングに役立ちます。

CloudTrailは、90日までのログしか確認することができません。もし、90日よりも古いログを確認する場合はS3に保存されたログをAthenaなどを利用して確認することになります。
また、複雑な条件を指定してログ検索したい場合もAthenaを利用したクエリ検索が必要になります。

今回は、CloudTrailログをAthenaを使って調査してみたいと思います。

CloudTrailの設定

前提
CloudTrailの証跡設定が済んでおりS3バケットにログ出力されていること

設定手順
1.AWS コンソールにログインし、CloudTrailを選択します。
2.左メニューの「イベント履歴」をクリック。
3.「Athenaテーブル作成」をクリック

Athena用のテーブル作成メニューが出ますので、下記画像のように、CloudTrail出力用のS3バケットを選択します。
画面最下段の「テーブルを作成」をクリックします。
設定は以上となります。Athena内にテーブルが出来ているはずです。

Athenaの確認

Athena内にテーブルが出来ているはずですので確認をしていきます。

1.AWS コンソールにログインし、Athenaを選択します。
2.「クエリエディタを起動」をクリック。
3.クエリ結果の保存設定
初めてAthenaを利用する場合、画像にあるような注意事項が表示され、クエリエディタからクエリを実行することができません。
Athenaのクエリ結果を保存するためのS3バケット設定が必要になります。

予めS3バケットの用意がある場合はそのまま「設定を編集」をクリックして設定にすすみます。
S3バケットの用意が無い場合は、S3バケットを新たに作成してから画像にある「設定を編集」にすすみます。

「設定を編集」をクリック後、いくつか入力項目があります。
「クエリ」結果の場所
にS3バケット名を指定します。
他の設定は適宜指定をしてください。後で変更することもできます。
「保存」をクリックするとクエリが実行できるようになります。

4.データベースの確認
データベース「default」内にテーブルが出来ているか確認します。
下記の画像では、「cloudtrail_logs_test_cloudtraillog_bucket」の名前で出来ていますね。

これで準備は完了です。

ログ調査

CloudTrailログにたいしてAthenaからクエリを実行することができるようになりました。参考までにいくつか一般的なクエリを紹介します。適宜、Athenaのクエリエディタにコマンドをペーストして実行してみてください。

上位10件のログを出力

SELECT * 
FROM "default"."cloudtrail_logs_test_cloudtrail_bucket" 
limit 10;

特定のIAMユーザ「testuser」のログを出力

SELECT *
FROM "default"."cloudtrail_logs_test_cloudtrail_bucket"
WHERE userIdentity.userName = 'testuser';

日時と時間を指定し、かつ、最新100件のログを出力

SELECT eventTime, userIdentity.username, eventSource, eventName, awsRegion 
FROM "default"."cloudtrail_logs_test_cloudtrail_bucket"
WHERE eventTime >= '2023-10-27 00:00:30' AND eventTime <= '2023-10-27 05:00:00' 
order by eventtime desc 
LIMIT 100;

EC2インスタンスの作成ログを出力

SELECT eventtime, useridentity.userName, eventname
FROM "default"."cloudtrail_logs_test_cloudtrail_bucket"
WHERE eventname like 'RunInstances'
order by eventtime desc;

AWSコンソールログインしたログを出力

SELECT eventtime, useridentity.userName, eventname
FROM "default"."cloudtrail_logs_test_cloudtrail_bucket"
WHERE eventname like 'ConsoleLogin'
order by eventtime desc;


まとめ

以上となります。いかがだったでしょうか。
CloudTrailログを調査することで、ログインの痕跡やいつ、誰が、どんな操作をしたか、または悪意のある操作などの問題解析に利用することができます。有効に活用したいものですね。

CloudTrailのログを調査する方法は他にも「CloudTrail Lake」という機能で実現できます。後日、この機能の詳細を書きたいと思います。


参考


関連

【初めてのAWS】CloudTrailの紹介
【AWS】CloudTrail証跡の作成
【AWS】CloudTrail Insightsの有効化


この記事が気に入ったらサポートをしてみませんか?