VPC フローログ - Amazon Virtual Private Cloud

VPC フローログ

VPC フローログは、VPC のネットワークインターフェイスとの間で行き来する IP トラフィックに関する情報をキャプチャできるようにする機能です。フローログデータは Amazon CloudWatch Logs または Amazon S3 に発行できます。フローログを作成すると、選択した送信先でそのデータを取得して表示できます。

フローログは、以下のような多くのタスクに役立ちます。

  • 制限の過度に厳しいセキュリティグループルールを診断する

  • インスタンスに到達するトラフィックをモニタリングする

  • ネットワークインターフェイスに出入りするトラフィックの方向を決定する

フローログデータはネットワークトラフィックのパスの外で収集されるため、ネットワークのスループットやレイテンシーには影響しません。ネットワークパフォーマンスに影響を与えるリスクなしに、フローログを作成または削除できます。

フローログの基礎

VPC、サブネット、またはネットワークインターフェイスのフローログを作成できます。サブネットまたは VPC のフローログを作成する場合、そのサブネットまたは VPC 内の各ネットワークインターフェイスがモニタリングされます。

モニタリングされるネットワークインターフェイスのフローログデータは、フローログレコードとして記録されます。これは、トラフィックフローについて説明するフィールドで構成されるログイベントです。詳細については、「フローログレコード」を参照してください。

フローログを作成するには、以下の内容を指定します。

  • フローログを作成するリソース

  • キャプチャするトラフィックの種類 (許可されたトラフィック、拒否されたトラフィック、またはすべてのトラフィック)

  • フローログデータを発行する送信先

次の例では、インスタンス A1 のネットワークインターフェイスで受け入れられたトラフィックをキャプチャし、フローログレコードを Amazon S3 バケットに発行するフローログ (fl-aaa) を作成します。サブネット B のすべてのトラフィックをキャプチャし、フローログレコードを Amazon CloudWatch Logs に発行する 2 番目のフローログを作成します。フローログ (fl-bbb) は、サブネット B のすべてのネットワークインターフェイスのトラフィックをキャプチャします。インスタンス A2 のネットワークインターフェイスのトラフィックをキャプチャするフローログはありません。


                サブネットとインスタンスのフローログ

フローログを作成した後で、データの収集と選択された送信先への発行が開始されるまでに数分かかる場合があります。フローログで、ネットワークインターフェイスのリアルタイムのログストリームはキャプチャされません。詳細については、「フローログの作成」を参照してください。

サブネットまたは VPC のフローログを作成した後で、サブネットにさらに多くのインスタンスを起動する場合、新しいネットワークインターフェイスごとに新しいログストリーム (CloudWatch Logs の場合) またはログファイルオブジェクト (Amazon S3 の場合) が作成されます。これは、そのネットワークインターフェイス用にネットワークトラフィックが記録されるとすぐに行われます。

他の AWS サービスによって作成されたネットワークインターフェイスのフローログを作成できます。たとえば、次のとおりです。

  • Elastic Load Balancing

  • Amazon RDS

  • Amazon ElastiCache

  • Amazon Redshift

  • Amazon WorkSpaces

  • NAT ゲートウェイ

  • トランジットゲートウェイ

ネットワークインターフェイスの種類にかかわらず、Amazon EC2 コンソールまたは Amazon EC2 API を使用してネットワークインターフェイスのフローログを作成する必要があります。

フローログにタグを適用できます。タグはそれぞれ、1 つのキーとオプションの 1 つの値で構成されており、どちらもお客様側が定義します。タグは、目的や所有者などによって、フローログを整理するのに役立ちます。

フローログが不要になった場合には、それを削除することができます。フローログを削除すると、リソースのフローログサービスは無効になり、新しいフローログレコードは作成されず、CloudWatch Logs または Amazon S3 にも発行されません。フローログを削除しても、ネットワークインターフェイスの既存のフローログレコードやログストリーム (CloudWatch Logs の場合) またはログファイルオブジェクト (Amazon S3 の場合) は削除されません。既存のログストリームを削除するには、CloudWatch Logs コンソールを使用します。既存のログファイルオブジェクトを削除するには、Amazon S3 コンソールを使用します。フローログを削除した後で、データの収集が中止するまでに数分かかる場合があります。詳細については、「フローログの削除」を参照してください。

フローログレコード

