AWS EC2 ホストのログを収集する

パーサーのバージョン: 1.0

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

このドキュメントでは、モニタリングと分析のために AWS EC2 ホストのログを Google Security Operations に統合する方法について説明します。統合には、EC2 ホストのログを Unified Data Model(UDM)に解析してマッピングし、データ変換を実行して、EC2 ホストとインスタンス間の関係を作成する作業が含まれます。ログには、インスタンス、ホストのプロパティ、インスタンス タイプ、パフォーマンス指標に関する貴重な情報が含まれており、セキュリティ モニタリング、監査、コンプライアンスに使用できます。

始める前に

  • Google SecOps インスタンスがあることを確認します。
  • AWS への特権アクセス権があることを確認します。

AWS IAM と S3 を構成する

  1. バケットの作成のユーザーガイドに沿って、Amazon S3 バケット を作成します。
  2. 後で使用できるように、バケットの名前リージョン を保存します。
  3. IAM ユーザーを作成するのユーザーガイドに沿って、ユーザーを作成します。
  4. 作成したユーザー を選択します。
  5. [セキュリティ認証情報] タブを選択します。
  6. [アクセスキー] セクションで [アクセスキーを作成] をクリックします。
  7. [ユースケース] として [サードパーティ サービス] を選択します。
  8. [次へ] をクリックします。
  9. 省略可: 説明タグを追加します。
  10. [アクセスキーを作成] をクリックします。
  11. [CSV ファイルをダウンロード] をクリックして、後で使用できるようにアクセスキーシークレット アクセスキー を保存します。
  12. [完了] をクリックします。
  13. [権限] タブを選択します。
  14. [権限ポリシー] セクションで [権限を追加] をクリックします。
  15. [権限を追加] を選択します。
  16. [ポリシーを直接アタッチする] を選択します。
  17. AmazonS3FullAccess ポリシーを検索して選択します。
  18. [次へ] をクリックします。
  19. [権限を追加] をクリックします。

AWS KMS の CloudTrail を構成する

  1. AWS Management Console にログインします。
  2. 検索バーに「CloudTrail 」と入力し、サービスリストから選択します。
  3. [Create trail] をクリックします。
  4. [Trail name] を指定します(例: EC2-Activity-Trail)。
  5. [Enable for all accounts in my organization] チェックボックスをオンにします。
  6. 先ほど作成した S3 バケット URI(形式は s3://your-log-bucket-name/)を入力するか、新しい S3 バケットを作成します。
  7. SSE-KMS が有効になっている場合は、[AWS KMS Alias] の名前を指定するか、[既存の AWS KMS Key] を選択します。
  8. 他の設定はデフォルトのままにできます。
  9. [次へ] をクリックします。
  10. [Event Types] で [Management events] と [Data events] を選択して、EC2 ホストのアクティビティをキャプチャします。
  11. [次へ] をクリックします。
  12. [Review and create] で設定を確認します。
  13. [Create trail] をクリックします。
  14. 省略可: 新しいバケットを作成した場合は、次の手順に進みます。
    • [S3] に移動します。
    • 新しく作成したログバケットを特定して選択します。
    • フォルダ [AWSLogs] を選択します。
    • [Copy S3 URI] をクリックして保存します。

AWS EC2 ホストを取り込むように Google SecOps でフィードを構成する

  1. [SIEM 設定] > [フィード] に移動します。
  2. [新しく追加] をクリックします。
  3. [フィード名] フィールドに、フィードの名前を入力します(例: AWS EC2 Hosts Logs )。
  4. [ソースタイプ] として [Amazon S3 V2] を選択します。
  5. [Log type] として [AWS EC2 Hosts] を選択します。
  6. [次へ] をクリックします。
  7. 次の入力パラメータの値を指定します。

    • S3 URI: バケット URI。
      • s3://your-log-bucket-name/
        • your-log-bucket-name は、バケットの実際の名前に置き換えます。
    • Source deletion options: 必要に応じて削除オプションを選択します。

    • Maximum File Age: 過去数日間に変更されたファイルを含めます。デフォルトは 180 日です。

    • アクセスキー ID: s3 バケットにアクセスできるユーザー アクセスキー。

    • シークレット アクセスキー: s3 バケットにアクセスできるユーザーのシークレット キー。

    • アセットの名前空間: アセットの名前空間

    • Ingestion labels: このフィードのイベントに適用されるラベル。

  8. [次へ] をクリックします。

  9. [Finalize] 画面で新しいフィードの設定を確認し、[送信] をクリックします。

サポートされている AWS EC2 ホストのログ形式

AWS EC2 ホストのパーサーは、JSON 形式のログをサポートしています。

サポートされている AWS EC2 ホストのサンプルログ

  • JSON

      {
        "AllocationTime": "2018-01-23T12:33:31.692Z",
        "AllowsMultipleInstanceTypes": "",
        "AssetID": "",
        "AutoPlacement": "off",
        "AvailabilityZone": "us-east-1a",
        "AvailabilityZoneID": "",
        "AvailableCapacity": {
          "VCPUs": 96,
          "Instance": {
            "Available": 48,
            "Total": 48,
            "Type": "m5.large"
          }
        },
        "ClientToken": "",
        "ID": "h-05abcdd12ee9ca123",
        "Maintenance": "",
        "Properties": {
          "Cores": 48,
          "InstanceFamily": "",
          "InstanceType": "m5.large",
          "Sockets": 2,
          "TotalVCPUs": 96
        },
        "Recovery": "off",
        "ReservationID": "",
        "Instances": null,
        "MemberOfServiceLinkedResourceGroup": false,
        "OutpostARN": "",
        "OwnerID": "",
        "ReleaseTime": "",
        "State": "available",
        "TagSet": null
      }
    

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 配列が反復処理され、各タグの KeyValue がそれぞれラベルのキーと値として使用されます。 値 AMAZON_WEB_SERVICES は、パーサーによってこのフィールドに割り当てられます。未加工ログの collection_timecollected_timestamp フィールドにマッピングされます。値 ASSET は、パーサーによってこのフィールドに割り当てられます。値 AWS EC2 HOSTS は、パーサーによってこのフィールドに割り当てられます。値 AWS は、パーサーによってこのフィールドに割り当てられます。関係は Instances フィールドと OutpostArn フィールドから派生しますが、これらのフィールド自体は IDM オブジェクトに直接マッピングされません。パーサーのロジックは、これらのフィールドに基づいて関係オブジェクトを作成し、relations 配列にマージします。
collection_time entity.metadata.collected_timestamp ログの collection_time は、イベントの collected_timestamp として使用されます。

変更履歴

このパーサーの変更履歴を表示する

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