Athenaを使ってVPC Flow Logsを解析する

AWS運用自動化サービス「Cloud Automator」

実はSQL文が好きな鎌田です。
Athena、みなさんはもうご利用でしょうか。Athenaを使うとS3バケットの様々なログをSQLをかけて解析することができます。

今回は、VPC Flow LogsをAthenaで検索する方法をご紹介します。

VPC Flow LogsのログをS3に出力するように設定する

まず、解析対象のVPC Flow LogsをS3に出力するように設定しておきます。
VPCの画面から、S3にログを出力したいVPCを選び、下のペインから「フローログ」のタグを選んで「フローログ」の作成をクリックします。

下記のような形で、フローログの設定をします。
アクセスログを吐き出すS3バケットは、空で良いので先に作っておきましょう。
※この画面では作成できません
S3バケットに書き込む必要なバケットポリシーは、自動でアタッチされます。

設定項目 設定値
フィルタ すべて
Maximum aggregation interval 10 minutes
送信先 S3バケットへの送信
S3バケットARN arn:aws:s3:::(バケット名)
Format AWS default format

フローログが無事設定されました。

Athenaの準備

では本題のAthenaです。マネジメントコンソールでAthenaにアクセスしましょう。
「今すぐ始める」をクリックします。

クエリを保存するバケットの指定

クエリの画面になります。
まずは、クエリを保存するバケットの設定が必要です。
設定をクリックします。

下記のようにs3://の形式で、S3バケットを指定します。
S3のバケットと、Athenaを実行したいリージョンが一致していないとエラーになりますのでご注意ください。
入力できたら「保存」をクリックします。

データベースを作成する

データベースを作りましょう。
以下のクエリを新しいクエリのエリアに記載し、「クエリの実行」をクリックします。

エラーが出ますが、データベースは作成できていますのでご安心を。

VPC Flow Logs用のテーブルを作成する

次に、VPC Flow Logs用のテーブルを作成します。
以下のSQLを実行するのですが、LOCATIONの部分のS3バケット名や、リージョンなどは、環境に応じて適宜変更してください。
※AWSドキュメントには、こちらに記載があります。

新しいクエリで、こちらもまた実行します。

実行が完了すると、テーブルが出来上がります。

パーティションを設定する

クエリを実行する際は、日付をパーティションと呼ばれる設定をしておく必要があります。
以下は2020年2月の例です。
日付やバケット名などを変更して実行してください。

クエリを実行してみる

では実際に、クエリを実行してみましょう。
下記のSQLは、VPC Flow Logsの中から、送信元:ポート/送信先:ポートを、許可された通信だけリスト化しています。
Limit 10を付けて10件の出力に絞っています。
10の数字を変えることで、100件の出力なども可能です。
これまでと同じように、クエリをコピーして、実行してみてください。

実行すると、以下のようにリストが出力されます。

このような形で、簡単にVPC Flow Logsの解析が出来ました!

まとめ

SQLを知らなくても、簡単にVPC Flow Logsの解析が行えたことが確認できたかと思います。
SQLをご存知の方であれば、ちょっとSQLを修正するだけでも簡単に様々な解析が可能です。
ぜひAthenaをお試しください!

AWS運用自動化サービス「Cloud Automator」