フローログレコードは、VPC のネットワークの流れを表します。デフォルトでは、各レコードは、集約間隔 (キャプチャウィンドウとも呼ばれる) 内で発生するネットワークインターネットプロトコル (IP) トラフィックフロー (ネットワークインターフェイスごとに 5 タプルによって特徴付けられる) をキャプチャします。

デフォルトでは、送信元、送信先、プロトコルなど、レコードには IP フローのさまざまなコンポーネントの値が含まれています。

フローログを作成するときは、フローログレコードのデフォルトの形式を使用するか、カスタム形式を指定できます。

集約間隔

集約間隔は、特定のフローがキャプチャされ、フローログレコードに集約される期間です。デフォルトでは、最大の集約間隔が 10 分に設定されています。フローログを作成する場合、オプションで最大集約間隔を 1 分に指定できます。最大集約間隔が 1 分のフローログでは、最大集約間隔が 10 分のフローログよりも多くのフローログレコードが生成されます。

ネットワークインターフェイスが Nitto ベースのインスタンスにアタッチされている場合、指定した最大集約間隔に関係なく、集約間隔は常に 1 分以下になります。

集約間隔内にデータが取得された後、データの処理および CloudWatch Logs または Amazon S3 へのパブリッシュにさらに時間がかかります。この追加時間は、CloudWatch Logs にパブリッシュするまでに約 5 分、Amazon S3 にパブリッシュするまでに約 10 分となる場合があります。フローログサービスは、この追加時間内にベストエフォート方式で配信を行います。場合によっては、前に説明した追加時間から 5~10 分以上ログが遅れることがあります。

デフォルトの形式

デフォルトでは、フローログレコードのログの行形式は、次のフィールドセットが次の順序で含まれているスペース区切り文字列です。

<version> <account-id> <interface-id> <srcaddr> <dstaddr> <srcport> <dstport> <protocol> <packets> <bytes> <start> <end> <action> <log-status>

フィールドの詳細については、「使用可能なフィールド」を参照してください。デフォルトの形式では、フローログレコードの使用可能なすべてのフィールドのサブセットのみキャプチャされます。使用可能なすべてのフィールドまたはフィールドの異なるサブセットをキャプチャするには、カスタム形式を指定します。デフォルトの形式をカスタマイズまたは変更することはできません。

カスタム形式

オプションで、フローログレコードのカスタム形式を指定することもできます。カスタム形式では、フローログで返すフィールドと、フィールドが表示される順序を指定します。これにより、ニーズに合ったフローログを作成し、関連のないフィールドを省略できます。カスタム形式を使用すると、発行されたフローログから特定の情報を抽出する別個のプロセスも必要なくなります。使用可能なフローログフィールドは任意の数指定できますが、少なくとも 1 つ指定する必要があります。

使用可能なフィールド

次に表に、フローログレコードの使用可能なすべてのフィールドを示します。[Version (バージョン)] 列には、フィールドが導入された VPC フローログのバージョンが表示されます。

フィールド 説明 バージョン

version

VPC フローログバージョン。デフォルトの形式を使用する場合、バージョンは 2 です。カスタム形式を使用する場合、そのバージョンは指定されたフィールドの中で最も高いバージョンです。たとえば、バージョン 2 のフィールドのみを指定した場合、バージョンは 2 です。バージョン 2、3、4 のフィールドを混在させて指定すると、バージョンは 4 になります。

2

account-id

トラフィックが記録されるソースネットワークインターフェイスの所有者の AWS アカウント ID。ネットワークインターフェイスが AWS のサービスによって作成された場合 (VPC エンドポイントまたは Network Load Balancer の作成時など)、このフィールドに対してレコードに unknown と表示されることがあります。

2

interface-id

トラフィックが記録されるネットワークインターフェイスの ID。

2

srcaddr

受信トラフィックの送信元アドレスか、ネットワークインターフェイスにおける送信トラフィックのネットワークインターフェイスの IPv4 または IPv6 アドレス。ネットワークインターフェイスの IPv4 アドレスは常にそのプライベート IPv4 アドレスです。「pkt-srcaddr」も参照してください。

2

dstaddr

送信トラフィックの送信先アドレスか、ネットワークインターフェイスにおける受信トラフィックのネットワークインターフェイスの IPv4 または IPv6 アドレス。ネットワークインターフェイスの IPv4 アドレスは常にそのプライベート IPv4 アドレスです。「pkt-dstaddr」も参照してください。

2

srcport

