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

CloudTrail Lakeとは

CloudTrail Lakeとは、端的に言うと、CloudTrailログを容易に分析できるサービスです。Athenaを使ったログ分析とは異なり、作り込みが不要で比較的簡単にCloudTrailのログ分析を始めることができます。

CloudTrail Lakeの特徴を3つのポイントにまとめて説明します。

CloudTrail Lakeの特徴

1.ログを分析するためのSQLクエリ
2.マルチアカウント、マルチリージョン、Organiziations環境の集約
3.データの保存

1.ログを分析するためのSQLクエリ
CloudTrail LakeはSQLベースのクエリを実行することによってログ分析ができます。SELECT ステートメントを使ってログ分析をすすめることになります。AWSが事前にサンプルクエリを用意していて、ニーズに合わせてサンプルをカスタマイズして利用することも可能です。
また、CloudTrail Lakeは、CloudTrail管理イベント、データイベントどちらにもクエリをかけることができます。
詳細はこちら

2.マルチアカウント、マルチリージョン、Organiziations環境の集約
Athenaでは実現ができなかったマルチアカウントに対応。Organiziations内のアカウントを集約して一括でログ分析ができます。うれしいですね。
その他、マルチリージョンにも対応しています。

3.データの保存
クエリ対象のログ(イベントデータ)は、CloudTrail Lake内のイベントデータストアというところに集約され、最大7年間(2555日)保持することができます。CloudTrail以外にもAWS Config の設定項目、または AWS 以外のイベントを保存することもできるようで、利用用途によっては検討してもよいかもしれません。詳細はこちら

また、ログ分析に使用したクエリ結果は、最大で7日間表示することができますし、別途、S3に保存することも可能です。


CloudTrail Lakeの設定

それでは、ログ分析ができるようCloudTrail Lakeの設定をしていきましょう。

1.AWS コンソールにログインし、CloudTrailを選択します。
2.左メニューの「Lake」をクリック。
3.「イベントデータを作成」をクリック。

イベントデータストアの設定項目が表示されるので設定していきます。
イベントデータストア名:適宜入力
保存期間:適宜 (画像では7年間にしました)
「次へ」をクリック。

イベントタイプ:AWSイベントを選択
AWSイベントのタイプ:CloudTrail イベントを選択

CloudTrailイベント:
管理イベントにチェック(今回は管理イベントのみにしました。)
その他の設定:
イベントデータストアに現在のリージョン(ap-northeast-1)のみを含めるにチェックを入れます。(今回は東京リージョンのみにしました。)
イベントを取り込むにチェック(デフォルトでチェックが入ってます)

管理イベント:
読み取りにチェック
書き込みにチェック
「次へ」

最終確認画面が出るので、設定状況を確認し問題がなければ「イベントデータストアの作成」をクリックします。
しばらく待つとイベントデータストアのステータスが「有効」になります。

これで、準備が整いました。

ログ調査

ここからは実際にクエリをかけてログ調査していきたいと思います。
上記でも記載しましたが、CloudTrail LakeはSELECTステートメントのみですので注意いただければと思います。

左メニューの「クエリ」をクリックし、クエリエディタを開きます。
画面を見るとAthenaチックですね。Athenaの経験がある方は直感的に操作できると思います。
下記画像の赤枠「イベントデータストアID」を利用してクエリをかけていきます。

上位10件のログを出力
※FROMの部分は各自のイベントデータストアIDに書き換えてください。

SELECT * 
FROM c1c75be8-XXXX-XXXX-XXXX-XXXXXXXXXXXXXXXX 
limit 10;

コマンドをペーストし、「実行」ボタンをクリックするとクエリを開始します。

クエリ結果は下記画像のように出力されます。

ここからはいくつかサンプルクエリを紹介します。
特定のIAMユーザ(この場合は「testuser」)の操作や実行したログを出力

SELECT *
FROM c1c75be8-XXXX-XXXX-XXXX-XXXXXXXXXXXXXXXX
WHERE userIdentity.userName = 'testuser';

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

SELECT *
FROM c1c75be8-XXXX-XXXX-XXXX-XXXXXXXXXXXXXXXX
WHERE eventTime >= '2023-10-27 00:00:30' AND eventTime <= '2023-10-27 05:00:00' 
order by eventtime desc 
LIMIT 100;

東京リージョンにてAWSコンソールログインしたユーザを検索

SELECT eventTime, useridentity.arn as user, awsRegion
FROM c1c75be8-XXXX-XXXX-XXXX-XXXXXXXXXXXXXXXX
WHERE awsRegion in ('ap-northeast-1') 
AND eventName = 'ConsoleLogin';

EC2インスタンスを作成起動(RunInstances)させた証跡を検索

SELECT eventtime, useridentity.arn as user, eventname
FROM c1c75be8-XXXX-XXXX-XXXX-XXXXXXXXXXXXXXXX
where eventname like 'RunInstances'
order by eventtime desc

クエリの例はこちらにも記載があります。

まとめ

以上となります。CloudTrail Lakeいかがだったでしょうか。
Athenaを使ってログ検索する場合と少し趣が違いますね。CloudTrail Lakeのほうがセットアップが容易であるため使い勝手が良いかと思います。効率的に活用したいですね。


参考


関連記事

【初めてのAWS】CloudTrailの紹介
【AWS】CloudTrail証跡の作成
【AWS】CloudTrail Insightsの有効化
【AWSのログ管理】CloudTrailのログをAthenaを使って調査してみる


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