📝

VPC フローログってなんだろ?

2021/05/02に公開

VPCフローログについて調べてみました。

VPC フローログ - Amazon Virtual Private Cloud

概要

  • VPC のネットワークインターフェイスとの間で行き来する IP トラフィックに関する情報をキャプチャできるようにする機能
  • フローログデータはCloudWatch LogsまたはS3に発行
  • 制限の過度に厳しいセキュリティグループルールを診断
  • インスタンスに到達するトラフィックをモニタリング
  • ネットワークインターフェイスに出入りするトラフィックの方向を決定
  • フローログデータはネットワークトラフィックのパスの外で収集されるため、ネットワークのスループットやレイテンシーには影響しない

基礎

  • VPC、サブネット、またはネットワークインターフェイスのフローログを作成できる

  • サブネットまたは VPCの場合そのネットワークインターフェイスをモニタリング

  • モニタリングされるデータはフローログレコードとして記録

  • フローログ作成時の指定内容

    • フローログを作成するリソース
    • キャプチャするトラフィックの種類
      • 許可されたトラフィック
      • 拒否されたトラフィック
      • すべてのトラフィック
    • フローログデータを発行する送信先
    • インスタンスAとサブネットBのフローログ作成
  • フローログの発行には数分かかる

    • リアルタイムのログストリームはキャプチャされない

フローログレコード

  • VPC のネットワークの流れを表す
  • デフォルトでは、各レコードは、集約間隔 (キャプチャウィンドウ) 内で発生するIPトラフィックフローをキャプチャ
  • 各レコードは、スペースで区切られたフィールドから成る文字列
    • 送信元
    • 送信先
    • プロトコルなど
  • 集約間隔
    • 特定のフローがキャプチャされ、フローログレコードに集約される期間
    • デフォルトでは、最大の集約間隔が 10 分
    • 最大集約間隔は1 分
    • CloudWatch Logs にパブリッシュするまでに約 5 分
    • S3 にパブリッシュするまでに約 10 分
  • デフォルトの形式
    • カスタマイズまたは変更不可
  • カスタム形式
    • フローログレコードに含めるフィールドと順序を指定
    • ニーズに合ったフローログを作成し、関連のないフィールドを省略
    • 発行されたフローログから特定の情報を抽出する別なプロセスが不要になる
    • 任意の数指定できるが、少なくとも 1 つ指定する必要がある
  • 使用可能なフィールド

フローログの制限事項

  • EC2-Classicのネットワークインターフェイスのフローログは有効化できない
  • ピア VPC がアカウントにない限り、VPC とピアリング接続された VPC のフローログは有効化できない
  • 作成したフローログの設定変更は不可
  • 変更する場合は削除してから再度作成する
  • 以下の場合はプライマリIPv4アドレスが表示される
    • ネットワークインターフェイスに複数の IPv4 アドレスがある場合
    • トラフィックがネットワークインターフェイスに送信され、送信先がネットワークインターフェイスの IP アドレスのいずれでもない場合
    • トラフィックがネットワークインターフェイスから送信され、送信元がネットワークインターフェイスの IP アドレスのいずれでもない場合
    • ネットワークインターフェイスとの間でトラフィックが送受信される場合
  • ネットワークインターフェイスが Nitro ベースのインスタンスにアタッチされている場合、指定した最大集約間隔に関係なく、集約間隔は常に 1 分以下
  • すべての IP トラフィックがキャプチャされるわけではない

フローログの料金

  • CloudWatch LogsまたはS3の料金

ポイント

  • ネットワークインターフェイスとの間で行き来するIPトラフィック情報をキャプチャ
  • フローログデータはCloudWatch LogsやS3に発行
  • ネットワークのスループットやレイテンシーには影響しない
  • 取得から発行までは数分程度のタイムラグがあるためリアルタイムではない
  • フローログレコードで取得間隔や取得情報を設定
  • 作成後の設定変更は不可
  • 再設定する場合は削除してから再作成する
  • すべてのIPトラフィックがキャプチャされるわけではない

承認されたトラフィックと拒否されたトラフィック

2 123456789010 eni-1235b8ca123456789 172.31.16.139 172.31.16.21 20641 22 6 20 4249 1418530010 1418530070 ACCEPT OK
2 123456789010 eni-1235b8ca123456789 172.31.9.69 172.31.9.12 49761 3389 6 20 4249 1418530010 1418530070 REJECT OK

データなしおよびスキップされたレコード

2 123456789010 eni-1235b8ca123456789 - - - - - - - 1431280876 1431280934 - NODATA
2 123456789010 eni-11111111aaaaaaaaa - - - - - - - 1431280876 1431280934 - SKIPDATA

触ってみた

VPCのフローログを作成画面

ロググループ作成

IAMロール作成

フローログ作成

対象VPC上にLinux2のEC2インスタンスを起動しApacheをインストールしてアクセス

数分後にロググループにログが発行されます

まとめ

今回はVPCフローログについて調べてみました。
以下がポイントでした。

  • ネットワークインターフェイスとの間で行き来するIPトラフィック情報をキャプチャ
  • フローログデータはCloudWatch LogsやS3に発行
  • ネットワークのスループットやレイテンシーには影響しない
  • 取得から発行までは数分程度のタイムラグがあるためリアルタイムではない
  • フローログレコードで取得間隔や取得情報を設定
  • 作成後の設定変更は不可
  • 再設定する場合は削除してから再作成する
  • すべてのIPトラフィックがキャプチャされるわけではない

また、設定もやってみましたが簡単にできました。
ログを大量にため込まないよう、定期的に削除するなどすれば安価に利用できそうです。

参考になれば幸いです。

Discussion