AWS VPC フローログを収集する
このドキュメントでは、Google Security Operations フォワーダーを使用して AWS VPC Flow Logs を収集する方法について説明します。
詳細については、Google Security Operations へのデータの取り込みの概要をご覧ください。
取り込みラベルによって、未加工のログデータを構造化 UDM 形式に正規化するパーサーが識別されます。このドキュメントの情報は、取り込みラベル AWS_VPC_FLOW
が付加されたパーサーに適用されます。
始める前に
Amazon S3 バケットが作成されていることを確認します。詳細については、最初の S3 バケットを作成するをご覧ください。
Amazon CloudWatch ロググループが作成されていることを確認します。詳細については、ロググループとログストリームの操作をご覧ください。
AWS VPC フローを構成する
ログを Amazon S3 に転送するか、Amazon CloudWatch に転送するかに応じて、AWS VPC Flow を構成します。
Amazon S3 バケットへのログ転送の詳細については、このドキュメントのログを Amazon S3 に転送するようにフローログを構成するをご覧ください。
ログを Amazon CloudWatch に転送する方法については、このドキュメントの Amazon CloudWatch へのフローログの構成をご覧ください。
ログを Amazon S3 に転送するようにフローログを構成する
Amazon S3 バケットを作成して構成したら、ネットワーク インターフェース、サブネット、VPC ネットワークのフローログを作成できます。
ネットワーク インターフェースのフローログを作成する
- Amazon EC2 コンソールにログインします。
- ナビゲーション パネルで [ネットワーク インターフェース] を選択します。
- 1 つ以上のネットワーク インターフェースを選択します。
- [アクション] > [フローログを作成] を選択します。
- フローログの設定を構成します。詳細については、このドキュメントのフローログの設定を構成するをご覧ください。
サブネットのフローログを作成する
- Amazon VPC コンソールにログインします。
- ナビゲーション パネルで [サブネット] を選択します。
- 1 つ以上のサブネットを選択します。
- [アクション] > [フローログを作成] を選択します。
- フローログの設定を構成します。詳細については、このドキュメントのフローログの設定を構成するをご覧ください。
VPC のフローログを作成する
- Amazon VPC コンソールにログインします。
- ナビゲーション パネルで [VPC] を選択します。
- 1 つ以上の VPC を選択します。
- [アクション] > [フローログを作成] を選択します。
- フローログの設定を構成します。詳細については、このドキュメントのフローログの設定を構成するをご覧ください。
フローログの設定を構成する
[フィルタ] セクションで、ロギングする IP トラフィックを指定します。
Accept: 受け入れられたトラフィックのみをログに記録します。
拒否: 拒否されたトラフィックのみをログに記録します。
すべて: 承認されたトラフィックと拒否されたトラフィックをログに記録します。
[最大集計間隔] セクションで、[1 分] を選択します。
[宛先] セクションで、[Amazon S3 バケットに送信] を選択します。
[S3 バケット ARN] セクションで、Amazon S3 バケットの ARN を指定します。
[ログレコードの形式] セクションで、フローログレコードの形式を次のように指定します。
- デフォルトのフローログ レコード形式を使用するには、[AWS のデフォルト形式] を選択します。
- カスタム フォーマットを作成するには、[カスタム フォーマット] を選択します。
MSS の真の IP 機能を使用するように、カスタム AWS ログ形式で VPC ログフローを構成します。
[ログ形式] リストで、すべての属性を選択します。
[形式のプレビュー] セクションで、カスタム形式を確認します。
[ログファイル形式] セクションで、[テキスト(デフォルト)] を選択します。
[Hive 互換の S3 接頭辞] セクションで、[有効にする] チェックボックスをオフのままにします。
[時間でログを分割] セクションで、[1 時間ごと(60 分)] を選択します。
フローログにタグを追加するには、[新しいタグを追加] を選択し、タグキーと値を指定します。
[Create flow log] を選択します。詳細については、フローログを Amazon S3 にパブリッシュするをご覧ください。
Amazon CloudWatch へのフローログを構成する
フローログは、VPC、サブネット、ネットワーク インターフェースのいずれかから構成できます。
[フィルタ] セクションで、ログに記録する IP トラフィックのタイプを指定します。
Accept: 受け入れられたトラフィックのみをログに記録します。
拒否: 拒否されたトラフィックのみをログに記録します。
すべて: 承認されたトラフィックと拒否されたトラフィックをログに記録します。
[最大集計間隔] セクションで、[1 分] を選択します。
[宛先] セクションで、[CloudWatch Logging に送信] を選択します。
[宛先ロググループ] セクションで、作成した宛先ロググループの名前を指定します。
[IAM ロール] リストで、ロール名を選択します。選択したロール名には、CloudWatch Logs にログをパブリッシュする権限があります。
IAM ロールには、次の権限が必要です。
{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "logs:CreateLogGroup", "logs:CreateLogStream", "logs:PutLogEvents", "logs:DescribeLogGroups", "logs:DescribeLogStreams" ], "Resource": "*" } ] }
[ログレコードの形式] セクションで、フローログ レコードの [カスタム形式] を選択します。
フローログにタグを追加するには、[新しいタグを追加] を選択し、タグキーと値を指定します。
[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 の設定] > [転送元] を選択します。
- [新しいフォワーダーの追加] をクリックします。
- [転送元の名前] に一意の名前を入力します。
- [送信]、[確認] の順にクリックします。フォワーダーが追加され、[コレクタの構成を追加する] ウィンドウが表示されます。
- [コレクタ名] フィールドに名前を入力します。
- [ログタイプ] フィールドで、[AWS VPC Flow] を選択します。
- [コレクタのタイプ] フィールドで [Syslog] を選択します。
- 次の必須入力パラメータを構成します。
- プロトコル: コレクタが syslog データのリッスンに使用する接続プロトコルを指定します。
- アドレス: コレクタが存在し、Syslog データのアドレスが設定されているターゲット IP アドレスまたはホスト名を指定します。
- ポート: コレクタが存在し、syslog データをリッスンするターゲット ポートを指定します。
- [送信]、[確認] の順にクリックします。
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] フィールドから作成された対応する各ラベルの値が入力されます。 |
なし | event.idm.entity.entity.resource.attribute.cloud.environment | パーサーコードで「AMAZON_WEB_SERVICES」にハードコードされています。 |
なし | event.idm.entity.entity.resource.resource_type | パーサーコードで「VPC_NETWORK」にハードコードされています。 |
なし | event.idm.entity.metadata.collected_timestamp | イベントのタイムスタンプが入力されます。このタイムスタンプは、元のログの「collection_time」フィールドから取得されます。 |
なし | event.idm.entity.metadata.entity_type | パーサーコードで「RESOURCE」にハードコードされています。 |
なし | event.idm.entity.metadata.product_name | パーサーコードで「Amazon VPC」にハードコードされています。 |
なし | event.idm.entity.metadata.vendor_name | パーサーコードで「AWS」にハードコードされています。 |
なし | events.timestamp | イベントのタイムスタンプが入力されます。このタイムスタンプは、元のログの「collection_time」フィールドから取得されます。 |