aaaa

AWS CloudTrail は、AWS アカウント内のすべての API コールを監査し、記録するサービスです。このサービスを使用することで、誰がいつどのようなアクションを実行したのかを追跡できます。

指定されたシナリオ「どんなロググループをいつ、だれがアクセスしたのか」を CloudTrail ログを使って調査することも可能です。以下のステップでは、CloudTrail ログを使って特定のロググループに対するアクセスを追跡する方法を説明します。

ステップ 1: CloudTrail を設定する

もし CloudTrail をまだ設定していない場合、以下の手順で CloudTrail を設定します:

  1. AWS Management Console にログインします。
  2. サービスメニューから CloudTrail を選択します。
  3. Trails ページで、Create trail ボタンをクリックします。
  4. トレイルの名前と設定を指定して、保存先の S3 バケットを選択します。
  5. すべての設定が完了したら、トレイルを作成します。

ステップ 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 を使ったクエリ

  1. Amazon Athena コンソール にアクセスします。
  2. データベースとテーブルを作成して、CloudTrail ログが保存されている S3 バケットを参照します。
  3. ロググループへのアクセスをクエリする 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 を使用してログを検索することも可能です:

  1. CloudWatch コンソール にアクセスし、Logs Insights を選択します。
  2. 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 ログを使ってどんなロググループをいつ、誰がアクセスしたのかを確認することができます。必要に応じてフィルタリング条件を調整し、さらに詳細な調査を行うことも可能です。

コメント

タイトルとURLをコピーしました