Datadog ログを収集する

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

概要

このパーサーは、Datadog ログからフィールドを抽出し、複数のミューテーションと Grok マッチングを実行してデータを構造化し、抽出されたフィールドを UDM にマッピングします。message フィールド内のさまざまなログ形式(Key-Value ペアや JSON オブジェクトなど)を処理し、特定のフィールドを UDM 準拠のラベルと追加フィールドに変換します。

始める前に

  • Google SecOps インスタンスがあることを確認します。
  • Google Cloud IAM に対する特権アクセス権があることを確認します。
  • Google Cloud Storage に対する特権アクセス権があることを確認します。
  • Datadog への logs_write_archive ユーザー アクセス権があることを確認します。

オプション 1: Cloud Storage 構成による Datadog ログの共有

Google Cloud Platform との Datadog の統合を構成する

Google Cloud Storage バケットを作成する

  1. Google Cloud Console にログインします。
  2. Cloud Storage バケットのページに移動します。

    [バケット] に移動

  3. [作成] をクリックします。

  4. [バケットの作成] ページでユーザーのバケット情報を入力します。以下のステップでは、操作を完了した後に [続行] をクリックして、次のステップに進みます。

    1. [始める] セクションで、次の操作を行います。

      1. バケット名の要件を満たす一意の名前を入力します(datadog-data など)。
      2. 階層型名前空間を有効にするには、展開矢印をクリックして [Optimize for file oriented and data-intensive workloads] セクションを開き、[Enable Hierarchical namespace on this bucket] を選択します。

      3. バケットラベルを追加するには、展開矢印をクリックして [ラベル] セクションを開きます。

      4. [ラベルを追加] をクリックし、ラベルのキーと値を指定します。

    2. [データの保存場所の選択] セクションで、次の操作を行います。

      1. ロケーション タイプを選択してください。
      2. ロケーション タイプのプルダウンを使用して、バケット内のオブジェクト データが永続的に保存されるロケーションを選択します。
        • ロケーション タイプとして [デュアルリージョン] を選択した場合は、関連するチェックボックスを使用してターボ レプリケーションを有効にすることもできます。
      3. クロスバケット レプリケーションを設定するには、[クロスバケット レプリケーションを設定する] セクションを開きます。
    3. [データのストレージ クラスを選択する] セクションで、バケットのデフォルトのストレージ クラスを選択します。あるいは、Autoclass を選択して、バケットデータのストレージ クラスを自動的に管理します。

    4. [オブジェクトへのアクセスを制御する方法を選択する] セクションで、[公開アクセスの防止] を適用しない場合は [なし] を選択し、バケットのオブジェクトのアクセス制御モデルを選択します。

    5. [オブジェクト データを保護する方法を選択する] セクションで、次の操作を行います。

      1. [データ保護] で、バケットに設定するオプションを選択します。
      2. オブジェクト データの暗号化方法を選択するには、[データ暗号化] というラベルの付いた展開矢印をクリックし、データ暗号化方法を選択します。
  5. [作成] をクリックします。

Google Cloud サービス アカウントを作成する

  1. [IAM と管理] > [サービス アカウント] に移動します。
  2. 新しいサービス アカウントを作成します。
  3. わかりやすい名前を付けます(例: datadog-user)。
  4. 前の手順で作成した Cloud Storage バケットに対する ストレージ オブジェクト管理者ロールをサービス アカウントに付与します。
  5. サービス アカウントの SSH キーを作成します。
  6. サービス アカウントの JSON キーファイルをダウンロードします。このファイルは安全に保管してください。

Cloud Storage にログを送信するように Datadog を構成する

  1. 特権アカウントを使用して Datadog にログインします。
  2. [ログ] > [ログ転送] に移動します。
  3. [+ 新しいアーカイブを作成] をクリックします。
  4. [Google Cloud Storage] を選択します。
  5. 必要なパラメータを入力し、[保存] をクリックします。

オプション 2: Webhook 構成による Datadog ログの共有

