メニュー
Amazon Virtual Private Cloud
ユーザーガイド

VPC フローログ

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

フローログは、多くのタスクで役に立ちます。たとえば、特定のトラフィックがインスタンスに到達していない場合のトラブルシューティングで役に立ちます。これにより、制限が過度に厳しいセキュリティグループルールを診断できます。また、セキュリティツールとしてフローツールを使用し、インスタンスに達しているトラフィックをモニタリングすることができます。

フローログの使用には追加料金はかかりませんが、標準の CloudWatch Logs 料金が適用されます。詳細については、Amazon CloudWatch 料金表をご覧ください。

フローログの基礎

VPC、サブネット、またはネットワークインターフェイスのフローログを作成できます。サブネットまたは VPC のフローログを作成する場合、VPC またはサブネットの各ネットワークインターフェイスがモニタリングされます。現在のログデータは CloudWatch Logs のロググループに発行され、各ネットワークインターフェイスには一意のログストリームがあります。ログストリームにはフローログレコードが含まれます。これは、そのネットワークインターフェイスのトラフィックについて説明するフィールドで構成されるログイベントです。詳細については、「フローログレコード」を参照してください。

フローログを作成するには、フローログを作成するリソース、キャプチャするトラフィックの種類 (許可されたトラフィック、拒否されたトラフィック、またはすべてのトラフィック)、フローログの発行先となる CloudWatch Logs のロググループの名前、CloudWatch Logs ロググループにフローログを発行するための十分なアクセス権限を持つ IAM ロールの ARN を指定します。存在しないロググループ名を指定した場合、ロググループの自動的な作成が試みられます。フローログを作成した後で、データの収集と CloudWatch Logs への発行が開始するまでに数分かかる場合があります。フローログで、ネットワークインターフェイスのリアルタイムのログストリームはキャプチャされません。

CloudWatch Logs の同じロググループにデータを公開する複数のフローログを作成できます。同じネットワークインターフェイスが同じロググループの 1 つ以上のフローログに存在する場合、1 つの組み合わされたログストリームがあります。1 つのフローログで、拒否されたトラフィックをキャプチャし、別のフローログで、許可されたトラフィックをキャプチャするよう指定した場合、組み合わされたログストリームですべてのトラフィックがキャプチャされます。

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

他の AWS サービスによって作成されたネットワークインターフェイス (たとえば、Elastic Load Balancing、Amazon RDS、Amazon ElastiCache、Amazon Redshift、Amazon WorkSpaces) のフローログを作成できます。ただし、これらのサービスコンソールや API を使用してフローログを作成することはできません。Amazon EC2 コンソールまたは Amazon EC2 API を使用する必要があります。同様に、CloudWatch Logs コンソールまたは API を使用して、ネットワークインターフェイスのログストリームを作成することはできません。

フローログが不要になった場合には、それを削除することができます。フローログを削除すると、リソースのフローログサービスは無効になり、新しいフローログレコードまたはログストリームは作成されません。ネットワークインターフェイスの既存のフローログレコードやログストリームは削除されません。既存のログストリームを削除するには、CloudWatch Logs コンソールを使用できます。フローログを削除した後で、データの収集が中止するまでに数分かかる場合があります。

フローログの制限事項

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

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

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

  • フローログにタグを付けることはできません。

  • フローログを作成した後で、その設定を変更することはできません。たとえば、フローログに別の IAM ロールを関連付けることはできません。代わりにフローログを削除し、必要な設定で新しいログを作成できます。

  • フローログの API アクション (ec2:*FlowLogs) は、いずれもリソースレベルのアクセス権限をサポートしていません。フローログの API アクションの使用を管理するために IAM ポリシーを作成する場合は、ステートメントでリソース要素に対して * ワイルドカードを使用して、アクションにすべてのリソースを使用するユーザーアクセス権限を与える必要があります。詳細については、「Amazon VPC のリソースに対するアクセスの制御」を参照してください。

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

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

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

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

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

  • DHCP トラフィック。

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

フローログレコード

フローログレコードは、フローログのネットワークの流れを表します。各レコードでは、特定のキャプチャウィンドウで特定の 5 タプルのネットワークフローがキャプチャされます。5 タプルとは、インターネットプロトコル (IP) のフローの送信元、送信先、およびプロトコルを指定する 5 セットの異なる値のことです。キャプチャウィンドウは、フローログレコードを発行する前にフローログサービスがデータを集計する期間です。キャプチャウィンドウは約 10 分ですが、最長 15 分かかる場合があります。フローログレコードはスペース区切りの文字列で、以下の形式です。

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

