2024.05.17

Amazon S3に保存されたVPC Flow logsを簡単に抽出する方法

はじめに

VPC Flow logsは、VPC 内で行き来するIPトラフィックに関する情報をキャプチャできる機能です。出力先を選べますが、中でもAmazon S3(以降、S3)は安価に格納できるため、よく保存先に指定されます。しかし、いざ確認したい時に S3 を開いたら複数にオブジェクトが分かれており、確認に時間がかかる場合はありませんか?
本記事では、簡単に検索できる方法をご紹介します。
なお、VPCに関して詳しく知りたい方は、下記の記事をご確認ください。

プライベートネットワークをクラウド上で構築しよう!クラウドのメリットとAmazon VPCについて解説|AWS活用法

VPC Flow logs概要

VPC Flow logsは、以下のようなタスクに役立てることができます。

  • セキュリティグループルールの診断
    制限の厳しいセキュリティグループを特定できます。
  • トラフィックの監視
    インスタンスに到達トラフィックを監視できます。
  • トラフィックの方向の決定
    ネットワークに出入りするトラフィックの方向を判断できます。

VPC Flow logs 出力先

  • Amazon CloudWatch Logs
  • Amazon S3
  • Amazon Data Firehose
  • ネットワークトラフィックのパスの外で収集されるため、ネットワークのスループットやレイテンシーには影響しません

VPC Flow logsをS3に出力する

Amazon S3の管理画面を開く

画面上部の「サービス」を選択し、サービス一覧より「ストレージ」-「S3」をクリックする。

Amazon S3管理画面

バケットを作成

「バケットを作成」をクリックする。

バケット名を入力する。

画面を下にスクロールし、「バケットを作成」をクリックする。

  • 今回設定はデフォルト状態で作成します

バケットが作成されたことを確認する。

作成したバケット名をクリックし、「プロパティ」をクリックし、「Amazonリソース ネーム(ARN)」をコピーしておく。

VPC画面を開く

画面上部の「サービス」を選択し、サービス一覧より「ネットワーキングとコンテンツ配信」-「VPC」をクリックする。

VPC Flow logs 設定する

左画面の「お使いのVPC」からFlow logsを取得したいVPCを選択する。

タブから「フローログ」を選択し、「フローログを作成」をクリックする。

任意の名前を入力する。

「Amazon S3 バケットに送信」を選択する。S3バケットARNにコピーしていたARNを入力する。

「フローログを作成」をクリックする。

フローログが作成されたことを確認する。

VPC Flow logsをS3をAmazon Athenaで分析する

Amazon Athena概要

Amazon S3内のデータを直接分析するためのインタラクティブなクエリサービスです。

Amazon Athena画面を開く

画面上部の「サービス」を選択し、サービス一覧より「分析」-「Athena」をクリックする。

クエリエディタ画面を開く

Athenaクエリエディタ画面が表示されます。

クエリ結果の場所を設定

設定をクリックする。

「管理」をクリックする。

Athenaのクエリ結果を保存する用のS3を予め作成しておき、「S3を参照」をクリックし対象のS3を選択後、「保存」をクリックする。

Flow log用のテーブルを作成

テーブル作成のクエリを入力して実行をクリックする。

クエリ内容

CREATE EXTERNAL TABLE IF NOT EXISTS `vpc_flow_logs` (
    `version` int,
    `account_id` string,
    `interface_id` string,
    `srcaddr` string,
    `dstaddr` string,
    `srcport` int,
    `dstport` int,
    `protocol` bigint,
    `packets` bigint,
    `bytes` bigint,
    `start` bigint,
    `end` bigint,
    `action` string,
    `log_status` string,
    `vpc_id` string,
    `subnet_id` string,
    `instance_id` string,
    `tcp_flags` int,
    `type` string,
    `pkt_srcaddr` string,
    `pkt_dstaddr` string,
    `region` string,
    `az_id` string,
    `sublocation_type` string,
    `sublocation_id` string,
    `pkt_src_aws_service` string,
    `pkt_dst_aws_service` string,
    `flow_direction` string,
    `traffic_path` int
  )
  PARTITIONED BY (`date` date)
  ROW FORMAT DELIMITED
  FIELDS TERMINATED BY ' '
  LOCATION 's3://DOC-EXAMPLE-BUCKET/prefix/AWSLogs/{account_id}/vpcflowlogs/{region_code}/'
  TBLPROPERTIES ("skip.header.line.count"="1");

クエリの正常終了の確認

実行後に、クエリ結果が表示されるため、「完了済み」を確認する。

テーブルに「vpc_flow_logs」が表示されることを確認する。

データの読み込みを実施

パーティションを作成してデータの読み取りを実施する。
クエリ画面を追加する。

クエリを入力する。

クエリ内容

ALTER TABLE vpc_flow_logs
ADD PARTITION (`date`='YYYY-MM-dd')
LOCATION 's3://DOC-EXAMPLE-BUCKET/prefix/AWSLogs/{account_id}/vpcflowlogs/{region_code}/YYYY/MM/dd';

クエリの正常終了を確認

実行後に、クエリ結果が表示されるため、「完了済み」を確認する。

データが取り込まれたことを確認

テーブル横のマークをクリックし、「テーブルをプレビュー」をクリックする。

「完了済み」を確認し、結果に表示されることを確認する。

  • 検索用のクエリを入力し、データを抽出する

まとめ

VPC Flow logsは調査に優れており、クエリで日付、時間を指定することでその時間のみを確認することができます。
また、IPアドレス、プロトコル等で簡単に抽出することができます。
原因の切り分けなどでご活用ください。
当社は、お客様のご希望に沿ったネットワークを含めたAWSの導入・構築・運用保守を強みとしています。「まず何から着手すべきか分からない」といった際は、当社までお気軽にご相談 新規ウィンドウで開くください。

参考文献

Amazon VPC フローログのクエリ
https://docs.aws.amazon.com/ja_jp/athena/latest/ug/vpc-flow-logs.html 新規ウィンドウで開く

作者プロフィール

名前 手塚
担当のAWS業務 営業支援、ソリューションアーキテクト
AWSの持っている資格 Solutions Architect - Professional
Network - Specialty
好きなAWSのサービス Amazon FSx、Amazon CloudWatch
趣味 レザークラフト
ひとこと とりあえず、やってみる!

関連サービス

導入のお問い合わせはこちら

AWSやAmazon WorkSpacesの導入から接続回線、運用・保守まで何でもお任せください。

お問い合わせ

TOPへ戻る