トラフィックの送信元ポート。

2

dstport

トラフィックの送信先ポート。

2

protocol

トラフィックの IANA プロトコル番号。詳細については、「割り当てられたインターネットプロトコル番号」を参照してください。

2

packets

フロー中に転送されたパケットの数。

2

bytes

フロー中に転送されたバイト数。

2

start

集約間隔内にフローの最初のパケットが受信された時間 (UNIX 秒)。これは、パケットがネットワークインターフェイス上で送信または受信されてから最大 60 秒になる場合があります。

2

end

集約間隔内にフローの最後のパケットが受信された時間 (UNIX 秒)。これは、パケットがネットワークインターフェイス上で送信または受信されてから最大 60 秒になる場合があります。

2

action

トラフィックに関連付けられたアクション:

  • ACCEPT: 記録されたトラフィックは、セキュリティグループおよびネットワーク ACL で許可されています。

  • REJECT: 記録されたトラフィックは、セキュリティグループまたはネットワーク ACL で許可されていません。

2

log-status

フローログのロギングステータス。

  • OK: データは選択された送信先に正常に記録されます。

  • NODATA: 集約間隔内にネットワークインターフェイスとの間で行き来するネットワークトラフィックはありませんでした。

  • SKIPDATA: 集約間隔内に一部のフローログレコードがスキップされました。これは、内部的なキャパシティー制限、または内部エラーが原因である可能性があります。

2

vpc-id

トラフィックが記録されるネットワークインターフェイスが含まれる VPC の ID。

3

subnet-id

トラフィックが記録されるネットワークインターフェイスが含まれるサブネットの ID。

3

instance-id

インスタンスをお客様が所有している場合、トラフィックが記録されるネットワークインターフェイスに関連するインスタンスの ID。リクエスタが管理するネットワークインターフェイス (NAT ゲートウェイのネットワークインターフェイスなど) の場合、「-」記号を返します。

3

tcp-flags

次の TCP フラグのビットマスク値:

  • SYN: 2

  • SYN-ACK: 18

  • FIN: 1

  • RST: 4

ACK は、SYN に付随する場合のみ報告されます。

TCP フラグは、集約間隔内に OR 処理することができます。短い接続の場合、フラグがフローログレコードの同じ行に設定されることがあります (たとえば、SYN-ACK と FIN の場合は 19、SYN と FIN の場合は 3 など)。例については、「TCP フラグシーケンス」を参照してください。

3

type

トラフィックの種類: IPv4IPv6、または EFA。Elastic Fabric Adapter (EFA) の詳細については、「Elastic Fabric Adapter」を参照してください。

3

pkt-srcaddr

トラフィックのパケットレベルの (元の) 送信元 IP アドレス。srcaddr フィールドとともにこのフィールドを使用し、トラフィックが通過する中間レイヤーの IP アドレスとトラフィックの元の送信元 IP アドレスを区別します。たとえば、トラフィックが NAT ゲートウェイのネットワークインターフェイスを通過する場合や、Amazon EKS 内のポッドの IP アドレスが、ポッドが実行されているインスタンスノードのネットワークインターフェイスの IP アドレスとは異なる場合などです (VPC 内の通信の場合)。

3

pkt-dstaddr

トラフィックのパケットレベルの (元の) 送信先 IP アドレス。dstaddr フィールドとともにこのフィールドを使用し、トラフィックが通過する中間レイヤーの IP アドレスとトラフィックの最終的な送信元 IP アドレスを区別します。たとえば、トラフィックが NAT ゲートウェイのネットワークインターフェイスを通過する場合や、Amazon EKS 内のポッドの IP アドレスが、ポッドが実行されているインスタンスノードのネットワークインターフェイスの IP アドレスとは異なる場合などです (VPC 内の通信の場合)。

3

region

トラフィックが記録されるネットワークインターフェイスが含まれるリージョン。

4

az-id

トラフィックが記録されるネットワークインターフェイスが含まれるアベイラビリティーゾーンの ID。トラフィックがサブロケーションからの場合、レコードにはこのフィールドに「-」記号が表示されます。

4

sublocation-type

sublocation-id フィールドに返されるサブロケーションのタイプ。

トラフィックがサブロケーションからではない場合、レコードにはこのフィールドに「-」記号が表示されます。

4

sublocation-id

トラフィックが記録されるネットワークインターフェイスが含まれるサブロケーションの ID。トラフィックがサブロケーションからではない場合、レコードにはこのフィールドに「-」記号が表示されます。

