3
3

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

Athenaいらず!?AWS CloudTrailのログを「Stratoshark」で分析してみた

Last updated at Posted at 2025-01-26

はじめに

Twitterで見つけた「Stratoshark」というソフトウェアが気になって調べてみたところ、どうやらCloudTrailのログも分析できるらしいので、とりあえず試してみました。本記事では、その手順を紹介します。

3行まとめ

  • フィルタを利用することで、マネジメントコンソールの「イベント履歴」に比べて柔軟にイベントを追うことができる。
  • Readonlyの権限で柔軟に検索できるので、Athenaでテーブル作成するよりハードルが低い。
  • Wiresharkを使い慣れている人はうれしいかも。

Stratosharkについて

Stratosharkってなに?

2025年1月22日、ベルギーのブリュッセルで開催されたFOSDEM 2025にて、SysdigからStratosharkの公式発表が行われました。
StratosharkはWiresharkの兄弟アプリケーションで、システムコールやログメッセージを分析するためのツールとして開発されました。

なにができる?

Linuxシステムのシステムコールをキャプチャし、分析するためのソフトウェアです。
また、プラグインを利用してCloudTrailのログを閲覧することもできるそうです。

下の画像のようにWiresharkライクな画面でCloudTrailのログをフィルタ、閲覧できます。
ただし、Wiresharkのようにリアルタイムでログをキャプチャするのではなく、読み込んだ時点でのログを静的に閲覧できるようです。

2025-01-26_22h28_49.png

どうやる?

Stratsharkから、アクセスキーを使用してS3バケットに接続します。

前提

  • AWSアカウントでCloudTrailの証跡が設定されていること。
  • 証跡のログがS3バケットに出力されていること。

  • S3のバケットポリシーは、下記の公式ドキュメントのものが設定されているとします。任意のバケットポリシーを設定している場合は、後述するIAMがDenyされていないことを確認してください。

CloudTrailのログを分析するために必要なもの

IAMのアクセスキー

証跡が保存されているS3バケットを読み取る際、IAMのアクセスキーを利用します。

  • アクセスキーID
  • シークレットアクセスキー
aws_access_key_id = AKIAIOSFODNN7EXAMPLE
aws_secret_access_key = wJalrXUtnFEMI/K7MDENG/bPxRfiCYEXAMPLEKEY

※セキュリティ的にアクセスキーはなるべく発行しない方がいいよね?とかその辺の話は一旦棚に上げます

IAMの権限

上記のIAMから、証跡が保存されているS3バケットを読み取れる権限が必要です。

  • s3:GetObject: 対象オブジェクトを取得(ダウンロード)できる権限
  • s3:ListBucket: バケット内のオブジェクト一覧を取得できる権限
{
    "Version": "2012-10-17",
    "Statement": [
        {
            "Effect": "Allow",
            "Action": [
                "s3:GetObject",
                "s3:ListBucket"
            ],
            "Resource": "*"
        }
    ]
}

※AWSマネージドポリシーのAmazonS3ReadOnlyAccessをIAMにアタッチする方法でも問題ありません。

手順

Stratosharkをインストールする

この記事では、Windowsにインストールします。

公式サイトにアクセスし、下記のリンクからインストーラーをダウンロードし、実行します。

2025-01-25_20h59_36.png

S3バケットと認証情報を設定する

ここでは、証跡が保存されているS3バケットの指定とクレデンシャルの設定をします。

インストールが完了し、Stratosharkを起動すると下記の画面になります。
ここで、Falco plugion: cloudtrail の左にある歯車アイコンをクリックします。

2025-01-24_21h12_44.png

歯車アイコンをクリックすると、設定画面が開きます。
ここにS3バケットや、クレデンシャルを設定していきます。
設定する項目は、下記の2つです。

  • Log data URL
  • Shared AWS Credentials File

2025-01-24_23h32_38.png

Log data URL

ここには、下記の形式でS3バケットを指定します。
s3://{BUCKET-NAME}/AWSLogs/{アカウントID}/CloudTrail/{リージョン名}/

