AWS CloudTrail は、AWS アカウント内のすべての API コールを監査し、記録するサービスです。このサービスを使用することで、誰がいつどのようなアクションを実行したのかを追跡できます。
指定されたシナリオ「どんなロググループをいつ、だれがアクセスしたのか」を CloudTrail ログを使って調査することも可能です。以下のステップでは、CloudTrail ログを使って特定のロググループに対するアクセスを追跡する方法を説明します。
ステップ 1: CloudTrail を設定する
もし CloudTrail をまだ設定していない場合、以下の手順で CloudTrail を設定します:
- AWS Management Console にログインします。
- サービスメニューから CloudTrail を選択します。
- Trails ページで、Create trail ボタンをクリックします。
- トレイルの名前と設定を指定して、保存先の S3 バケットを選択します。
- すべての設定が完了したら、トレイルを作成します。
ステップ 2: CloudTrail ログの保存場所を確認する
CloudTrail ログは通常 S3 バケットに保存されます。S3 バケット内のログファイルは日付ごとにディレクトリに分けられ、JSON 形式で保存されています。
ステップ 3: ロググループへのアクセスを確認するためのクエリ
ロググループに対するアクセス(ロググループの作成、削除、ログのストリーム開始・停止など)を調査するために、CloudTrail ログ内で以下のようなフィールドを検索します:
- CloudWatchLogs サービス (
eventSource:logs.amazonaws.com) - API コールの イベント名 (
eventName)
ステップ 4: S3 バケットまたは CloudWatch Logs 内の CloudTrail ログの検索
S3 バケット内のログを適切に検索するには、Amazon Athena を利用することが推奨されます。Athena を使用すると、S3 に保存された CloudTrail ログに対して直接 SQL クエリを実行できます。
例: Amazon Athena を使ったクエリ
- Amazon Athena コンソール にアクセスします。
- データベースとテーブルを作成して、CloudTrail ログが保存されている S3 バケットを参照します。
- ロググループへのアクセスをクエリする SQL コードを準備します:
SELECT
eventTime,
userIdentity.userName,
eventName,
requestParameters.logGroupName
FROM
cloudtrail_logs
WHERE
eventSource = 'logs.amazonaws.com'
AND eventName IN ('CreateLogGroup', 'DeleteLogGroup', 'PutLogEvents', 'GetLogEvents')
ORDER BY
eventTime DESC
上記のクエリでは、以下の情報を取得しています:
eventTime:イベントが発生した日時userIdentity.userName:アクションを実行したユーザー名eventName:実行された API コールrequestParameters.logGroupName:ロググループの名前
これは基本的なクエリ例で、必要に応じて条件を追加または修正できます。
ステップ 5: CloudWatch Logs Insight を使用
CloudTrail ログを CloudWatch Logs に送信している場合、CloudWatch Logs Insight を使用してログを検索することも可能です:
- CloudWatch コンソール にアクセスし、Logs Insights を選択します。
logGroupNameでフィルタリングするクエリを実行します:
fields @timestamp, @message
| filter @message like /"eventSource":"logs.amazonaws.com"/
| filter @message like /"eventName":"CreateLogGroup" OR "eventName":"DeleteLogGroup" OR "eventName":"PutLogEvents" OR "eventName":"GetLogEvents"/
| sort @timestamp desc
| limit 20
上記のクエリでは、CloudWatch Logs Insights 内で logs.amazonaws.com のイベントを特定し、ロググループに対する特定のアクションをフィルタリングしています。
このようにして、CloudTrail ログを使ってどんなロググループをいつ、誰がアクセスしたのかを確認することができます。必要に応じてフィルタリング条件を調整し、さらに詳細な調査を行うことも可能です。

コメント