Elastic Defend のログを収集する

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

このドキュメントでは、Cloud Run 関数で Google Cloud Storage V2 を使用して Elastic Defend ログを Google Security Operations に取り込む方法について説明します。

Elastic Defend は、Elastic Security 内のエンドポイント検出対応(EDR)ソリューションです。Windows、macOS、Linux オペレーティング システム全体にわたる詳細な可視性により、防御、検出、対応の機能を提供します。プロセスの実行、ファイル アクティビティ、ネットワーク接続、レジストリの変更、ライブラリの読み込みを監視し、エンドポイント レベルで脅威を検出して防止します。データは Elasticsearch に保存され、Elasticsearch Search API を使用して取得できます。

始める前に

次の前提条件を満たしていることを確認してください。

  • Google SecOps インスタンス
  • 次の API が有効になっている Google Cloud プロジェクト。
    • Cloud Storage
    • Cloud Run functions
    • Cloud Scheduler
    • Pub/Sub
    • IAM
  • Elastic Defend がデプロイされている Elasticsearch クラスタへのアクセス権
  • Elasticsearch で API キーを作成する権限(manage_securitymanage_api_key、または manage_own_api_key クラスタ権限)
  • Cloud Run functions から Elasticsearch クラスタへのネットワーク接続

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

  1. Google Cloud コンソールに移動します。
  2. プロジェクトを選択するか、新しいプロジェクトを作成します。
  3. ナビゲーション メニューで、[Cloud Storage > バケット] に移動します。
  4. [バケットを作成] をクリックします。
  5. 次の構成情報を提供してください。

    設定
    バケットに名前を付ける グローバルに一意の名前(elastic-defend-logs など)を入力します。
    ロケーション タイプ ニーズに基づいて選択します(リージョン、デュアルリージョン、マルチリージョン)。
    ロケーション ロケーションを選択します(例: us-central1)。
    ストレージ クラス Standard(アクセス頻度の高いログにおすすめ)
    アクセス制御 均一(推奨)
    保護ツール 省略可: オブジェクトのバージョニングまたは保持ポリシーを有効にする
  6. [作成] をクリックします。

Elastic Defend の認証情報を収集する

Cloud Run 関数が Elastic Defend イベントを取得できるようにするには、logs-endpoint データ ストリームに対する読み取り権限を持つ API キーを作成する必要があります。

Kibana を使用して API キーを作成する

  1. Kibana にログインします。
  2. ナビゲーション メニューまたはグローバル検索フィールドで、[Stack Management] > [API Keys] に移動します。
  3. [API キーを作成] をクリックします。
  4. [名前] フィールドに「Google SecOps Cloud Storage Integration」と入力します。
  5. [有効期限] フィールドで、必要に応じて有効期限を設定します。デフォルトでは、API キーに有効期限はありません。
  6. [セキュリティ権限を制御する] をクリックします。
  7. [インデックス] セクションで、[インデックス権限を追加] をクリックします。
  8. インデックス権限を構成します。
    • インデックス: 「logs-endpoint.*」と入力します。
    • 権限: 読み取りを選択
  9. [クラスタ権限] セクションは空白のままにします(クラスタ権限は必要ありません)。
  10. [API キーを作成] をクリックします。

API 認証情報を記録する

