AWS VPC のフローログを収集する
このドキュメントでは、Google Security Operations フォワーダーを使用して AWS VPC のフローログを収集する方法について説明します。
詳細については、Google Security Operations へのデータの取り込みの概要をご覧ください。
取り込みラベルによって、未加工のログデータを構造化 UDM 形式に正規化するパーサーが識別されます。このドキュメントの情報は、取り込みラベル AWS_VPC_FLOW
が付加されたパーサーに適用されます。
始める前に
Amazon S3 バケットが作成されていることを確認します。詳細については、最初の S3 バケットを作成するをご覧ください。
Amazon CloudWatch ロググループが作成されていることを確認します。詳細については、ロググループとログストリームの操作をご覧ください。
AWS VPC フローを構成する
ログを Amazon S3 に転送するか、Amazon CloudWatch に転送するかに応じて、AWS VPC フローを構成します。
Amazon S3 バケットへのログ転送の詳細については、このドキュメントのログを Amazon S3 に転送するようにフローログを構成するをご覧ください。
ログを Amazon CloudWatch に転送する方法については、このドキュメントの Amazon CloudWatch へのフローログの構成をご覧ください。
ログを Amazon S3 に転送するようにフローログを構成する
Amazon S3 バケットを作成して構成したら、ネットワーク インターフェース、サブネット、VPC ネットワークのフローログを作成できます。
ネットワーク インターフェースのフローログを作成する
- Amazon EC2 コンソールにログインします。
- ナビゲーション パネルで [Network Interfaces] を選択します。
- 1 つ以上のネットワーク インターフェースを選択します。
- [Actions] > [Create flow log] を選択します。
- フローログの設定を構成します。詳細については、このドキュメントのフローログの設定を構成するをご覧ください。
サブネットのフローログを作成する
- Amazon VPC コンソールにログインします。
- ナビゲーション パネルで [Subnets] を選択します。
- 1 つ以上のサブネットを選択します。
- [Actions] > [Create flow log] を選択します。
- フローログの設定を構成します。詳細については、このドキュメントのフローログの設定を構成するをご覧ください。
VPC のフローログを作成する
- Amazon VPC コンソールにログインします。
- ナビゲーション パネルで [VPC] を選択します。
- 1 つ以上の VPC を選択します。
- [Actions] > [Create flow log] を選択します。
- フローログの設定を構成します。詳細については、このドキュメントのフローログの設定を構成するをご覧ください。
フローログの設定を構成する
[Filter] セクションで、ロギングする IP トラフィックを指定します。
Accept: 受け入れられたトラフィックのみをログに記録します。
Reject: 拒否されたトラフィックのみをログに記録します。
All: 承認されたトラフィックと拒否されたトラフィックをログに記録します。
[Maximum aggregation interval] セクションで、[1 minute] を選択します。
[Destination] セクションで、[Send to an Amazon S3 bucket] を選択します。
[S3 bucket ARN] セクションで、Amazon S3 バケットの ARN を指定します。
[Log record format] セクションで、フローログレコードの形式を次のように指定します。
- デフォルトのフローログ レコード形式を使用するには、[AWS default format] を選択します。
- カスタム フォーマットを作成するには、[Custom format] を選択します。
MSS の True IP 機能を使用するように、カスタム AWS ログ形式で VPC ログフローを構成します。
[Log format] リストで、すべての属性を選択します。
[Format preview] セクションで、カスタム形式を確認します。
[Log file format] セクションで、[Text (default)] を選択します。
[Hive-compatible S3 prefix] セクションで、[Enable] チェックボックスをオフのままにします。
[Partition logs by time] セクションで、[Every 1 hour (60 mins)] を選択します。
フローログにタグを追加するには、[Add new tag] を選択してタグキーと値を指定します。
[Create flow log] を選択します。詳細については、フローログを Amazon S3 にパブリッシュするをご覧ください。
Amazon CloudWatch へのフローログを構成する
フローログは、VPC、サブネット、ネットワーク インターフェースのいずれかから構成できます。
[Filter] セクションで、ログに記録する IP トラフィックのタイプを指定します。
Accept: 受け入れられたトラフィックのみをログに記録します。
Reject: 拒否されたトラフィックのみをログに記録します。
All: 承認されたトラフィックと拒否されたトラフィックをログに記録します。
[Maximum aggregation interval] セクションで、[1 minute] を選択します。
[Destination] セクションで、[Send to CloudWatch Logs] を選択します。
[Destination log group] セクションで、作成した宛先ロググループの名前を指定します。
[IAM role] リストで、ロール名を選択します。選択したロール名には、CloudWatch Logs にログをパブリッシュする権限があります。
IAM ロールには、次の権限が必要です。
{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "logs:CreateLogGroup", "logs:CreateLogStream", "logs:PutLogEvents", "logs:DescribeLogGroups", "logs:DescribeLogStreams" ], "Resource": "*" } ] }
[Log record format] セクションで、フローログ レコードの [Custom format] を選択します。
フローログにタグを追加するには、[Add new tag] を選択してタグキーと値を指定します。
[Create flow log] を選択します。詳細については、フローログを Amazon S3 にパブリッシュするをご覧ください。
Amazon S3 は、イベント通知を Amazon SQS に送信するように構成できます。詳細については、通知用のバケットの構成(SNS トピックまたは SQS キュー)をご覧ください。
ログ収集方法として Amazon SQS(Amazon SQS を使用する Amazon S3)を使用する場合は、Amazon S3 と Amazon SQS に IAM ユーザー ポリシーが必要です。詳細については、AWS KMS での IAM ポリシーの使用をご覧ください。
サービスとリージョンに基づいて、次の AWS ドキュメントを参照して接続のエンドポイントを特定します。
ロギングソースの詳細については、AWS Identity and Access Management エンドポイントとクォータをご覧ください。
Amazon S3 ロギング ソースの詳細については、Amazon Simple Storage Service エンドポイントとクォータをご覧ください。
Amazon SQS ロギング ソースの詳細については、Amazon Simple Queue Service エンドポイントとクォータをご覧ください。
Amazon CloudWatch ロギング ソースの詳細については、Amazon CloudWatch ログのエンドポイントとクォータをご覧ください。
AWS VPC フローログを取り込むように Google Security Operations フォワーダーと Syslog を構成する
- [SIEM の設定] > [フォワーダー] を選択します。
- [新しいフォワーダーの追加] をクリックします。
- [Forwarder name] に一意の名前を入力します。
- [Submit]、[Confirm] の順にクリックします。フォワーダーが追加され、[Add collector configuration] ウィンドウが表示されます。
- [Collector name] フィールドに名前を入力します。
- [Log type] フィールドで、[AWS VPC Flow] を選択します。
- [Collector type] フィールドで [Syslog] を選択します。
- 次の必須入力パラメータを構成します。
- Protocol: コレクタが syslog データのリッスンに使用する接続プロトコルを指定します。
- Address: コレクタが存在し、syslog データのアドレスが設定されているターゲット IP アドレスまたはホスト名を指定します。
- Port: コレクタが存在し、syslog データをリッスンするターゲット ポートを指定します。
- [Submit]、[Confirm] の順にクリックします。
Google Security Operations フォワーダーの詳細については、Google Security Operations フォワーダーのドキュメントをご覧ください。各フォワーダ タイプの要件については、タイプ別のフォワーダ構成をご覧ください。
フォワーダーの作成時に問題が発生した場合は、Google Security Operations サポートにお問い合わせください。
フィールド マッピング リファレンス
このパーサーコードは、EC2 VPC イベントを記述する未加工の AWS CloudTrail ログを JSON 形式で取得し、構造化 UDM 形式に変換します。関連するフィールドを抽出し、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」フィールドから直接マッピングされます。これにより、[Key] フィールドから作成された対応する各ラベルの値が入力されます。 |
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 のプロフェッショナルから回答を得ることができます。