AWS VPC のフローログを収集する

以下でサポートされています。

このドキュメントでは、Google Security Operations フォワーダーを使用して AWS VPC のフローログを収集する方法について説明します。

詳細については、Google SecOps へのデータの取り込みをご覧ください。

取り込みラベルによって、未加工のログデータを構造化 UDM 形式に正規化するパーサーが識別されます。このドキュメントの情報は、取り込みラベル AWS_VPC_FLOW が付加されたパーサーに適用されます。

サポートされている AWS VPC Flow Log の形式

Google SecOps は、次の 2 つの主要なテキスト形式で AWS VPC フローログの取り込みをサポートしています。

  • JSON 形式: AWS_VPC_FLOW ログタイプは、JSON 形式のログを解析します。この形式では、各ログエントリにキーとその対応する値の両方が含まれるため、データが自己記述型になります。

  • CSV 形式: Google SecOps は、CSV 形式の AWS VPC Flow Logs のパーサーも提供します。この形式では、ヘッダー行にフィールド キーが 1 回だけリストされ、後続の行にはカンマ区切りの値のみが含まれます。

CSV 形式で AWS VPC Flow Logs を取り込むには、転送ツールを構成するときにログタイプを AWS_VPC_FLOW_CSV として指定します。設定手順については、AWS VPC Flow Logs を取り込むように Google SecOps フォワーダーと syslog を構成するをご覧ください。

CSV 形式では各ログエントリにフィールドキーが含まれていないため、AWS_VPC_FLOW_CSV パーサーは値の厳密な事前定義順序に依存します。CSV ファイルは、正しく解析するために次のフィールド順序に準拠する必要があります。

   Version,Account_id,Interface_id,Srcaddr,Dstaddr,Srcport,Dstport,Protocol,Packets,Bytes,Start,End,Action,Log_status,Vpc_id,Subnet_id,Instance_id,Tcp_flags,Type,Pkt_srcaddr,Pkt_dstaddr,Region,Az_id,Sublocation_type,Sublocation_id,Pkt_src_aws_service,Pkt_dst_aws_service,Flow_direction,Traffic_path,Ecs_cluster_arn,Ecs_cluster_name,Ecs_container_instance_arn,Ecs_container_instance_id,Ecs_container_id,Ecs_second_container_id,Ecs_service_name,Ecs_task_definition_arn,Ecs_task_arn,Ecs_task_id

CSV ログ行の例を次に示します。

   7,369096419186,eni-0520bb5efed19d33a,10.119.32.34,10.119.223.3,51256,16020,6,14,3881,1723542839,1723542871,ACCEPT,OK,vpc-0769a6844ce873a6a,subnet-0cf9b2cb32f49f258,i-088d6080f45f5744f,0,IPv4,10.119.32.34,10.119.223.3,ap-northeast-1,apne1-az4,-,-,-,-,ingress,,-,-,-,-,-,-,-,-,-,-

値がないフィールドには、CSV 行内の正しい位置順序を維持するために、空の値(, , など)を渡す必要があります。

始める前に

AWS VPC Flow を構成する

ログを Amazon S3 に転送するか、Amazon CloudWatch に転送するかに応じて、AWS VPC フローを構成します。

ログを Amazon S3 に転送するようにフローログを構成する

Amazon S3 バケットを作成して構成したら、ネットワーク インターフェース、サブネット、VPC ネットワークのフローログを作成できます。

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

  1. Amazon EC2 コンソールにログインします。
  2. ナビゲーション パネルで [Network Interfaces] を選択します。
  3. 1 つ以上のネットワーク インターフェースを選択します。
  4. [Actions] > [Create flow log] を選択します。
  5. フローログの設定を構成します。詳細については、このドキュメントのフローログの設定を構成するをご覧ください。

サブネットのフローログを作成する

  1. Amazon VPC コンソールにログインします。
  2. ナビゲーション パネルで [Subnets] を選択します。
  3. 1 つ以上のサブネットを選択します。
  4. [Actions] > [Create flow log] を選択します。
  5. フローログの設定を構成します。詳細については、このドキュメントのフローログの設定を構成するをご覧ください。