Datadog ログを取り込むように Google SecOps でフィードを構成する

  1. [SIEM 設定] > [フィード] に移動します。
  2. [新しく追加] をクリックします。
  3. [フィード名] フィールドに、フィードの名前を入力します(例: Datadog ログ)。
  4. [ソースタイプ] として [Webhook] を選択します。
  5. [Log type] で [Datadog] を選択します。
  6. [次へ] をクリックします。
  7. 省略可: 次の入力パラメータの値を指定します。
    • 分割区切り文字: ログ行を区切るために使用される区切り文字(\n など)。
    • アセットの名前空間: アセットの名前空間
    • 取り込みラベル: このフィードのイベントに適用されるラベル。
  8. [次へ] をクリックします。
  9. [Finalize] 画面でフィードの設定を確認し、[送信] をクリックします。
  10. [秘密鍵を生成する] をクリックして、このフィードを認証するためのシークレット キーを生成します。
  11. シークレット キーをコピーして保存します。この秘密鍵を再び表示することはできません。必要に応じて、新しい秘密鍵を再生成できますが、この操作により以前の秘密鍵は無効になります。
  12. [詳細] タブで、[エンドポイント情報] フィールドから、フィードのエンドポイント URL をコピーします。このエンドポイント URL は、クライアント アプリケーションで指定する必要があります。
  13. [完了] をクリックします。

Webhook フィードの API キーを作成する

  1. Google Cloud コンソール > [認証情報] に移動します。

    [認証情報] に移動

  2. [認証情報を作成] をクリックして [API キー] を選択します。

  3. API キーによる Chronicle API へのアクセスを制限します。

エンドポイント URL を指定する

  1. クライアント アプリケーションで、Webhook フィードで指定された HTTPS エンドポイント URL を指定します。
  2. 次の形式でカスタム ヘッダーの一部として API キーとシークレット キーを指定して、認証を有効にします。

    X-goog-api-key = API_KEY
    X-Webhook-Access-Key = SECRET
    

    推奨事項: API キーは URL ではなくヘッダーとして指定してください。

  3. Webhook クライアントがカスタム ヘッダーをサポートしていない場合は、次の形式のクエリ パラメータを使用して API キーとシークレット キーを指定できます。

    ENDPOINT_URL?key=API_KEY&secret=SECRET
    

    次のように置き換えます。

    • ENDPOINT_URL: フィードのエンドポイント URL。
    • API_KEY: Google SecOps に対する認証に使用する API キー。
    • SECRET: フィードの認証用に生成したシークレット キー。

Webhook にログを送信するように Datadog を構成する

  1. 特権アカウントを使用して Datadog にログインします。
  2. [ログ] > [ログ転送] に移動します。
  3. [カスタム デスティネーション] を選択します。
  4. [+ 新しいリンク先を作成] をクリックします。
  5. 次の入力パラメータの値を指定します。
    1. 宛先の種類を選択する: [HTTP] を選択します。
    2. 宛先に名前を付ける: Webhook にわかりやすい名前を付けます(例: Google SecOps Webhook)。
    3. リンク先を構成する: ENDPOINT_URL を入力し、その後に API_KEYSECRET を入力します。
    4. 認証設定を構成する: 次のような一般的なヘッダーを追加します。これにより、HTTP リクエストが不正な形式にならないため、Datadog で Webhook の作成を完了できます。
      • ヘッダー名: Accept
      • ヘッダー値: application/json
    5. [保存] をクリックします。

UDM マッピング テーブル