API キーを作成すると、認証情報がダイアログに表示されます。

  • Encoded: Base64 でエンコードされた API キー(例: VnVhQ2ZHY0JDZGJrUW0tZTVhT3g6dWkybHAyYXhUTm1zeWFrdzl0dk5udw==

    Elasticsearch エンドポイント URL も記録する必要があります。

  • Elastic Cloud の場合: エンドポイントは、Cloud Console のデプロイの Elasticsearch セクション(https://my-deployment.es.us-central1.gcp.cloud.es.io:443 など)に表示されます。

  • セルフマネージド Elasticsearch の場合: Elasticsearch クラスタのホスト名または IP アドレスとポート(https://elasticsearch.example.com:9200 など)を使用します。

デベロッパー ツールを使用して API キーを作成する(別の方法)

また、Kibana Dev Tools を使用して API キーを作成することもできます。

  1. Kibana にログインします。
  2. [管理] > [開発ツール] に移動します。
  3. コンソールで、次のコマンドを実行します。

    POST /_security/api_key
    {
      "name": "Google SecOps Cloud Storage Integration",
      "role_descriptors": {
        "chronicle_reader": {
          "indices": [
            {
              "names": ["logs-endpoint.*"],
              "privileges": ["read"]
            }
          ]
        }
      },
      "metadata": {
        "application": "google-chronicle-gcs",
        "environment": "production"
      }
    }
    
  4. レスポンスには API キー認証情報が含まれます。

    {
      "id": "VuaCfGcBCdbkQm-e5aOx",
      "name": "Google SecOps Cloud Storage Integration",
      "api_key": "ui2lp2axTNmsyakw9tvNnw",
      "encoded": "VnVhQ2ZHY0JDZGJrUW0tZTVhT3g6dWkybHAyYXhUTm1zeWFrdzl0dk5udw=="
    }
    
  5. エンコードされた値をコピーして保存します。これは、認証に使用する base64 エンコードされた API キーです。

サービス アカウントの作成

Cloud Run functions 専用のサービス アカウントを作成します。

  1. Google Cloud コンソールで、[IAM と管理] > [サービス アカウント] に移動します。
  2. [サービス アカウントを作成] をクリックします。
  3. 次の構成の詳細を指定します。
    • サービス アカウント名: 「elastic-defend-collector」と入力します。
    • サービス アカウントの説明: Service account for Elastic Defend log collection to GCS と入力します。
  4. [作成して続行] をクリックします。
  5. [このサービス アカウントにプロジェクトへのアクセスを許可する] セクションで、次のロールを追加します。
    1. [ロールを選択] をクリックし、[Storage オブジェクト管理者](roles/storage.objectAdmin)を選択します。
    2. [別のロールを追加] をクリックし、[Cloud Run 起動元](roles/run.invoker)を選択します。
  6. [続行] をクリックします。
  7. [完了] をクリックします。

Pub/Sub トピックの作成

Cloud Scheduler から Cloud Run functions の関数をトリガーする Pub/Sub トピックを作成します。

  1. Google Cloud コンソールで、[Pub/Sub>トピック] に移動します。
  2. [トピックを作成] をクリックします。
  3. 次の構成の詳細を指定します。
    • トピック ID: 「elastic-defend-trigger」と入力します。
    • デフォルトのサブスクリプションを追加する: チェックをオンのままにする
  4. [作成] をクリックします。

Cloud Run 関数を作成

Elasticsearch からイベントを取得して GCS に書き込む Cloud Run functions 関数を作成する。

関数を作成する

  1. Google Cloud コンソールで、[Cloud Run functions] に移動します。
  2. [関数を作成] をクリックします。
  3. 次の構成情報を提供してください。

    設定
    環境 第 2 世代
    関数名 elastic-defend-to-gcs
    リージョン GCS バケットと同じリージョンを選択します。
    トリガーのタイプ Cloud Pub/Sub
    Cloud Pub/Sub トピック elastic-defend-trigger を選択
    割り当てられたメモリ 512 MiB(データ量が多い場合は増やす)
    タイムアウト 540 秒
    ランタイム サービス アカウント elastic-defend-collector を選択
  4. [次へ] をクリックします。

環境変数を追加する

  • [ランタイム、ビルド、接続、セキュリティの設定] セクションで、次の環境変数を追加します。

    変数
    GCS_BUCKET GCS バケットの名前(例: elastic-defend-logs
    GCS_PREFIX ログファイルの接頭辞(elastic-defend など)
    STATE_KEY 状態ファイルの名前(例: state.json
    ES_HOST Elasticsearch の URL(例: https://my-deployment.es.us-central1.gcp.cloud.es.io:443
    ES_API_KEY 認証情報の作成ステップでエンコードされた API キー
    MAX_RECORDS 実行あたりのレコードの最大数(100000 など)
    PAGE_SIZE 検索リクエストあたりのレコード数(例: 1000
    LOOKBACK_HOURS 初回実行時に遡って確認する時間(例: 24

関数のコードを追加する

  1. [ランタイム] として [Python 3.11] を選択します。
  2. [エントリ ポイント] を main に設定します。
  3. [ソースコード] セクションで [インライン エディタ] を選択します。
  4. main.py の内容を次のコードに置き換えます。

    import os
    import json
    import datetime
    import base64
    import requests
    from google.cloud import storage
    
    GCS_BUCKET = os.environ["GCS_BUCKET"]
    GCS_PREFIX = os.environ.get("GCS_PREFIX", "elastic-defend")
    STATE_KEY = os.environ.get("STATE_KEY", "state.json")
    ES_HOST = os.environ["ES_HOST"]
    ES_API_KEY = os.environ["ES_API_KEY"]
    MAX_RECORDS = int(os.environ.get("MAX_RECORDS", "100000"))
    PAGE_SIZE = int(os.environ.get("PAGE_SIZE", "1000"))
    LOOKBACK_HOURS = int(os.environ.get("LOOKBACK_HOURS", "24"))
    
    INDEX_PATTERN = "logs-endpoint.*"
    SEARCH_PATH = f"/{INDEX_PATTERN}/_search"
    
    def _gcs_client():
        return storage.Client()
    
    def _load_state(bucket):
        blob = bucket.blob(f"{GCS_PREFIX}/{STATE_KEY}")
        if blob.exists():
            return json.loads(blob.download_as_text())
        return {}
    
    def _save_state(bucket, state):
        blob = bucket.blob(f"{GCS_PREFIX}/{STATE_KEY}")
        blob.upload_from_string(
            json.dumps(state),
            content_type="application/json",
        )
    
    def _build_query(gte_ts, sort_after=None):
        body = {
            "size": PAGE_SIZE,
            "query": {
                "range": {
                    "@timestamp": {
                        "gte": gte_ts,
                        "format": "strict_date_optional_time",
                    }
                }
            },
            "sort": [
                {"@timestamp": {"order": "asc"}},
                {"_shard_doc": "asc"},
            ],
        }
        if sort_after:
            body["search_after"] = sort_after
        return body
    
    def _search(session, body):
        url = f"{ES_HOST.rstrip('/')}{SEARCH_PATH}"
        resp = session.post(
            url,
            json=body,
            headers={
                "Authorization": f"ApiKey {ES_API_KEY}",
                "Content-Type": "application/json",
            },
            timeout=120,
        )
        resp.raise_for_status()
        return resp.json()
    
    def _write_ndjson(bucket, records, ts_label):
        if not records:
            return
        now = datetime.datetime.utcnow().strftime("%Y%m%dT%H%M%SZ")
        blob_name = f"{GCS_PREFIX}/{ts_label}/{now}.ndjson"
        blob = bucket.blob(blob_name)
        ndjson = "\n".join(json.dumps(r, separators=(",", ":")) for r in records)
        blob.upload_from_string(ndjson, content_type="application/x-ndjson")
        print(f"Wrote {len(records)} records to gs://{GCS_BUCKET}/{blob_name}")
    
    def main(event, context):
        """Cloud Run function entry point triggered by Pub/Sub."""
        client = _gcs_client()
        bucket = client.bucket(GCS_BUCKET)
    
        state = _load_state(bucket)
        sort_after = state.get("sort_after")
    
        if state.get("last_timestamp"):
            gte_ts = state["last_timestamp"]
        else:
            gte_ts = (
                datetime.datetime.utcnow()
                - datetime.timedelta(hours=LOOKBACK_HOURS)
            ).strftime("%Y-%m-%dT%H:%M:%S.%fZ")
    
        session = requests.Session()
        total = 0
        batch = []
        last_ts = gte_ts
        ts_label = datetime.datetime.utcnow().strftime("%Y/%m/%d/%H")
    
        while total < MAX_RECORDS:
            body = _build_query(gte_ts, sort_after)
            result = _search(session, body)
            hits = result.get("hits", {}).get("hits", [])
    
            if not hits:
                break
    
            for hit in hits:
                doc = hit.get("_source", {})
                doc["_id"] = hit.get("_id")
                doc["_index"] = hit.get("_index")
                batch.append(doc)
    
                hit_ts = doc.get("@timestamp", last_ts)
                if hit_ts > last_ts:
                    last_ts = hit_ts
    
            sort_after = hits[-1].get("sort")
            total += len(hits)
    
            if len(batch) >= PAGE_SIZE:
                _write_ndjson(bucket, batch, ts_label)
                batch = []
    
            if len(hits) < PAGE_SIZE:
                break
    
        if batch:
            _write_ndjson(bucket, batch, ts_label)
    
        new_state = {
            "last_timestamp": last_ts,
            "sort_after": sort_after,
        }
        _save_state(bucket, new_state)
        print(f"Done. Fetched {total} records. State: {json.dumps(new_state)}")
        return f"OK: {total} records"
    
  5. requirements.txt の内容を次のように置き換えます。

    functions-framework==3.*
    google-cloud-storage==2.*
    requests==2.*
    
  6. [デプロイ] をクリックします。

  7. デプロイが正常に完了するまで待ちます。

Cloud Scheduler ジョブの作成

Cloud Scheduler ジョブを作成して、Cloud Run functions の関数を定期的にトリガーする。

  1. Google Cloud コンソールで、[Cloud Scheduler] に移動します。
  2. [ジョブを作成] をクリックします。
  3. 次の構成情報を提供してください。

    設定
    名前 elastic-defend-scheduler
    リージョン Cloud Run functions と同じリージョンを選択する
    周波数 */5 * * * *(5 分ごと)
    タイムゾーン タイムゾーンを選択します(例: UTC
  4. [続行] をクリックします。

  5. [実行を構成する] セクションで、次の操作を行います。

    • ターゲット タイプ: [Pub/Sub] を選択します。
    • Cloud Pub/Sub トピック: elastic-defend-trigger を選択します。
    • メッセージ本文: 「{"run": true}」と入力します。
  6. [作成] をクリックします。

Google SecOps サービス アカウントを取得してフィードを構成する

Google SecOps は、一意のサービス アカウントを使用して GCS バケットからデータを読み取ります。このサービス アカウントにバケットへのアクセス権を付与する必要があります。

サービス アカウントのメールアドレスを取得する

  1. [SIEM 設定] > [フィード] に移動します。
  2. [Add New Feed] をクリックします。
  3. [単一フィードを設定] をクリックします。
  4. [フィード名] フィールドに、フィードの名前を入力します(例: Elastic Defend Events)。
  5. [ソースタイプ] として [Google Cloud Storage V2] を選択します。
  6. [ログタイプ] として [Elastic Defend] を選択します。
  7. [サービス アカウントを取得する] をクリックします。一意のサービス アカウント メールアドレスが表示されます(例:)。

    chronicle-12345678@chronicle-gcp-prod.iam.gserviceaccount.com
    
  8. このメールアドレスをコピーして、次のステップで使用します。

フィードを構成する

  1. [次へ] をクリックします。
  2. 次の入力パラメータの値を指定します。

    • ストレージ バケットの URL: 接頭辞パスを含む GCS バケット URI を入力します。

      gs://elastic-defend-logs/elastic-defend/
      

      elastic-defend-logs は、実際の GCS バケット名に置き換えます。

    • Source deletion option: 必要に応じて削除オプションを選択します。

      • なし: 転送後にファイルを削除しません(テストにおすすめ)。
      • 転送されたファイルを削除する: 転送が完了した後にファイルを削除します。
      • 転送されたファイルと空のディレクトリを削除する: 転送が完了した後にファイルと空のディレクトリを削除します。

    • ファイルの最大経過日数: 指定した日数以内に変更されたファイルを含めます(デフォルトは 180 日)。

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

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

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

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

Google SecOps サービス アカウントに IAM 権限を付与する

Google SecOps サービス アカウントには、GCS バケットに対する Storage オブジェクト閲覧者ロールが必要です。

  1. [Cloud Storage] > [バケット] に移動します。
  2. バケット名(例: elastic-defend-logs)をクリックします。
  3. [権限] タブに移動します。
  4. [アクセス権を付与] をクリックします。
  5. 次の構成の詳細を指定します。
    • プリンシパルを追加: Google SecOps サービス アカウントのメールアドレスを貼り付けます。
    • ロールを割り当てる: [Storage オブジェクト閲覧者] を選択します。
  6. [保存] をクリックします。

UDM マッピング テーブル

ログフィールド UDM マッピング ロジック
_source.agent.id、_source.agent.type、_source.agent.version、_source.host.architecture、_source.event.agent_id_status、_source.event.id、_source.user.id、_source.group.id、_source.data_stream.type、_source.agent.build.original additional.fields リストされたフィールドの値を含むラベル オブジェクトと統合されます
_source.process.Ext.session_info.logon_type extensions.auth.auth_details 値を直接コピー
_source.host.os.full hardware.cpu_platform 値を直接コピー
_source.host.id hardware.serial_number 値を直接コピー
_source.rule.description metadata.description 値を直接コピー
_source.@timestamp metadata.event_timestamp ISO8601、yyyy-MM-ddTHH:mm:ss.SSSSSSSSSZ、yyyy-MM-ddTHH:mm:ss.SSSSSSZ、yyyy-MM-ddTHH:mm:ss.SSSZ、yyyy-MM-ddTHH:mm:ssZ 形式の日付フィルタを使用して変換
metadata.event_type index、event.action、has* の条件に基づいて設定
metadata.log_type 「ELASTIC_DEFEND」に設定
metadata.product_event_type _index ~ events.file の場合は「File Events」、events.library の場合は「Library Events」、events.network の場合は「Network Events」、events.process の場合は「Process Events」、events.registry の場合は「Registry Events」、events.security の場合は「Security Events」、events.api の場合は「API Events」、.alert の場合は「Alerts」に設定します。
_id metadata.product_log_id ["", " ", "null", "N/A"] に含まれていない場合は _id の値
_source.ecs.version metadata.product_version 値を直接コピー
_source.network.type network.application_protocol_version 値を直接コピー
_source.network.transport network.ip_protocol (?i)tcp と一致する場合は「TCP」、(?i)udp と一致する場合は「UDP」、(?i)icmp と一致する場合は「ICMP」、それ以外の場合は「UNKNOWN_IP_PROTOCOL」に設定します。
_source.destination.as.organization.name network.organization_name 値を直接コピー
_source.Endpoint.policy.applied.artifacts.global.identifiers observer.file.names _source.Endpoint.policy.applied.artifacts.global.identifiers から統合されました
_source.Endpoint.policy.applied.artifacts.global.version、_source.Endpoint.policy.applied.artifacts.global.snapshot observer.resource.attribute.labels リストされたフィールドの値を含むラベル オブジェクトと統合されます
_source.Endpoint.policy.applied.artifacts.user.version observer.user.attribute.labels _source.Endpoint.policy.applied.artifacts.user.version の値を含むラベル オブジェクトと統合
_source.host.os.full principal.asset.hardware.cpu_platform 値を直接コピー
_source.host.id principal.asset.hardware.serial_number 値を直接コピー
_source.host.name principal.asset.hostname 値を直接コピー
_source.host.ip principal.asset.ip _source.host.ip から統合
_source.host.os.type principal.asset.platform_software.platform (?i)windows と一致する場合は「WINDOWS」、(?i)linux と一致する場合は「LINUX」、(?i)mac と一致する場合は「MAC」、(?i)ios と一致する場合は「IOS」、それ以外の場合は「UNKNOWN_PLATFORM」に設定します。
_source.host.os.kernel principal.asset.platform_software.platform_patch_level 値を直接コピー
_source.event.created principal.domain.creation_time ISO8601、yyyy-MM-ddTHH:mm:ss.SSSSSSSSSZ、yyyy-MM-ddTHH:mm:ss.SSSSSSZ、yyyy-MM-ddTHH:mm:ss.SSSZ、yyyy-MM-ddTHH:mm:ssZ 形式の日付フィルタを使用して変換されました
_source.user.domain principal.domain.name 値を直接コピー
_source.process.thread.capabilities.effective principal.file.capabilities_tags _source.process.thread.capabilities.effective から統合
_source.process.executable principal.file.full_path 値を直接コピー
_source.process.hash.md5 principal.file.md5 値を直接コピー
_source.file.name principal.file.names _source.file.name から統合されました
_source.process.hash.sha1 principal.file.sha1 値を直接コピー
_source.process.hash.sha256 principal.file.sha256 値を直接コピー
_source.host.hostname principal.hostname 値を直接コピー
_source.host.ip principal.ip _source.host.ip から統合
_source.host.mac principal.mac - を : に置き換えた後、_source.host.mac から統合されました
_source.host.os.Ext.variant principal.platform_version 値を直接コピー
_source.source.port principal.port 文字列に変換してから整数に変換
_source.process.command_line, _source.process.name principal.process.command_line _source.process.command_line が空でない場合はその値、空の場合は _source.process.name の値
_source.process.thread.capabilities.permitted principal.process.file.capabilities_tags _source.process.thread.capabilities.permitted から統合
_source.process.executable principal.process.file.full_path 値を直接コピー
_source.process.hash.md5 principal.process.file.md5 値を直接コピー
_source.process.hash.sha1 principal.process.file.sha1 値を直接コピー
_source.process.hash.sha256 principal.process.file.sha256 値を直接コピー
_source.process.parent.executable principal.process.parent_process.file.full_path 値を直接コピー
_source.process.pid principal.process.pid 文字列に変換してコピー
_source.process.Ext.api.name principal.resource.attribute.labels _source.process.Ext.api.name の値を含むラベル オブジェクトと統合
_source.event.code principal.resource.product_object_id 値を直接コピー
_source.group.name principal.user.group_identifiers _source.group.name から統合
_source.user.name principal.user.userid 値を直接コピー
_source.user.id principal.user.windows_sid 正規表現 ^S-\\d-(\\\\d+-){1,14}\\\\d+$ と一致する場合の _source.user.id の値
_source.file.Ext.malware_signature.primary.signature.hash.sha256 security_result.about.file.sha256 値を直接コピー
_source.event.outcome security_result.action _source.event.outcome の値を大文字に変換し、[SUCCESS, ALLOW] に含まれる場合は ALLOW、[FAILURE, DENY, SKIPPED, RATE_LIMIT] に含まれる場合は BLOCK、UNKNOWN の場合は UNKNOWN_ACTION に設定します。
_source.event.action security_result.action_details 値を直接コピー
_source.destination.geo.region_iso_code security_result.associations _source.destination.geo.region_iso_code の名前を含むオブジェクトと統合されました
_source.kibana.alert.rule.parameters.threat.tactic.id, _source.kibana.alert.rule.parameters.threat.tactic.name security_result.attack_details.tactics リストされたフィールドの ID と名前を含むオブジェクトとマージされました
_source.kibana.alert.rule.parameters.threat.technique.id, _source.kibana.alert.rule.parameters.threat.technique.name, _source.kibana.alert.rule.parameters.threat.technique.subtechnique.id, _source.kibana.alert.rule.parameters.threat.technique.subtechnique.name security_result.attack_details.techniques リストされたフィールドの id、name、subtechnique_id、subtechnique_name を含むオブジェクトと統合
_source.event.category security_result.category_details _source.event.category から統合
_source.kibana.alert.rule.description security_result.description 値を直接コピー
_source.event.kind, _source.file.Ext.malware_signature.all_names, _source.file.Ext.malware_signature.identifier, _source.event.risk_score, _source.threat.tactic.reference, _source.threat.technique.reference, _source.threat.technique.subtechnique.reference security_result.detection_fields リストされたフィールドの値を含むラベル オブジェクトと統合されます
_source.rule.id、_source.kibana.alert.rule.rule_id security_result.rule_id _source.rule.id が空でない場合はその値、それ以外の場合は _source.kibana.alert.rule.rule_id の値
_source.rule.name、_source.kibana.alert.rule.name security_result.rule_name _source.rule.name が空でない場合はその値、空の場合は _source.kibana.alert.rule.name の値
_source.rule.ruleset security_result.rule_set 値を直接コピー
security_result.severity 「LOW」に設定します。_index が .alert と一致する場合は「HIGH」に設定します。_source.kibana.alert.rule.parameters.severity が (?i)LOW と一致する場合は「LOW」に設定します。
_source.message security_result.summary 値を直接コピー
_source.file.Ext.malware_signature.primary.signature.id security_result.threat_id 値を直接コピー
_source.file.Ext.malware_signature.primary.signature.name security_result.threat_name 値を直接コピー
_source.source.address, _source.source.ip src.asset.ip _source.source.address と _source.source.ip から統合
_source.source.address, _source.source.ip src_ip _source.source.address と _source.source.ip から統合
_source.host.name target.asset.hostname 値を直接コピー
_source.destination.address、_source.destination.ip target.asset.ip _source.destination.address と _source.destination.ip から統合
_source.file.path、_source.dll.path、_source.process.executable、_source.Target.process.executable target.file.full_path events.file の場合は _source.file.path、events.library の場合は _source.dll.path、events.process または events.api の場合は _source.process.executable、events.api の場合は _source.Target.process.executable の値
_source.dll.hash.md5、_source.process.hash.md5 target.file.md5 events.library の場合は _source.dll.hash.md5、.alert の場合は _source.process.hash .md5 の値
_source.dll.name、_source.process.name target.file.names events.library の場合は _source.dll.name、.alert の場合は _source.process .name からマージされます
_source.dll.hash.sha1、_source.process.hash.sha1 target.file.sha1 events.library の場合は _source.dll.hash.sha1、.alert の場合は _source.process.hash .sha1 の値
_source.dll.hash.sha256、_source.process.hash.sha256 target.file.sha256 events.library の場合は _source.dll.hash.sha256 の値、.alert の場合は _source.process.hash .sha256 の値
_source.host.name target.hostname 値を直接コピー
_source.destination.address、_source.destination.ip target.ip _source.destination.address と _source.destination.ip から統合
_source.destination.geo.city_name target.location.city 値を直接コピー
_source.destination.geo.country_name target.location.country_or_region 値を直接コピー
_source.destination.geo.continent_name target.location.name 値を直接コピー
_source.destination.geo.location.lat target.location.region_coordinates.latitude 文字列に変換してから浮動小数点数に変換
_source.destination.geo.location.lon target.location.region_coordinates.longitude 文字列に変換してから浮動小数点数に変換
_source.destination.geo.region_name target.location.state 値を直接コピー
_source.data_stream.namespace target.namespace 値を直接コピー
_source.destination.port target.port 文字列に変換してから整数に変換
_source.process.command_line target.process.command_line 値を直接コピー
_source.process.executable target.process.file.full_path 値を直接コピー
_source.process.hash.md5 target.process.file.md5 値を直接コピー
_source.process.hash.sha1 target.process.file.sha1 値を直接コピー
_source.process.hash.sha256 target.process.file.sha256 値を直接コピー
_source.process.name target.process.file.names _source.process.name から統合されました
_source.registry.key target.registry.registry_key 値を直接コピー
_source.registry.path target.registry.registry_value_data 値を直接コピー
_source.registry.value target.registry.registry_value_name 値を直接コピー
_source.data_stream.dataset target.resource.name 値を直接コピー
_source.process.entity_id target.user.userid 値を直接コピー
metadata.product_name 「Elastic Defend」に設定
metadata.vendor_name 「Elastic」に設定

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