VPC のフローログを作成する

  1. Amazon VPC コンソールにログインします。
  2. ナビゲーション パネルで [VPC] を選択します。
  3. 1 つ以上の VPC を選択します。
  4. [Actions] > [Create flow log] を選択します。
  5. フローログの設定を構成します。詳細については、このドキュメントのフローログの設定を構成するをご覧ください。

フローログの設定を構成する

  1. [Filter] セクションで、ロギングする IP トラフィックを指定します。

    • Accept: 承認されたトラフィックのみをログに記録します。

    • Reject: 拒否されたトラフィックのみをログに記録します。

    • All: 承認されたトラフィックと拒否されたトラフィックをログに記録します。

  2. [Maximum aggregation interval] セクションで、[1 minute] を選択します。

  3. [Destination] セクションで、[Send to an Amazon S3 bucket] を選択します。

  4. [S3 bucket ARN] セクションで、Amazon S3 バケットの ARN を指定します。

  5. [Log record format] セクションで、フローログレコードの形式を次のように指定します。

    1. デフォルトのフローログ レコード形式を使用するには、[AWS default format] を選択します。
    2. カスタム フォーマットを作成するには、[Custom format] を選択します。
  6. MSS の True IP 機能を使用するように、カスタム AWS ログ形式で VPC ログフローを構成します。

  7. [Log format] リストで、すべての属性を選択します。

  8. [Format preview] セクションで、カスタム形式を確認します。

  9. [Log file format] セクションで、[Text (default)] を選択します。

  10. [Hive-compatible S3 prefix] セクションで、[Enable] チェックボックスをオフのままにします。

  11. [Partition logs by time] セクションで、[Every 1 hour (60 mins)] を選択します。

  12. フローログにタグを追加するには、[Add new tag] を選択してタグキーと値を指定します。

  13. [フローログを作成] を選択します。詳細については、Amazon S3 にフローログを公開するをご覧ください。

Amazon CloudWatch にフローログを構成する

フローログは、VPC、サブネット、ネットワーク インターフェースから構成できます。

  1. [Filter] セクションで、ログに記録する IP トラフィックのタイプを指定します。

    • Accept: 承認されたトラフィックのみをログに記録します。

    • Reject: 拒否されたトラフィックのみをログに記録します。

    • All: 承認されたトラフィックと拒否されたトラフィックをログに記録します。

  2. [Maximum aggregation interval] セクションで、[1 minute] を選択します。

  3. [Destination] セクションで、[Send to CloudWatch Logs] を選択します。

  4. [Destination log group] セクションで、作成した宛先ロググループの名前を指定します。

  5. [IAM role] リストで、ロール名を選択します。選択したロール名には、CloudWatch Logs にログを公開する権限があります。

    IAM ロールには、次の権限が含まれている必要があります。

       {
         "Version": "2012-10-17",
         "Statement": [
           {
             "Effect": "Allow",
             "Action": [
               "logs:CreateLogGroup",
               "logs:CreateLogStream",
               "logs:PutLogEvents",
               "logs:DescribeLogGroups",
               "logs:DescribeLogStreams"
           ],
           "Resource": "*"
         }
        ]
       }
    
  6. [Log record format] セクションで、フローログ レコードの [Custom format] を選択します。

  7. フローログにタグを追加するには、[Add new tag] を選択してタグキーと値を指定します。

  8. [フローログを作成] を選択します。詳細については、Amazon S3 にフローログを公開するをご覧ください。

Amazon S3 は、イベント通知を Amazon SQS に送信するように構成できます。詳細については、通知用のバケットを構成する(SNS トピックまたは SQS キュー)をご覧ください。

ログ収集方法として Amazon SQS(Amazon SQS を使用する Amazon S3)を使用する場合は、Amazon S3 と Amazon SQS に IAM ユーザー ポリシーが必要です。詳細については、AWS KMS での IAM ポリシーの使用をご覧ください。