4

注記

フィールドが特定のレコードに該当しない場合、レコードでそのエントリには「-」記号が表示されます。

フローログの制限事項

フローログを使用するには、次の制限事項に注意する必要があります。

  • EC2-Classic プラットフォームにあるネットワークインターフェイスのフローログを有効にすることはできません。これには、ClassicLink を使用して VPC にリンクされた EC2-Classic インスタンスが含まれます。

  • ピア VPC がアカウントにない限り、VPC とピアリング接続された VPC のフローログを有効にすることはできません。

  • フローログを作成すると、その設定やフローログレコードの形式を変更することはできません。たとえば、異なる IAM ロールをフローログに関連付けたり、フローログレコードのフィールドを追加または削除したりすることはできません。代わりにフローログを削除し、必要な設定で新しいログを作成できます。

  • ネットワークインターフェイスに複数の IPv4 アドレスがある場合、トラフィックがセカンダリプライベート IPv4 アドレスに送信されても、フローログの dstaddr フィールドにはプライマリプライベート IPv4 アドレスが表示されます。元の送信先 IP アドレスをキャプチャするには、pkt-dstaddr フィールドを含むフローログを作成します。

  • トラフィックがネットワークインターフェイスに送信され、送信先がネットワークインターフェイスの IP アドレスのいずれでもない場合、フローログの dstaddr フィールドにはプライマリプライベート IPv4 アドレスが表示されます。元の送信先 IP アドレスをキャプチャするには、pkt-dstaddr フィールドを含むフローログを作成します。

  • トラフィックがネットワークインターフェイスから送信され、送信元がネットワークインターフェイスの IP アドレスのいずれでもない場合、フローログの srcaddr フィールドにはプライマリプライベート IPv4 アドレスが表示されます。元の送信元 IP アドレスをキャプチャするには、pkt-srcaddr フィールドを含むフローログを作成します。

  • ネットワークインターフェイスとの間でトラフィックが送受信される場合、パケットの送信元または送信先にかかわらず、フローログの srcaddr フィールドと dstaddr フィールドには常にプライマリのプライベート IPv4 アドレスが表示されます。パケットの送信元または送信先をキャプチャするには、pkt-srcaddr フィールドと pkt-dstaddr フィールドを含むフローログを作成します。

  • ネットワークインターフェイスが Nitto ベースのインスタンスにアタッチされている場合、指定した最大集約間隔に関係なく、集約間隔は常に 1 分以下になります。

フローログですべての IP トラフィックはキャプチャされません。以下のトラフィックの種類は記録されません。

  • Amazon DNS サーバーに接続したときにインスタンスによって生成されるトラフィック。独自の DNS サーバーを使用する場合は、その DNS サーバーへのすべてのトラフィックが記録されます。

  • Amazon Windows ライセンスのアクティベーション用に Windows インスタンスによって生成されたトラフィック。

  • インスタンスメタデータ用に 169.254.169.254 との間を行き来するトラフィック。

  • Amazon Time Sync Service の 169.254.169.123 との間でやり取りされるトラフィック。

  • DHCP トラフィック。

  • デフォルト VPC ルーターの予約済み IP アドレスへのトラフィック。詳細については、「VPC とサブネットのサイズ設定」を参照してください。

  • エンドポイントのネットワークインターフェイスと Network Load Balancer のネットワークインターフェイスの間のトラフィック。詳細については、「VPC エンドポイントサービス (AWS PrivateLink)」を参照してください。

フローログの料金

フローログを CloudWatch Logs または Amazon S3 に発行すると、提供されたログに対するデータの取り込み料金とアーカイブ料金が適用されます。詳細と例については、「Amazon CloudWatch の料金」を参照してください。

Amazon S3 バケットへのフローログの発行に伴う料金を追跡するには、コスト配分タグをフローログサブスクリプションに適用できます。CloudWatch Logs へのフローログの発行に伴う料金を追跡するには、コスト配分タグを送信先の CloudWatch Logs ロググループに適用できます。これにより、AWS コスト配分レポートに、これらのタグで集計された使用量とコストが表示されます。ビジネスカテゴリ (コストセンター、アプリケーション名、所有者など) 別のタグを適用すると、コストを分類できます。詳細については、AWS Billing and Cost Management ユーザーガイドの「コスト配分タグの使用」を参照してください。