Knowledge Center Monthly Newsletter - March 2025
Stay up to date with the latest from the Knowledge Center. See all new and updated Knowledge Center articles published in the last month and re:Post’s top contributors.
Amazon Athena を使用して VPC フローログを分析する方法を教えてください。
Amazon Athena を使用して Amazon 仮想プライベートクラウド (Amazon VPC) フローログを分析したいと考えています。
簡単な説明
Amazon VPC フローログを使用してネットワークトラフィックパターンを分析し、Amazon VPC ネットワーク全体の脅威とリスクを特定します。
解決策
Athena を使用して Amazon VPC フローログを分析する
Athena を使用して Amazon VPC フローログを分析するには、次の手順を実行します。
-
Amazon Athena コンソールのクエリエディタを使用して、次のコマンドを実行してデータベースを作成します。test_db_vpclogs を、使用しているデータベースの名前に置き換えてください。
CREATE DATABASE test_db_vpclogs;
**重要:**フローログが保存されている Amazon Simple Storage Service (Amazon S3) バケットと同じ AWS リージョンにデータベースを作成するのがベストプラクティスです。
-
データベースで、次のコマンドを実行して VPC フローログのテーブルを作成します。test_table_vpclogs を実際のテーブルの名前に置き換えてください。また、LOCATION パラメータを変更して、ログデータを含む Amazon S3 バケットを指すようにします。
CREATE EXTERNAL TABLE `test_table_vpclogs`( `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, `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 ( `region` string, `day` string) ROW FORMAT DELIMITED FIELDS TERMINATED BY ' ' STORED AS INPUTFORMAT 'org.apache.hadoop.mapred.TextInputFormat' OUTPUTFORMAT 'org.apache.hadoop.hive.ql.io.HiveIgnoreKeyTextOutputFormat' LOCATION 's3://awsexamplebucket/awsexampleprefix/awsexamplelogs/1111222233334444/vpcflowlogs/' TBLPROPERTIES ( 'projection.day.format'='yyyy/MM/dd', 'projection.day.range'='2021/01/01,NOW', 'projection.day.type'='date', 'projection.enabled'='true', 'projection.region.type'='enum', 'projection.region.values'='us-east-1,us-west-2,ap-south-1,eu-west-1', 'skip.header.line.count'='1', 'storage.location.template'='s3://awsexamplebucket/awsexampleprefix/awsexamplelogs/1111222233334444/vpcflowlogs/${region}/${day}' )
**注記:**上記のコマンドは、パーティションプロジェクションを使用してテーブルを作成し、テーブルをパーティション化し、自動的にパーティションを作成します。投影されたパーティションが Amazon S3 に存在しない場合でも、Athena はそのパーティションを投影します。クエリでは分割された属性を使用するのがベストプラクティスです。
-
Amazon Athena コンソールのクエリエディタを使用して、テーブルに対する SQL ステートメントを実行します。クエリの保存、以前のクエリの表示、クエリ結果の CSV 形式でのダウンロードができます。
クエリの例
**注記:**test_table_vpclogs を実際のテーブルの名前に置き換えてください。クエリに合わせて列の値やその他の変数を変更します。
指定した期間の最初の 100 件のフローログエントリを時系列で表示するには、次のようなクエリを実行します。
SELECT * FROM test_table_vpclogs WHERE day >= '2021/02/01' AND day < '2021/02/28' ORDER BY day ASC LIMIT 100;
指定した期間に上位 10 件の HTTP パケットを受信したサーバーを表示するには、次のようなクエリを実行します。
SELECT SUM(packets) AS packetcount, dstaddr FROM test_table_vpclogs WHERE dstport = 443 AND day >= '2021/03/01' AND day < '2021/03/31' GROUP BY dstaddr ORDER BY packetcount DESC LIMIT 10;
前のクエリは、HTTPS ポート 443 で受信したパケットの数をカウントし、宛先 IP アドレスごとにグループ化します。次に、前週の上位 10 件のエントリを返します。
指定した時間範囲で作成されたログを確認するには、次のようなクエリを実行します。
SELECT interface_id, srcaddr, action, protocol, to_iso8601(from_unixtime(start)) AS start_time, to_iso8601(from_unixtime("end")) AS end_time FROM test_table_vpclogs WHERE DAY >= '2021/04/01' AND DAY < '2021/04/30';
指定した時間範囲における特定の送信元 IP アドレスのフローログを表示するには、次のようなクエリを実行します。
SELECT * FROM test_table_vpclogs WHERE srcaddr = '10.117.1.22' AND day >= '2021/02/01' AND day < '2021/02/28';
指定した時間範囲で拒否された TCP 接続を一覧表示するには、次のようなクエリを実行します。
SELECT day, interface_id, srcaddr, action, protocol FROM test_table_vpclogs WHERE action = 'REJECT' AND protocol = 6 AND day >= '2021/02/01' AND day < '2021/02/28' LIMIT 10;
「10.117」で始まる IP アドレス範囲のフローログを表示するには、次のようなクエリを実行します。
SELECT * FROM test_table_vpclogs WHERE split_part(srcaddr,'.', 1)='10' AND split_part(srcaddr,'.', 2) ='117'
時間範囲内の特定の宛先 IP アドレスのフローログを表示するには、次のようなクエリを実行します。
SELECT * FROM test_table_vpclogs WHERE dstaddr = '10.0.1.14' AND day >= '2021/01/01' AND day < '2021/01/31'
関連情報

関連するコンテンツ
- 質問済み 7年前lg...
- 質問済み 8年前lg...
- AWS公式更新しました 1年前
- AWS公式更新しました 6ヶ月前