サービスとリージョンに基づいて、次の AWS ドキュメントを参照して接続のエンドポイントを特定します。

AWS VPC Flow Logs を取り込むように Google SecOps フォワーダーと syslog を構成する

  1. [SIEM 設定] > [フォワーダー] を選択します。
  2. [新しいフォワーダーの追加] をクリックします。
  3. [Forwarder name] に一意の名前を入力します。
  4. [Submit]、[Confirm] の順にクリックします。フォワーダーが追加され、[Add collector configuration] ウィンドウが表示されます。
  5. [コレクタ名] フィールドに名前を入力します。
  6. [Log type] フィールドで、ログ形式に応じて [AWS VPC Flow] または [AWS VPC Flow (CSV)] を選択します。
  7. [Collector type] フィールドで [Syslog] を選択します。
  8. 次の必須入力パラメータを構成します。
    • Protocol: コレクタが syslog データのリッスンに使用する接続プロトコルを指定します。
    • Address: コレクタが存在し、syslog データのアドレスが設定されているターゲット IP アドレスまたはホスト名を指定します。
    • Port: コレクタが存在し、syslog データをリッスンするターゲット ポートを指定します。
  9. [Submit]、[Confirm] の順にクリックします。

Google SecOps フォワーダーの詳細については、Google Security Operations フォワーダーのドキュメントをご覧ください。各フォワーダ タイプの要件については、タイプ別のフォワーダー構成をご覧ください。

フォワーダーの作成時に問題が発生した場合は、Google Security Operations サポートにお問い合わせください。

フィールド マッピング リファレンス

このパーサーは、JSON 形式または CSV 形式の未加工の AWS VPC Flow ログを構造化された UDM 形式に変換します。関連するフィールドを抽出し、UDM スキーマに一致するようにマッピングし、リソースタイプ、クラウド プロバイダ、ラベルなどの追加コンテキストでデータを拡充して、より詳細な分析をサポートします。マッピング ロジックは両方の形式で一貫しています。CSV パーサーは、事前定義されたフィールド順序に依存して、JSON 形式で使用される同じ UDM フィールドに値を合わせます。

AWS EC2 VPC パーサー向けの UDM マッピング テーブル