どうやらs3://{BUCKET-NAME}/だけだとエラーで接続できなかったので、下記のように指定してください。

    • s3://example-bucket/AWSLogs/123456789012/CloudTrail/ap-northeast-1/
    • s3://example-bucket/AWSLogs/123456789012/CloudTrail/ap-northeast-1/2025/
    • s3://example-bucket/AWSLogs/123456789012/CloudTrail/ap-northeast-1/2025/01/24/

1行目の例は全期間のログを読み込むので、表示までかなり時間がかかります。
日付に見当がついている場合は、2-3行目のように該当の日付まで含めると表示するまでの読み込みが早くなります。

Shared AWS Credentials File

ここにはクレデンシャルが記載されているファイルのパスを記載します。

AWS CLIがインストール済みの場合

既にAWS CLIがインストールしてあり、初期設定を済ませている場合は、credentialsファイルがあるのでそれをそのまま使うこともできます。

特にインストールパスをいじっていない場合は、下記をエクスプローラーに打ち込むと保存されている場所がわかるはずです。

%USERPROFILE%\.aws

2025-01-26_23h46_26.png

私の環境だと、下記のようになります。

C:\Users\user\.aws\credentials

AWS CLIをインストールしていない場合

AWS CLIをインストールしていない方は、ファイルを手で作ります。

まず、クレデンシャルを記載したファイルを用意します。
テキストエディタに、下記の形式でアクセスキーを記載してください。

credentials
[default]
aws_access_key_id = AKIAIOSFODNN7EXAMPLE
aws_secret_access_key = wJalrXUtnFEMI/K7MDENG/bPxRfiCYEXAMPLEKEY

次に、ローカルのどこでもいいので保存します。
ファイル名はおそらくなんでもいいですが、ここでは「credentials」としておきます。拡張子もつけていません。

保存したらファイルパスを記載します。
私は下記に保存したのでそれを記載します。

C:\Users\user\Documents\work\credentials

項目が記載できたら、「開始」をクリックします。

2025-01-24_22h44_15.png

ログが多い場合は数十秒くらいかかるかもしれないので気長に待ちます。

しばらくすると下記のような画面になります。

2025-01-26_22h28_49.png

デフォルトでは時間が見にくいので、ウインドウ上部のメニューバーから
View > Time Desplay Format > Date and Time of Day
に変更すると、見やすくなります。

2025-01-24_22h18_49.png

フィルタの方法

フィルタに使用できるフィールドは下記のREADMEの「supported-fields」の項目を参照してください。
※他にもWiresharkでおなじみの「frame.time」なども使えるようですのでいろいろ試してみてください

例えば

image.png

ct.name
の項目のDESCRIPTIONをみると
(eventName in the json)
と記載がありますが、これは下記の公式ドキュメントのレコードの「eventName」と対応していることを意味します。

つまり、CloudTrailのeventNameが「UpdateInstanceInformation」のログをフィルタしたい場合は下記のように入力します。

フィルタ例
ct.name == "UpdateInstanceInformation"

2025-01-27_00h39_14.png

他にも、特定の期間を指定してフィルタしたい場合は下記のようにします。
2025/1/26 23:00:00 - 2025/1/26 23:30:00
をフィルタする例です。

フィルタ例
(frame.time >= "2025-01-26T23:00:00" ) && (frame.time <= "2025-01-26T23:30:00")

また、レコードをクリックして、気になるフィールドをフィルタ欄にドラッグ&ドロップしてもフィルタすることができるので、うまく活用してください。

2025-01-27_01h01_46.png

フィルタがされている状態で、他のフィールドをドラッグ&ドロップし、AND や ORで指定することも可能です。

まとめ

本記事では、Stratosharkを用いてCloudTrailのログを分析する方法を紹介しました。

Athenaで慣れている人はAthenaの方がいいかもしれませんが、いつも「イベント履歴」から検索をしていた人はぜひ使ってみてください。

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
3
3

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?