ログフィールド UDM マッピング ロジック
_id read_only_udm.metadata.product_log_id _id フィールドから直接マッピングされます。
alert read_only_udm.security_result.about.resource.attribute.labels alert フィールドから抽出され、security_result オブジェクト内にラベルとして追加されます。
attributes.@timestamp read_only_udm.metadata.event_timestamp イベントのタイムスタンプは attributes.@timestamp フィールドから抽出され、秒とナノ秒に変換されます。
attributes.@version read_only_udm.metadata.product_version attributes.@version フィールドから直接マッピングされます。
attributes.level_value read_only_udm.security_result.about.resource.attribute.labels attributes.level_value フィールドから抽出され、security_result オブジェクト内にラベルとして追加されます。
attributes.logger_name read_only_udm.principal.application attributes.logger_name フィールドから直接マッピングされます。
attributes._trace.baggage._sli_service read_only_udm.additional.fields attributes._trace.baggage._sli_service フィールドから直接マッピングされ、追加フィールドとして追加されます。
attributes._trace.baggage.device_id read_only_udm.principal.asset.asset_id attributes._trace.baggage.device_id フィールドから直接マッピングされ、「デバイス ID:」という接頭辞が付いています。
attributes._trace.origin.operation read_only_udm.metadata.product_event_type attributes._trace.origin.operation フィールドから直接マッピングされます。
caller read_only_udm.security_result.about.resource.attribute.labels caller フィールドから抽出され、security_result オブジェクト内にラベルとして追加されます。
component read_only_udm.security_result.about.resource.attribute.labels component フィールドから抽出され、security_result オブジェクト内にラベルとして追加されます。
context.AlertName read_only_udm.security_result.threat_name context.AlertName フィールドから直接マッピングされます。
context.BusArch read_only_udm.security_result.about.resource.attribute.labels context.BusArch フィールドから抽出され、security_result オブジェクト内にラベルとして追加されます。
context.CANDBVersion read_only_udm.security_result.about.resource.attribute.labels context.CANDBVersion フィールドから抽出され、security_result オブジェクト内にラベルとして追加されます。
context.esn read_only_udm.security_result.about.resource.attribute.labels context.esn フィールドから抽出され、security_result オブジェクト内にラベルとして追加されます。
context.ftcpVersion read_only_udm.security_result.about.resource.attribute.labels context.ftcpVersion フィールドから抽出され、security_result オブジェクト内にラベルとして追加されます。
context.ingestMessageId read_only_udm.security_result.about.resource.attribute.labels context.ingestMessageId フィールドから抽出され、security_result オブジェクト内にラベルとして追加されます。
context.redactedVin read_only_udm.security_result.about.resource.attribute.labels context.redactedVin フィールドから抽出され、security_result オブジェクト内にラベルとして追加されます。
context.vehicleId read_only_udm.security_result.about.resource.attribute.labels context.vehicleId フィールドから抽出され、security_result オブジェクト内にラベルとして追加されます。
date read_only_udm.metadata.collected_timestamp 収集されたタイムスタンプは date フィールド(パーサーでは date1 に名前が変更されています)から抽出され、秒とナノ秒に変換されます。
host read_only_udm.principal.hostname host フィールドから直接マッピングされます。
message read_only_udm.security_result.about.resource.attribute.labels message フィールドが解析され、その一部が summary フィールドと json_data フィールドに入力されます。残りの部分は Key-Value ペアとして扱われ、security_result オブジェクト内にラベルとして追加されます。
msg read_only_udm.security_result.about.resource.attribute.labels msg フィールドから抽出され、security_result オブジェクト内にラベルとして追加されます。
service read_only_udm.metadata.product_name service フィールドから直接マッピングされます。
status read_only_udm.security_result.severity 重大度は status フィールドに基づいて決定されます。「INFO」、「DEBUG」、「debug」、「info」は「LOW」にマッピングされ、「WARN」は「MEDIUM」にマッピングされます。その他の値は、提供されたコード スニペットで明示的にマッピングされていません。
tags read_only_udm.additional.fields tags 配列内の各タグは Key-Value ペアとして解析され、追加フィールドとして追加されます。
なし read_only_udm.metadata.event_type host フィールドが存在する場合は「STATUS_UPDATE」、それ以外の場合は「GENERIC_EVENT」に設定します。

変更点

2023-07-21

  • パーサーが作成されました。