フィールド 説明
バージョン VPC フローログバージョン。
account-id フローログの AWS アカウント ID。
interface-id ログストリームが適用されるネットワークインターフェイスの ID。
srcaddr 送信元の IPv4 または IPv6 アドレス。ネットワークインターフェイスの IPv4 アドレスは常にそのプライベート IPv4 アドレスです。
dstaddr 送信先の IPv4 または IPv6 アドレス。ネットワークインターフェイスの IPv4 アドレスは常にそのプライベート IPv4 アドレスです。
srcport トラフィックの送信元ポート。
dstport トラフィックの送信先ポート。
プロトコル トラフィックの IANA プロトコル番号。詳細については、「割り当てられたインターネットプロトコル番号」を参照してください。
packets キャプチャウィンドウ中に転送されたパケットの数。
バイト キャプチャウィンドウ中に転送されたバイト数。
start キャプチャウィンドウの開始時刻 (Unix 時間)。
end キャプチャウィンドウの終了時刻 (Unix 時間)。
action トラフィックに関連付けられたアクション:
  • ACCEPT: 記録されたトラフィックは、セキュリティグループまたはネットワーク ACL で許可されています。

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

log-status フローログのロギングステータス。
  • OK: データは正常に CloudWatch Logs に記録されています。

  • NODATA: キャプチャウィンドウ中にネットワークインターフェイスとの間で行き来するネットワークトラフィックはありませんでした。

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

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

フローログレコードの例については、「例: フローログレコード」を参照してください。

CloudWatch Logs で収集された他のログイベントのように、フローログレコードを操作できます。ログデータとメトリクスフィルタのモニタリングの詳細については、Amazon CloudWatch ユーザーガイド の「ログデータの検索とフィルタ」を参照してください。フローログのメトリクスフィルタとアラームを設定する例については、「例: フローログの CloudWatch メトリクスフィルタとアラームの作成」を参照してください。

フローログの IAM ロール

フローログに関連付けられた IAM ロールには、CloudWatch Logs の指定されたロググループにフローログを発行するために十分なアクセス権限が必要です。IAM ロールにアタッチされた IAM ポリシーには、少なくとも以下のアクセス権限が含まれている必要があります。

Copy
{ "Version": "2012-10-17", "Statement": [ { "Action": [ "logs:CreateLogGroup", "logs:CreateLogStream", "logs:PutLogEvents", "logs:DescribeLogGroups", "logs:DescribeLogStreams" ], "Effect": "Allow", "Resource": "*" } ] }

フローログサービスがロールを引き受けるよう許可するための信頼関係がロールにあることを確認する必要があります (信頼関係を表示するには、IAM コンソールでロールを選択し、[Edit Trust Relationship] を選択します)。

Copy
{ "Version": "2012-10-17", "Statement": [ { "Sid": "", "Effect": "Allow", "Principal": { "Service": "vpc-flow-logs.amazonaws.com" }, "Action": "sts:AssumeRole" } ] }

または、以下の手順に従って、フローログで使用する新しいロールを作成できます。

アカウントでの CloudWatch Logs ロググループの

フローログの IAM ロールを作成するには

  1. https://console.aws.amazon.com/iam/ にある IAM コンソールを開きます。

  2. ナビゲーションペインで [Roles]、[Create new role] の順に選択します。

  3. [Select role type] ページで、[Amazon EC2] の隣にある [Select] を選択します。

  4. [Attach Policy] ページで、[Next Step] を選択します。

  5. ロールの名前 (例: Flow-Logs-Role) を入力し、オプションで説明を入力します。[Create role] を選択します。

  6. ロールの名前を選択します。[Permissions] で、[Inline Policies] セクションを展開し、[click here] を選択します。

  7. [Custom Policy] を選択し、[Select] を選択します。

  8. 上記の「フローログの IAM ロール」セクションで最初のポリシーをコピーし、[Policy Document] ウィンドウに貼り付けます。ポリシーの名前を [Policy Name] フィールドに入力し、[Apply Policy] を選択します。

  9. 上記のセクション「フローログの IAM ロール」で、2 番目のポリシー (信頼関係) をコピーし、[Trust relationships]、[Edit trust relationship] の順に選択します。既存のポリシードキュメントを削除し、新しいポリシードキュメントを貼り付けます。終了したら、[Update Trust Policy] を選択します。

  10. [Summary] ページで、ロールの ARN を書き留めます。フローログを作成するときに、この ARN が必要になります。

フローログを使用する

Amazon EC2、Amazon VPC、および CloudWatch コンソールを使用して、フローログを操作できます。

フローログの作成

フローログは、Amazon VPC コンソールの VPC ページとサブネットページ、または Amazon EC2 コンソールの [Network Interfaces] ページから作成できます。

