AWS EC2 ホストのログを収集する
このドキュメントでは、モニタリングと分析のために AWS EC2 ホストのログを Google Security Operations と統合する方法について説明します。この統合では、EC2 ホストログを解析して Unified Data Model(UDM)にマッピングし、データ変換を実行し、EC2 ホストとインスタンスの間に関係を作成します。ログには、セキュリティ モニタリング、監査、コンプライアンスに使用できる、インスタンス、ホストのプロパティ、インスタンスタイプ、パフォーマンス指標に関する貴重な情報が含まれています。
始める前に
- Google SecOps インスタンスがあることを確認します。
- AWS への特権アクセス権があることを確認します。
AWS IAM と S3 を構成する
- バケットの作成のユーザーガイドに沿って、Amazon S3 バケットを作成します。
- バケットの名前とリージョンを保存して、後で使用できるようにします。
- IAM ユーザーの作成のユーザーガイドに沿って、ユーザーを作成します。
- 作成したユーザーを選択します。
- [セキュリティ認証情報] タブを選択します。
- [アクセスキー] セクションで [アクセスキーを作成] をクリックします。
- [ユースケース] として [サードパーティ サービス] を選択します。
- [次へ] をクリックします。
- 省略可: 説明タグを追加します。
- [アクセスキーを作成] をクリックします。
- [CSV ファイルをダウンロード] をクリックして、[アクセスキー] と [シークレット アクセスキー] を保存して、後で使用できるようにします。
- [完了] をクリックします。
- [権限] タブを選択します。
- [権限ポリシー] セクションで [権限を追加] をクリックします。
- [権限を追加] を選択します。
- [ポリシーを直接アタッチする] を選択します。
- AmazonS3FullAccess ポリシーを検索して選択します。
- [次へ] をクリックします。
- [権限を追加] をクリックします。
AWS KMS 用に CloudTrail を構成する
- AWS Management Console にログインします。
- 検索バーに「CloudTrail」と入力し、サービスリストから CloudTrail を選択します。
- [Create trail] をクリックします。
- トレイル名を指定します(例:
EC2-Activity-Trail
)。 - [組織内のすべてのアカウントで有効にする] チェックボックスをオンにします。
- 前に作成した S3 バケット URI(形式は
s3://your-log-bucket-name/
)を入力するか、新しい S3 バケットを作成します。 - SSE-KMS が有効になっている場合は、AWS KMS エイリアスの名前を指定するか、既存の AWS KMS 鍵を選択します。
- その他の設定はデフォルトのままにします。
- [次へ] をクリックします。
- [イベントタイプ] で [管理イベント] と [データイベント] を選択し、EC2 ホスト アクティビティをキャプチャします。
- [次へ] をクリックします。
- [Review and create] で設定を確認します。
- [Create trail] をクリックします。
- 省略可: 新しいバケットを作成した場合は、次の手順に進みます。
- [S3] に移動します。
- 新しく作成したログバケットを特定して選択します。
- フォルダ AWSLogs を選択します。
- [Copy S3 URI] をクリックして保存します。
AWS EC2 ホストを取り込むように Google SecOps でフィードを構成する
- [SIEM 設定] > [フィード] に移動します。
- [新しく追加] をクリックします。
- [フィード名] フィールドに、フィードの名前を入力します(例: AWS EC2 Hosts Logs)。
- [ソースタイプ] として [Amazon S3] を選択します。
- [ログタイプ] として [AWS EC2 ホスト] を選択します。
- [次へ] をクリックします。
次の入力パラメータの値を指定します。
- リージョン: Amazon S3 バケットが配置されているリージョン。
- S3 URI: バケット URI。
s3://your-log-bucket-name/
your-log-bucket-name
は、バケットの実際の名前に置き換えます。
- URI is a: [ディレクトリ] または [サブディレクトリを含むディレクトリ] を選択します。
Source deletion options: 必要に応じて削除オプションを選択します。
アクセスキー ID: s3 バケットにアクセスできるユーザー アクセスキー。
シークレット アクセスキー: s3 バケットにアクセスできるユーザーのシークレット キー。
アセットの名前空間: アセットの名前空間。
Ingestion labels: このフィードのイベントに適用されるラベル。
[次へ] をクリックします。
[Finalize] 画面で新しいフィードの設定を確認し、[送信] をクリックします。
UDM マッピング テーブル
ログフィールド | UDM マッピング | ロジック |
---|---|---|
AllocationTime |
entity.metadata.creation_timestamp |
AllocationTime フィールドはタイムスタンプとして解析され、creation_timestamp フィールドにマッピングされます。パーサーは、さまざまな形式(yyyy-MM-dd HH:mm:ss、RFC 3339、UNIX、ISO8601)を試行します。 |
AllowsMultipleInstanceTypes |
entity.entity.asset.attribute.labels.value |
未加工ログの AllowsMultipleInstanceTypes の値がラベルの値として使用されます。このラベルのキーは allows_multiple_instance_types に設定されています。 |
AutoPlacement |
entity.entity.asset.attribute.labels.value |
未加工ログの AutoPlacement の値がラベルの値として使用されます。このラベルのキーは auto_placement に設定されています。 |
AvailabilityZone |
entity.entity.asset.attribute.cloud.availability_zone |
AvailabilityZone フィールドは availability_zone フィールドに直接マッピングされます。 |
AvailabilityZoneID |
entity.entity.asset.attribute.labels.value |
未加工ログの AvailabilityZoneID の値がラベルの値として使用されます。このラベルのキーは availability_zone_id に設定されています。 |
AvailableCapacity.AvailableInstanceCapacity.AvailableCapacity |
entity.entity.asset.attribute.labels.value |
AvailableCapacity.AvailableInstanceCapacity.AvailableCapacity の値(または名前変更後の AvailableCapacity.Instance.Available )は文字列に変換され、ラベルの値として使用されます。キーは available_instance_capacity_available_capacity に設定されています。 |
AvailableCapacity.AvailableInstanceCapacity.InstanceType |
entity.entity.asset.attribute.labels.value |
AvailableCapacity.AvailableInstanceCapacity.InstanceType の値(または名前変更後の AvailableCapacity.Instance.Type )がラベルの値として使用されます。キーは available_instance_capacity_instance_type に設定されています。 |
AvailableCapacity.AvailableInstanceCapacity.TotalCapacity |
entity.entity.asset.attribute.labels.value |
AvailableCapacity.AvailableInstanceCapacity.TotalCapacity の値(または名前変更後の AvailableCapacity.Instance.Total )は文字列に変換され、ラベルの値として使用されます。キーは total_capacity に設定されています。 |
AvailableCapacity.AvailableVCpus |
entity.entity.asset.attribute.labels.value |
AvailableCapacity.AvailableVCpus の値(または名前変更後の AvailableCapacity.VCPUs )は文字列に変換され、ラベルの値として使用されます。キーは available_v_cpus に設定されています。 |
ClientToken |
entity.entity.asset.attribute.labels.value |
未加工ログの ClientToken の値がラベルの値として使用されます。このラベルのキーは client_token に設定されています。 |
HostID |
entity.metadata.product_entity_id |
HostID フィールド(または名前変更後の ID フィールド)は、product_entity_id フィールドに直接マッピングされます。 |
HostID |
entity.entity.asset.asset_id |
HostID フィールド(または名前変更後の ID フィールド)は、asset_id フィールドに直接マッピングされます。 |
HostMaintenance |
entity.entity.asset.attribute.labels.value |
未加工ログの HostMaintenance の値(または名前変更後の Maintenance )がラベルの値として使用されます。このラベルのキーは host_maintenance に設定されています。 |
HostProperties.Cores |
entity.entity.asset.hardware.cpu_number_cores |
HostProperties.Cores の値は符号なし整数に変換され、cpu_number_cores にマッピングされます。 |
HostProperties.InstanceFamily |
entity.entity.asset.attribute.labels.value |
未加工ログの HostProperties.InstanceFamily の値がラベルの値として使用されます。このラベルのキーは host_properties_instance_family に設定されています。 |
HostProperties.InstanceType |
entity.entity.asset.attribute.labels.value |
未加工ログの HostProperties.InstanceType の値がラベルの値として使用されます。このラベルのキーは host_properties_instance_type に設定されています。 |
HostProperties.Sockets |
entity.entity.asset.attribute.labels.value |
HostProperties.Sockets の値は文字列に変換され、ラベルの値として使用されます。キーは host_properties_sockets に設定されています。 |
HostProperties.TotalVCpus |
entity.entity.asset.attribute.labels.value |
HostProperties.TotalVCpus の値(または名前変更後の HostProperties.TotalVCPUs )は文字列に変換され、ラベルの値として使用されます。キーは host_properties_total_v_cpus に設定されています。 |
HostRecovery |
entity.entity.asset.attribute.labels.value |
未加工ログの HostRecovery の値(または名前変更後の Recovery )がラベルの値として使用されます。このラベルのキーは host_recovery に設定されています。 |
HostReservationID |
entity.entity.asset.attribute.labels.value |
未加工ログの HostReservationID の値(または名前変更後の ReservationID )がラベルの値として使用されます。このラベルのキーは host_reservation_id に設定されています。 |
MemberOfServiceLinkedResourceGroup |
entity.entity.asset.attribute.labels.value |
MemberOfServiceLinkedResourceGroup の値は文字列に変換され、ラベルの値として使用されます。キーは member_of_service_linked_resource_group に設定されています。 |
OwnerID |
entity.entity.asset.attribute.labels.value |
未加工ログの OwnerID の値がラベルの値として使用されます。このラベルのキーは owner_id に設定されています。 |
ReleaseTime |
entity.entity.asset.attribute.labels.value |
未加工ログの ReleaseTime の値がラベルの値として使用されます。このラベルのキーは release_time に設定されています。 |
State |
entity.entity.asset.attribute.labels.value |
未加工ログの State の値がラベルの値として使用されます。このラベルのキーは state に設定されています。 |
TagSet |
entity.entity.asset.attribute.labels |
TagSet 配列が反復処理され、各タグの Key と Value がラベルのキーと値として使用されます。値 AMAZON_WEB_SERVICES はパーサーによってこのフィールドに割り当てられます。未加工ログの collection_time は collected_timestamp フィールドにマッピングされます。値 ASSET はパーサーによってこのフィールドに割り当てられます。値 AWS EC2 HOSTS はパーサーによってこのフィールドに割り当てられます。値 AWS はパーサーによってこのフィールドに割り当てられます。関係は Instances フィールドと OutpostArn フィールドから派生しますが、これらのフィールド自体は IDM オブジェクトに直接マッピングされません。パーサー ロジックは、これらのフィールドに基づいて関係オブジェクトを作成し、relations 配列に統合します。 |
collection_time |
entity.metadata.collected_timestamp |
ログの collection_time がイベントの collected_timestamp として使用されます。 |
変更点
2024-01-31
- 新しいスキーマのサポートを追加しました。
2023-12-14
- 新しく作成されたパーサー。
さらにサポートが必要な場合 コミュニティ メンバーや Google SecOps のプロフェッショナルから回答を得ることができます。