AWSの部屋

AWS学習者向けのブログです

S3 に保存した CloudTrail のログを Athena で参照してみる

はじめに

CloudTrail を使うことによって「いつ」「誰が」「何を」実行したのかをログとして残すことができます。今回は CloudTrail で残したログを Athena で参照してみようと思います。

使用するサービス

サービス名 内容
Amazon S3 AWS が提供するオブジェクトストレージサービス
AWS CloudTrail AWS アカウントのガバナンス、コンプライアンス、運用監査、リスク監査を行うためのサービス
Amazon Athena Amazon S3 内のデータを SQL 分析できるインタラクティブなクエリサービス

アーキテクチャ

手順

  1. CloudTrail で証跡の作成
  2. S3 でログの確認
  3. Athena でテーブルの作成
  4. Athena でクエリの実行

1. CloudTrail で証跡の作成

以下のように設定し、証跡の作成を行います。

これで S3 に対するすべてのイベントをログに記録することができるようになります。

2. S3 でログの確認

「20220810-test-bucketバケットを作成し、その中に「hane.jpg」をアップロードしました。

このようにバケットにログが格納されました。

ログを確認すると作成したバケットに関するログが残っていることがわかります。

3. Athena でテーブルの作成

CloudTrail コンソールから「Athena テーブルを作成」をクリックします。

ログが格納されるバケットを選択しテーブルを作成します。

Athena のクエリエディタでテーブルが作成されていることを確認します。

4. Athena でクエリの実行

Athena でクエリを実行しログを参照します。以下はサンプルとして10行だけデータを抽出しています。

select eventTime as "イベント時間",
       userIdentity.userName as "ユーザー名",
       eventName as "イベント名",
       eventSource as "イベントソース"
  from "default"."cloudtrail_logs_aws_cloudtrail_logs_370560102364_44d0a6db"
 limit 10;

このように「いつ」「誰が」「何を」したのかを把握することができます。

また、以下のように対象のファイルに絞ってログを抽出することもできます。

select eventTime as "イベント時間",
       userIdentity.userName as "ユーザー名",
       eventName as "イベント名",
       eventSource as "イベントソース"
  from "default"."cloudtrail_logs_aws_cloudtrail_logs_370560102364_44d0a6db"
 where requestparameters like '%hane.jpg%' -- 検索対象のファイル名
 limit 10;

さいごに

まだ簡単な使い方だけですが、CloudTrail の基本的な使い方は理解することができました。今後は AWS認定ソリューションアーキテクト-プロフェッショナル試験に向けて理解を深めていこうと思います。