ログフィールド(昇順) UDM マッピング 論理
CidrBlock event.idm.entity.entity.resource.attribute.labels.cidr_block 未加工ログの「CidrBlock」フィールドから直接マッピングされます。
CidrBlock event.idm.entity.entity.network.ip_subnet_range 未加工ログの「CidrBlock」フィールドから直接マッピングされます。
CidrBlockAssociation.AssociationID event.idm.entity.entity.resource.attribute.labels.cidr_block_association_association_id 未加工ログの「CidrBlockAssociation」配列内の「AssociationID」フィールドから直接マッピングされます。
CidrBlockAssociation.CidrBlockState.State event.idm.entity.entity.resource.attribute.labels.cidr_block_association_cidr_block_state_state 未加工ログの「CidrBlockAssociation」配列の「CidrBlockState」オブジェクト内の「State」フィールドから直接マッピングされます。
CidrBlockAssociation.CidrBlockState.StatusMessage event.idm.entity.entity.resource.attribute.labels.cidr_block_association_cidr_block_state_status_message 未加工ログの「CidrBlockAssociation」配列の「CidrBlockState」オブジェクト内の「StatusMessage」フィールドから直接マッピングされます。
DhcpOptionsID event.idm.entity.entity.resource.attribute.labels.dhcp_options_id 未加工ログの「DhcpOptionsID」フィールドから直接マッピングされます。
ID event.idm.entity.entity.resource.product_object_id 未加工ログの「ID」フィールドから直接マッピングされます。このフィールドは、パーサーで「VpcID」に名前変更されます。
ID event.idm.entity.metadata.product_entity_id 未加工ログの「ID」フィールドから直接マッピングされます。このフィールドは、パーサーで「VpcID」に名前変更されます。
InstanceTenancy event.idm.entity.entity.resource.attribute.labels.instance_tenancy 未加工ログの「InstanceTenancy」フィールドから直接マッピングされます。
IsDefault event.idm.entity.entity.resource.attribute.labels.is_default 未加工ログの「IsDefault」フィールドから直接マッピングされます。
Ipv6CidrBlockAssociationSet.AssociationID event.idm.entity.entity.resource.attribute.labels.ipv6_cidr_block_association_set_association_id 未加工ログの「Ipv6CidrBlockAssociationSet」配列内の「AssociationID」フィールドから直接マッピングされます。
Ipv6CidrBlockAssociationSet.Ipv6CidrBlock event.idm.entity.entity.resource.attribute.labels.ipv6_cidr_block_association_set_ipv6_cidr_block 未加工ログの「Ipv6CidrBlockAssociationSet」配列内の「Ipv6CidrBlock」フィールドから直接マッピングされます。
Ipv6CidrBlockAssociationSet.Ipv6CidrBlockState.State event.idm.entity.entity.resource.attribute.labels.ipv6_cidr_block_association_set_ipv6_cidr_block_state_state 未加工ログの「Ipv6CidrBlockAssociationSet」配列の「Ipv6CidrBlockState」オブジェクト内の「State」フィールドから直接マッピングされます。
Ipv6CidrBlockAssociationSet.Ipv6CidrBlockState.StatusMessage event.idm.entity.entity.resource.attribute.labels.ipv6_cidr_block_association_set_ipv6_cidr_block_state_status_message 未加工ログの「Ipv6CidrBlockAssociationSet」配列の「Ipv6CidrBlockState」オブジェクト内の「StatusMessage」フィールドから直接マッピングされます。
Ipv6CidrBlockAssociationSet.Ipv6Pool event.idm.entity.entity.resource.attribute.labels.ipv6_cidr_block_association_set_ipv6_pool 未加工ログの「Ipv6CidrBlockAssociationSet」配列内の「Ipv6Pool」フィールドから直接マッピングされます。
Ipv6CidrBlockAssociationSet.NetworkBorderGroup event.idm.entity.entity.resource.attribute.labels.ipv6_cidr_block_association_set_network_border_group 未加工ログの「Ipv6CidrBlockAssociationSet」配列内の「NetworkBorderGroup」フィールドから直接マッピングされます。
OwnerID event.idm.entity.entity.resource.attribute.labels.owner_id 未加工ログの「OwnerID」フィールドから直接マッピングされます。
State event.idm.entity.entity.resource.attribute.labels.state 未加工ログの「State」フィールドから直接マッピングされます。
TagSet.Key event.idm.entity.entity.resource.attribute.labels.key 未加工ログの「TagSet」配列内の「Key」フィールドから直接マッピングされます。これにより、TagSet 内の各タグに新しいラベルが作成されます。
TagSet.Value event.idm.entity.entity.resource.attribute.labels.value 未加工ログの「TagSet」配列内の「Value」フィールドから直接マッピングされます。これにより、「キー」フィールドから作成された対応する各ラベルの値が入力されます。
N/A event.idm.entity.entity.resource.attribute.cloud.environment パーサーコードで「AMAZON_WEB_SERVICES」にハードコードされます。
N/A event.idm.entity.entity.resource.resource_type パーサーコードで「VPC_NETWORK」にハードコードされます。
N/A event.idm.entity.metadata.collected_timestamp イベントのタイムスタンプが入力されます。このタイムスタンプは、未加工ログの「collection_time」フィールドから取得されます。
N/A event.idm.entity.metadata.entity_type パーサーコードで「RESOURCE」にハードコードされます。
N/A event.idm.entity.metadata.product_name パーサーコードで「Amazon VPC」にハードコードされます。
N/A event.idm.entity.metadata.vendor_name パーサーコードで「AWS」にハードコードされます。
N/A events.timestamp イベントのタイムスタンプが入力されます。このタイムスタンプは、未加工ログの「collection_time」フィールドから取得されます。

さらにサポートが必要な場合 コミュニティ メンバーや Google SecOps のプロフェッショナルから回答を得ることができます。