【AWS】Cloud TrailとAthenaでAWSアカウント内のリソース操作を追跡

2月 12, 2022

どもども。最近はもっぱらRailsを勉強中のsaisaiです。Webフレームワーク楽しいですね!


皆様、AWSは利用されておりますでしょうか。物理リソースを用意することなくサーバを立ち上げたり、コードでインフラを構築できたりと非常に便利です。


しかし、AWSを利用する以上外部からの不正アクセスによる危険性が常につきまとっていることもまた事実です。


クレデンシャルキーの流出やS3バケットポリシーの設定ミスなど、その要因は様々です。


もちろん上記要因を排除するよう務めることがAWSを利用する上での大前提となりますが、実際に自身のAWSアカウントが不正利用された場合に、すぐにその操作を追求できるようにしておくこともまた必然です。


そこで今回は、AWSアカウント内の操作ログをCloudTrailを使用して取得し、Athenaを使用してログファイルのテーブルを作成、クエリによる分析ができるよう設定していきたいと思います。

Cloud Trailの証跡作成

まず初めにCloud Trailの証跡を作成し、AWSアカウント内の操作をログとして残しておけるようにしておきましょう。


AWSコンソール画面からの作成は非常に簡単です。まずは、コンソール画面上分の検索バーでCloud Trailと検索し、表示された選択肢でページを移動します。今回はさくっと作成するため"クイック証跡の作成"を利用しましょう。オレンジのボタン"証跡の作成"をクリックしてください。

特に証跡名などこだわりがなければこのまま"証跡の作成"をクリックしてください。

AWSアカウント内の操作を記録するCloudTrail証跡"management-events"と、そのログを保存するS3バケットが作成されます。ここまでできましたら、ログが出力されるように可能な範囲でAWSリソースを操作してみてください。


では、上記S3バケットの中身を確認しログの内容を確認してみましょう。S3のページに移動します。


先ほど作成したS3バケットを選択し、フォルダの中へ入ってみましょう。ログファイルが保存されていることが確認できますね。中身を見てみましょう。

…見てみましたか?かなり読みづらい内容で衝撃を受けたのではないでしょうか。生のログはJson形式のデータがそのまま羅列されているので非常に読みにくいですね。


そこで次はこのログをもう少し見やすくしてみたいと思います。


が、その前に。S3ライフサイクルポリシーを設定しておきましょう。Cloud Trailは利用料がかかりませんが、S3は保存するデータ量に応じて料金がかかりますので、一定期間保存したファイルは削除しておくようにしたいと思います。


今回は30日のサイクルでファイルを削除するよう設定します。保持期間やアーカイブストレージへの移行は各自判断いただきますようお願いいたします。


管理よりライフサイクルルールを作成します。

ルール名はお好みでつけてください。あとは下記の通り設定すれば保存してから30日経過したオブジェクトは削除されるようになります。

さて、ではいよいよCloud Trailのログを分析できるようにしていきたいと思います。


今回はAmazon Athenaというサービスを利用してCloud Trailのログを可視化できるようにしましょう。

Athenaを用いた分析

まず初めに、Cloud Trailのページに戻ってください。"イベント履歴"より"Athenaテーブルを作成"をクリックします。

ストレージの場所はCloud Trailのログを保存しているS3バケットを選択し、右下"テーブルを作成"をクリックしてください。


作成したら、Athenaのページへ移動しましょう。Tableが一つ作成されているはずです。続いてAthenaのクエリ実行結果を保存するS3バケットを選択します(画面上部set up query…をクリック)。athenaと名のつくS3バケットが作成されているはずなので、そちらを選択してください。それ以外のチェックマークは今回はつけないでおきましょう。


これでAthenaの準備も完了です。早速下記クエリを実行してみましょう。(テーブル右端三点リーダのPreview Tableでも同じ結果が得られます。)

SELECT * FROM "default"."Athenaのテーブル名" limit 10;

上記コマンドを入力して"RUN query"を実行します。すると下部Results欄に結果が表示されるはずです。


先ほど直接ログファイルを見たときとは異なり、テーブル形式で表示されるためとても見やすくなっています。


もちろんクエリにより各キーを条件付きでソートして結果を表示することもできますので、例えば怪しい操作があった場合は"eventtime"を日付けでソートし結果を表示、その他の項目で当時の状況を分析することが可能となります。


Amazon Athenaはクエリによってスキャンされたデータ量のみの課金ですのでテーブルは残しておき、必要に応じて利用することをお勧めいたします。

さいごに

以上、Cloud TrailとAthenaによるAWSリソース操作のログ分析でした。


非常に手軽に実装できる上、有事の際に大きな手助けとなってくれますので、是非とも設定してみてください。


ノーモア、クラウド破産。


最後まで読んでいただき、ありがとうございました。


↓オススメ教材

AWS

Posted by CY