ネットワークインターフェイスのフローログを作成するには

  1. https://console.aws.amazon.com/ec2/) にある Amazon EC2 コンソールを開きます。

  2. ナビゲーションペインで、[Network Interfaces] を選択します。

  3. ネットワークインターフェイスを選択し、[Flow Logs] タブを選択してから、[Create Flow Log] を選択します。

  4. ダイアログボックスで、以下の情報を入力します。終了したら、[Create Flow Log] を選択します。

    • [Filter]: フローログで、拒否されたトラフィック、許可されたトラフィック、またはすべてのトラフィックをキャプチャするかどうかを選択します。

    • [Role]: ログを CloudWatch Logs に発行できるアクセス権限がある IAM ロールの名前を指定します。

    • [Destination Log Group]: フローログを発行する CloudWatch Logs のロググループの名前を入力します。既存のログのグループを使用するか、自動的に作成される新しいロググループの名前を入力できます。

VPC またはサブネットのフローログを作成するには

  1. https://console.aws.amazon.com/vpc/にある Amazon VPC コンソールを開きます。

  2. ナビゲーションペインで、[Your VPCs] または [Subnets] を選択します。

  3. VPC またはサブネットを選択し、[Flow Logs] タブを選択してから、[Create Flow Log] を選択します。

    注記

    複数の VPC のフローログを作成するには、VPC を選択し、[Actions] メニューの [Create Flow Log] を選択します。複数のサブネット用のフローログを作成するには、サブネットを選択し、[Subnet Actions] メニューの [Create Flow Log] を選択します。

  4. ダイアログボックスで、以下の情報を入力します。終了したら、[Create Flow Log] を選択します。

    • [Filter]: フローログで、拒否されたトラフィック、許可されたトラフィック、またはすべてのトラフィックをキャプチャするかどうかを選択します。

    • [Role]: ログを CloudWatch Logs に発行できるアクセス権限がある IAM ロールの名前を指定します。[

    • [Destination Log Group]: フローログを発行する CloudWatch Logs のロググループの名前を入力します。既存のログのグループを使用するか、自動的に作成される新しいロググループの名前を入力できます。

フローログの表示

Amazon EC2 および Amazon VPC コンソールでフローログに関する情報を表示するには、特定のリソースの [Flow Logs] タブを表示します。リソースを選択すると、そのリソースのすべてのフローログが表示されます。表示される情報には、フローログの ID、フローログの設定、およびフローログのステータスに関する情報が含まれます。

ネットワークインターフェイスのフローログに関する情報を表示するには

  1. https://console.aws.amazon.com/ec2/) にある Amazon EC2 コンソールを開きます。

  2. ナビゲーションペインで、[Network Interfaces] を選択します。

  3. ネットワークインターフェイスを選択し、[Flow Logs] タブを選択します。フローログに関する情報がタブに表示されます。

VPC またはサブネットのフローログに関する情報を表示するには

  1. https://console.aws.amazon.com/vpc/にある Amazon VPC コンソールを開きます。

  2. ナビゲーションペインで、[Your VPCs] または [Subnets] を選択します。

  3. VPC またはサブネットを選択し、[Flow Logs] タブを選択します。フローログに関する情報がタブに表示されます。

CloudWatch Logs コンソールを使用して、フローログレコードを表示できます。フローログを作成してからコンソールに表示されるまでに、数分かかる場合があります。

フローログのフローログレコードを表示するには

  1. https://console.aws.amazon.com/cloudwatch/にある CloudWatch コンソールを開きます。

  2. ナビゲーションペインで [Logs] を選択します。

  3. フローログを含むロググループの名前を選択します。

  4. 各ネットワークインターフェイス用のログストリームのリストが表示されます。フローログレコードを表示するネットワークインターフェイスの ID を含むログストリームの名前を選択します。フローログレコードの詳細については、「フローログレコード」を参照してください。

フローログの削除

Amazon EC2 と Amazon VPC コンソールを使用して、フローログを削除できます。

注記

これらの手順では、リソースのフローログサービスが無効になります。ネットワークインターフェイスのログストリームを削除するには、CloudWatch Logs コンソールを使用します。

ネットワークインターフェイスのフローログを削除するには

  1. https://console.aws.amazon.com/ec2/) にある Amazon EC2 コンソールを開きます。

  2. ナビゲーションペインで [Network Interfaces] を選択してから、ネットワークインターフェイスを選択します。

  3. [Flow Logs] タブを選択し、削除するフローログの削除ボタン (X) を選択します。

  4. 確認ダイアログボックスで、[Yes, Delete] を選択します。

VPC またはサブネットのフローログを削除するには

  1. https://console.aws.amazon.com/vpc/にある Amazon VPC コンソールを開きます。

  2. ナビゲーションペインで [Your VPCs] を選択し、[Subnets] を選択してから、リソースを選択します。

  3. [Flow Logs] タブを選択し、削除するフローログの削除ボタン (X) を選択します。

  4. 確認ダイアログボックスで、[Yes, Delete] を選択します。

トラブルシューティング

不完全なフローログレコード

フローログレコードが不完全であるか、発行されなくなった場合、フローログの CloudWatch Logs ロググループへの提供に問題がある可能性があります。Amazon EC2 コンソールまたは Amazon VPC コンソールで、関連するリソースの [Flow Logs] タブに移動します。詳細については、「フローログの表示」を参照してください。フローログの表で、エラーは [Status] 列に表示されます。または、describe-flow-logs コマンドを使用し、DeliverLogsErrorMessage フィールドに返された値を確認します。次のいずれかのエラーが表示される場合があります。

  • Rate limited: このエラーは、CloudWatch ログの調整が適用されている場合に発生することがあります。ネットワークインターフェイスのフローログのレコード数が、特定の期間内に発行できるレコードの最大数より多い場合などが該当します。このエラーは、作成できる CloudWatch Logs ロググループの数が制限に達した場合にも発生することがあります。詳細については、Amazon CloudWatch ユーザーガイドの「CloudWatch の制限」を参照してください。

  • Access error: フローログの IAM ロールに、CloudWatch ロググループにフローログレコードを発行するための十分なアクセス権限がありません。詳細については、「フローログの IAM ロール」を参照してください。

  • Unknown error: 内部エラーがフローログサービスで発生しました。

フローログが有効でも、フローログレコードまたはロググループがない

フローログを作成し、Amazon VPC または Amazon EC2 コンソールにフローログが Active と表示されます。ただし、CloudWatch Logs でログストリームは表示されず、CloudWatch Logs ロググループは作成されていません。原因は、次のいずれかである可能性があります。

  • フローログはまだ作成中です。場合によっては、対象のロググループのフローログを作成してから、データが表示されるまでに数十分かかることがあります。

  • ネットワークインターフェイスに対して記録されたトラフィックがまだありません。CloudWatch Logs のロググループは、トラフィックの記録時にのみ作成されます。

API と CLI の概要

このページで説明しているタスクは、コマンドラインまたは API を使用して実行できます。コマンドラインインターフェイスの詳細および利用できる API アクションの一覧については、「Amazon VPC へのアクセス」を参照してください。

フローログの作成

フローログの説明

フローログレコード (ログイベント) の表示

フローログの削除

例: フローログレコード

許可されたトラフィックと拒否されたトラフィックのフローログレコード

以下に、アカウント 123456789010 のネットワークインターフェイス eni-abc123de への SSH トラフィック (宛先ポート 22、TCP プロトコル) が許可されたフローログレコードの例を示します。

Copy
2 123456789010 eni-abc123de 172.31.16.139 172.31.16.21 20641 22 6 20 4249 1418530010 1418530070 ACCEPT OK

以下に、アカウント 123456789010 のネットワークインターフェイス eni-abc123de への RDP トラフィック (宛先ポート 3389、TCP プロトコル) が拒否されたフローログレコードの例を示します。

Copy
2 123456789010 eni-abc123de 172.31.9.69 172.31.9.12 49761 3389 6 20 4249 1418530010 1418530070 REJECT OK

データがない場合やレコードがスキップされた場合のフローログレコード

以下に、キャプチャウィンドウ中にデータが記録されなかったフローログレコードの例を示します。

Copy
2 123456789010 eni-1a2b3c4d - - - - - - - 1431280876 1431280934 - NODATA

以下に、キャプチャウィンドウ中にレコードがスキップされたフローログレコードの例を示します。

Copy
2 123456789010 eni-4b118871 - - - - - - - 1431280876 1431280934 - SKIPDATA

セキュリティグループとネットワーク ACL ルール

フローログを使用して過度に制限されているか制限のないセキュリティグループルールまたはネットワーク ACL ルールを診断している場合は、これらのリソースのステートフルさに注意してください。セキュリティグループはステートフルです。つまり、セキュリティグループのルールで許可されていない場合でも、許可されたトラフィックへの応答も許可されます。逆に、ネットワーク ACL はステートレスです。したがって、許可されたトラフィックへの応答は、ネットワーク ACL ルールに従って行われます。

たとえば、ホームコンピュータ (IP アドレスが 203.0.113.12) からインスタンス (ネットワークインターフェイスのプライベート IP アドレスが 172.31.16.139) へは、ping コマンドを使用します。セキュリティグループのインバウンドルールで ICMP トラフィックが許可され、アウトバウンドルールで ICMP トラフィックが許可されません。ただし、セキュリティグループがステートフルであるため、インスタンスからの ping 応答は許可されます。ネットワーク ACL でインバウンド ICMP トラフィックが許可されますが、アウトバウンド ICMP トラフィックは許可されません。ネットワーク ACL はステートレスであるため、ping 応答は削除され、ホームコンピュータに達しません。フローログで、これは 2 つのフローログレコードとして表示されます。

  • ネットワーク ACL とセキュリティグループの両方で許可され、したがってインスタンスへの到達を許可された発信元の ping の ACCEPT レコード。

  • ネットワーク ACL で拒否された応答 ping の REJECT レコード。

Copy
2 123456789010 eni-1235b8ca 203.0.113.12 172.31.16.139 0 0 1 4 336 1432917027 1432917142 ACCEPT OK
Copy
2 123456789010 eni-1235b8ca 172.31.16.139 203.0.113.12 0 0 1 4 336 1432917094 1432917142 REJECT OK

ネットワーク ACL でアウトバウンド ICMP トラフィックを許可している場合、フローログには 2 つの ACCEPT レコード (1 つは発信元の ping、もう 1 つは応答 ping) が表示されます。セキュリティグループがインバウンド ICMP トラフィックを拒否する場合、トラフィックに対してインスタンスへの到達が許可されなかったため、フローログには 1 つの REJECT レコードが表示されます。

IPv6 トラフィックのフローログレコード

IPv6 アドレス 2001:db8:1234:a100:8d6e:3477:df66:f105 から、アカウント 123456789010 のネットワークインターフェイス eni-f41c42bf への SSH トラフィック (宛先ポート 22) が許可されたフローログレコードの例を以下に示します。

Copy
2 123456789010 eni-f41c42bf 2001:db8:1234:a100:8d6e:3477:df66:f105 2001:db8:1234:a102:3304:8879:34cf:4071 34892 22 6 54 8855 1477913708 1477913820 ACCEPT OK

例: フローログの CloudWatch メトリクスフィルタとアラームの作成

この例では、eni-1a2b3c4d のフローログがあります。1 時間以内の期間に TCP ポート 22 (SSH) 経由でインスタンスに接続しようとする試みが 10 個以上拒否された場合に、アラームを作成するとします。最初に、アラームを作成するトラフィックのパターンと一致するメトリクスフィルタを作成する必要があります。次に、メトリクスフィルタのアラームを作成できます。

拒否された SSH トラフィックのメトリクスフィルタを作成し、フィルタのアラームを作成するには

  1. https://console.aws.amazon.com/cloudwatch/にある CloudWatch コンソールを開きます。

  2. ナビゲーションペインで、[Logs] を選択し、フローログのフローロググループを選択して、[Create Metric Filter] を選択します。

  3. [Filter Pattern] フィールドで、次のように入力します。

    Copy
    [version, account, eni, source, destination, srcport, destport="22", protocol="6", packets, bytes, windowstart, windowend, action="REJECT", flowlogstatus]
  4. [Select Log Data to Test] リストで、ネットワークインターフェイスのログストリームを選択します。オプションで、[Test Pattern] を選択して、フィルタパターンと一致するログデータの行を表示できます。準備ができたら、[Assign Metric] を選択します。

  5. メトリクスの名前空間、メトリクスの名前を指定し、メトリクスの値が 1 に設定されたことを確認します。終了したら、[Create Filter] を選択します。

  6. ナビゲーションペインで、[Alarms] を選択し、[Create Alarm] を選択します。

  7. [Custom Metrics] セクションで、作成したメトリクスフィルタの名前空間を選択します。

    注記

    新しいメトリクスがコンソールに表示されるまでに数分かかる場合があります。

  8. 作成したメトリクス名を選択し、[Next] を選択します。

  9. アラームの名前と説明を入力します。[is] フィールドで、[>=] を選択し、「10」と入力します。[for] フィールドで、連続した期間としてデフォルトの 1 をそのままにしておきます。

  10. [Period] リストから [1 Hour] を選択し、[Statistic] リストから [Sum] を選択します。Sum 統計では、指定された期間のデータポイントの総数をキャプチャしていることを確認できます。

  11. [Actions] セクションで、既存のリストに通知を送信するか、新しいリストを作成し、アラームがトリガーされたときに通知を受け取る E メールアドレスを入力できます。終了したら、[Create Alarm] を選択します。