Mengumpulkan log Elastic Defend

Didukung di:

Dokumen ini menjelaskan cara menyerap log Elastic Defend ke Google Security Operations menggunakan Google Cloud Storage V2 dengan fungsi Cloud Run.

Elastic Defend adalah solusi deteksi dan respons endpoint (EDR) dalam Elastic Security yang menyediakan kemampuan pencegahan, deteksi, dan respons dengan visibilitas mendalam di seluruh sistem operasi Windows, macOS, dan Linux. EDR memantau eksekusi proses, aktivitas file, koneksi jaringan, modifikasi registri, dan pemuatan library untuk mendeteksi dan mencegah ancaman di tingkat endpoint. Data disimpan di Elasticsearch dan dapat diambil menggunakan Elasticsearch Search API.

Sebelum memulai

Pastikan Anda memiliki prasyarat berikut:

  • Instance Google SecOps
  • Project Google Cloud dengan API berikut diaktifkan:
    • Cloud Storage
    • Cloud Run Functions
    • Cloud Scheduler
    • Pub/Sub
    • IAM
  • Akses ke cluster Elasticsearch dengan Elastic Defend yang di-deploy
  • Izin untuk membuat kunci API di Elasticsearch (hak istimewa cluster manage_security, manage_api_key, atau manage_own_api_key)
  • Konektivitas jaringan dari Cloud Run Functions ke cluster Elasticsearch Anda

Membuat bucket Google Cloud Storage

  1. Buka Konsol Google Cloud.
  2. Pilih project Anda atau buat project baru.
  3. Di menu navigasi, buka Cloud Storage > Buckets.
  4. Klik Create bucket.
  5. Berikan detail konfigurasi berikut:

    Setelan Nilai
    Beri nama bucket Anda Masukkan nama yang unik secara global (misalnya, elastic-defend-logs)
    Location type Pilih berdasarkan kebutuhan Anda (Region, Dual-region, Multi-region)
    Location Pilih lokasi (misalnya, us-central1)
    Kelas penyimpanan Standar (direkomendasikan untuk log yang sering diakses)
    Access control Seragam (direkomendasikan)
    Alat perlindungan Opsional: Aktifkan pembuatan versi objek atau kebijakan retensi
  6. Klik Create.

Mengumpulkan kredensial Elastic Defend

Agar fungsi Cloud Run dapat mengambil peristiwa Elastic Defend, Anda perlu membuat kunci API dengan izin baca pada aliran data logs-endpoint.

Membuat kunci API menggunakan Kibana

  1. Login ke Kibana.
  2. Di menu navigasi atau kolom penelusuran global, buka Stack Management > API Keys.
  3. Klik Buat kunci API.
  4. Di kolom Name, masukkan Google SecOps Cloud Storage Integration.
  5. Di kolom Masa berlaku, Anda dapat menetapkan tanggal habis masa berlaku. Secara default, masa berlaku kunci API tidak berakhir.
  6. Klik Kontrol hak istimewa keamanan.
  7. Di bagian Indeks, klik Tambahkan hak istimewa indeks.
  8. Konfigurasi hak istimewa indeks:
    • Indeks: Masukkan logs-endpoint.*
    • Hak istimewa: Pilih baca
  9. Kosongkan bagian Hak istimewa cluster (tidak ada hak istimewa cluster yang diperlukan).
  10. Klik Buat kunci API.

Mencatat kredensial API

Setelah membuat kunci API, dialog akan menampilkan kredensial Anda:

  • Dienkode: Kunci API yang dienkode base64 (misalnya, VnVhQ2ZHY0JDZGJrUW0tZTVhT3g6dWkybHAyYXhUTm1zeWFrdzl0dk5udw==)

    Anda juga perlu mencatat URL endpoint Elasticsearch:

  • Untuk Elastic Cloud: Endpoint ditampilkan di Konsol Cloud di bagian Elasticsearch deployment Anda (misalnya, https://my-deployment.es.us-central1.gcp.cloud.es.io:443)

  • Untuk Elasticsearch yang dikelola sendiri: Gunakan nama host atau alamat IP cluster Elasticsearch Anda dengan port (misalnya, https://elasticsearch.example.com:9200)

Membuat kunci API menggunakan Alat Dev (metode alternatif)

Atau, Anda dapat membuat kunci API menggunakan Kibana Dev Tools:

  1. Login ke Kibana.
  2. Buka Pengelolaan > Alat Dev.
  3. Di Konsol, jalankan perintah berikut:

    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. Respons berisi kredensial kunci API Anda:

    {
      "id": "VuaCfGcBCdbkQm-e5aOx",
      "name": "Google SecOps Cloud Storage Integration",
      "api_key": "ui2lp2axTNmsyakw9tvNnw",
      "encoded": "VnVhQ2ZHY0JDZGJrUW0tZTVhT3g6dWkybHAyYXhUTm1zeWFrdzl0dk5udw=="
    }
    
  5. Salin dan simpan nilai encoded. Ini adalah kunci API berenkode base64 yang akan Anda gunakan untuk autentikasi.

Membuat akun layanan

Buat akun layanan khusus untuk fungsi Cloud Run.

  1. Di Konsol Google Cloud, buka IAM & Admin > Service Accounts.
  2. Klik Create Service Account.
  3. Berikan detail konfigurasi berikut:
    • Nama akun layanan: Masukkan elastic-defend-collector
    • Deskripsi akun layanan: Masukkan Service account for Elastic Defend log collection to GCS
  4. Klik Create and Continue.
  5. Di bagian Berikan akun layanan ini akses ke project, tambahkan peran berikut:
    1. Klik Select a role, lalu pilih Storage Object Admin (roles/storage.objectAdmin).
    2. Klik Add another role, lalu pilih Cloud Run Invoker (roles/run.invoker).
  6. Klik Lanjutkan.
  7. Klik Done.

Membuat topik Pub/Sub

Buat topik Pub/Sub untuk memicu fungsi Cloud Run dari Cloud Scheduler.

  1. Di konsol Google Cloud, buka Pub/Sub > Topics.
  2. Klik Buat Topik.
  3. Berikan detail konfigurasi berikut:
    • ID Topik: Masukkan elastic-defend-trigger
    • Tambahkan langganan default: Biarkan dicentang
  4. Klik Create.

Membuat fungsi Cloud Run

Buat fungsi Cloud Run yang mengambil peristiwa dari Elasticsearch dan menuliskannya ke GCS.

Membuat fungsi

  1. Di konsol Google Cloud, buka Cloud Run functions.
  2. Klik Create function.
  3. Berikan detail konfigurasi berikut:

    Setelan Nilai
    Lingkungan Generasi ke-2
    Nama fungsi elastic-defend-to-gcs
    Region Pilih region yang sama dengan bucket GCS Anda
    Jenis pemicu Cloud Pub/Sub
    Topik Cloud Pub/Sub Pilih elastic-defend-trigger
    Memori yang dialokasikan 512 MiB (peningkatan untuk volume data besar)
    Waktu tunggu 540 detik
    Akun layanan runtime Pilih elastic-defend-collector
  4. Klik Berikutnya.

Menambahkan variabel lingkungan

  • Tambahkan variabel lingkungan berikut di bagian Runtime, build, connections and security settings:

    Variabel Nilai
    GCS_BUCKET Nama bucket GCS Anda (misalnya, elastic-defend-logs)
    GCS_PREFIX Awalan untuk file log (misalnya, elastic-defend)
    STATE_KEY Nama file status (misalnya, state.json)
    ES_HOST URL Elasticsearch (misalnya, https://my-deployment.es.us-central1.gcp.cloud.es.io:443)
    ES_API_KEY Kunci API yang dienkode dari langkah pembuatan kredensial
    MAX_RECORDS Jumlah maksimum data per eksekusi (misalnya, 100000)
    PAGE_SIZE Jumlah catatan per permintaan penelusuran (misalnya, 1000)
    LOOKBACK_HOURS Jumlah jam untuk melihat kembali saat pertama kali dijalankan (misalnya, 24)

Tambahkan kode fungsi

  1. Pilih Python 3.11 sebagai Runtime.
  2. Tetapkan Entry point ke main.
  3. Di bagian Kode sumber, pilih Editor Inline.
  4. Ganti konten main.py dengan kode berikut:

    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. Ganti konten requirements.txt dengan konten berikut:

    functions-framework==3.*
    google-cloud-storage==2.*
    requests==2.*
    
  6. Klik Deploy.

  7. Tunggu hingga deployment berhasil diselesaikan.

Buat tugas Cloud Scheduler

Buat tugas Cloud Scheduler untuk memicu fungsi Cloud Run sesuai jadwal reguler.

  1. Di konsol Google Cloud, buka Cloud Scheduler.
  2. Klik Create Job.
  3. Berikan detail konfigurasi berikut:

    Setelan Nilai
    Nama elastic-defend-scheduler
    Region Pilih region yang sama dengan fungsi Cloud Run Anda
    Frekuensi */5 * * * * (setiap 5 menit)
    Zona Waktu Pilih zona waktu Anda (misalnya, UTC)
  4. Klik Lanjutkan.

  5. Di bagian Konfigurasi eksekusi:

    • Jenis target: Pilih Pub/Sub
    • Topik Cloud Pub/Sub: Pilih elastic-defend-trigger
    • Isi pesan: Masukkan {"run": true}
  6. Klik Create.

Mengambil akun layanan Google SecOps dan mengonfigurasi feed

Google SecOps menggunakan akun layanan unik untuk membaca data dari bucket GCS Anda. Anda harus memberi akun layanan ini akses ke bucket Anda.

Dapatkan email akun layanan

  1. Buka Setelan SIEM > Feed.
  2. Klik Tambahkan Feed Baru.
  3. Klik Konfigurasi satu feed.
  4. Di kolom Nama feed, masukkan nama untuk feed (misalnya, Elastic Defend Events).
  5. Pilih Google Cloud Storage V2 sebagai Source type.
  6. Pilih Elastic Defend sebagai Jenis log.
  7. Klik Get Service Account. Email akun layanan yang unik akan ditampilkan, misalnya:

    chronicle-12345678@chronicle-gcp-prod.iam.gserviceaccount.com
    
  8. Salin alamat email ini untuk digunakan di langkah berikutnya.

Mengonfigurasi feed

  1. Klik Berikutnya.
  2. Tentukan nilai untuk parameter input berikut:

    • URL bucket penyimpanan: Masukkan URI bucket GCS dengan jalur awalan:

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

      Ganti elastic-defend-logs dengan nama bucket GCS Anda.

    • Opsi penghapusan sumber: Pilih opsi penghapusan sesuai preferensi Anda:

      • Jangan pernah: Tidak pernah menghapus file apa pun setelah transfer (direkomendasikan untuk pengujian).
      • Hapus file yang ditransfer: Menghapus file setelah transfer berhasil.
      • Hapus file yang ditransfer dan direktori kosong: Menghapus file dan direktori kosong setelah transfer berhasil.

    • Usia File Maksimum: Menyertakan file yang diubah dalam beberapa hari terakhir (defaultnya adalah 180 hari)

    • Namespace aset: Namespace aset

    • Label penyerapan: Label yang akan diterapkan ke peristiwa dari feed ini

  3. Klik Berikutnya.

  4. Tinjau konfigurasi feed baru Anda di layar Selesaikan, lalu klik Kirim.

Memberikan izin IAM ke akun layanan Google SecOps

Akun layanan Google SecOps memerlukan peran Storage Object Viewer di bucket GCS Anda.

  1. Buka Cloud Storage > Buckets.
  2. Klik nama bucket Anda (misalnya, elastic-defend-logs).
  3. Buka tab Izin.
  4. Klik Grant access.
  5. Berikan detail konfigurasi berikut:
    • Add principals: Tempel email akun layanan Google SecOps
    • Tetapkan peran: Pilih Storage Object Viewer
  6. Klik Simpan.

Tabel pemetaan UDM

Kolom Log Pemetaan UDM Logika
_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 Digabungkan dengan objek label yang berisi nilai dari kolom yang tercantum
_source.process.Ext.session_info.logon_type extensions.auth.auth_details Nilai disalin secara langsung
_source.host.os.full hardware.cpu_platform Nilai disalin secara langsung
_source.host.id hardware.serial_number Nilai disalin secara langsung
_source.rule.description metadata.description Nilai disalin secara langsung
_source.@timestamp metadata.event_timestamp Dikonversi menggunakan filter tanggal dengan format 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 Ditetapkan berdasarkan kondisi index, event.action, dan has*
metadata.log_type Tetapkan ke "ELASTIC_DEFEND"
metadata.product_event_type Disetel ke "File Events" jika _index ~ events.file; "Library Events" jika events.library; "Network Events" jika events.network; "Process Events" jika events.process; "Registry Events" jika events.registry; "Security Events" jika events.security; "API Events" jika events.api; "Alerts" jika .alert
_id metadata.product_log_id Nilai dari _id jika tidak ada di ["", " ", "null", "T/A"]
_source.ecs.version metadata.product_version Nilai disalin secara langsung
_source.network.type network.application_protocol_version Nilai disalin secara langsung
_source.network.transport network.ip_protocol Ditetapkan ke "TCP" jika cocok dengan (?i)tcp; "UDP" jika (?i)udp; "ICMP" jika (?i)icmp; jika tidak, "UNKNOWN_IP_PROTOCOL"
_source.destination.as.organization.name network.organization_name Nilai disalin secara langsung
_source.Endpoint.policy.applied.artifacts.global.identifiers observer.file.names Digabungkan dari _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 Digabungkan dengan objek label yang berisi nilai dari kolom yang tercantum
_source.Endpoint.policy.applied.artifacts.user.version observer.user.attribute.labels Digabungkan dengan objek label yang berisi nilai dari _source.Endpoint.policy.applied.artifacts.user.version
_source.host.os.full principal.asset.hardware.cpu_platform Nilai disalin secara langsung
_source.host.id principal.asset.hardware.serial_number Nilai disalin secara langsung
_source.host.name principal.asset.hostname Nilai disalin secara langsung
_source.host.ip principal.asset.ip Digabungkan dari _source.host.ip
_source.host.os.type principal.asset.platform_software.platform Tetapkan ke "WINDOWS" jika cocok dengan (?i)windows; "LINUX" jika (?i)linux; "MAC" jika (?i)mac; "IOS" jika (?i)ios; atau "UNKNOWN_PLATFORM"
_source.host.os.kernel principal.asset.platform_software.platform_patch_level Nilai disalin secara langsung
_source.event.created principal.domain.creation_time Dikonversi menggunakan filter tanggal dengan format 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 Nilai disalin secara langsung
_source.process.thread.capabilities.effective principal.file.capabilities_tags Digabungkan dari _source.process.thread.capabilities.effective
_source.process.executable principal.file.full_path Nilai disalin secara langsung
_source.process.hash.md5 principal.file.md5 Nilai disalin secara langsung
_source.file.name principal.file.names Digabungkan dari _source.file.name
_source.process.hash.sha1 principal.file.sha1 Nilai disalin secara langsung
_source.process.hash.sha256 principal.file.sha256 Nilai disalin secara langsung
_source.host.hostname principal.hostname Nilai disalin secara langsung
_source.host.ip principal.ip Digabungkan dari _source.host.ip
_source.host.mac principal.mac Digabungkan dari _source.host.mac setelah mengganti - dengan :
_source.host.os.Ext.variant principal.platform_version Nilai disalin secara langsung
_source.source.port principal.port Dikonversi ke string, lalu ke bilangan bulat
_source.process.command_line, _source.process.name principal.process.command_line Nilai dari _source.process.command_line jika tidak kosong, atau dari _source.process.name
_source.process.thread.capabilities.permitted principal.process.file.capabilities_tags Digabungkan dari _source.process.thread.capabilities.permitted
_source.process.executable principal.process.file.full_path Nilai disalin secara langsung
_source.process.hash.md5 principal.process.file.md5 Nilai disalin secara langsung
_source.process.hash.sha1 principal.process.file.sha1 Nilai disalin secara langsung
_source.process.hash.sha256 principal.process.file.sha256 Nilai disalin secara langsung
_source.process.parent.executable principal.process.parent_process.file.full_path Nilai disalin secara langsung
_source.process.pid principal.process.pid Dikonversi menjadi string, lalu disalin
_source.process.Ext.api.name principal.resource.attribute.labels Digabungkan dengan objek label yang berisi nilai dari _source.process.Ext.api.name
_source.event.code principal.resource.product_object_id Nilai disalin secara langsung
_source.group.name principal.user.group_identifiers Digabungkan dari _source.group.name
_source.user.name principal.user.userid Nilai disalin secara langsung
_source.user.id principal.user.windows_sid Nilai dari _source.user.id jika cocok dengan ekspresi reguler ^S-\\d-(\\\\d+-){1,14}\\\\d+$
_source.file.Ext.malware_signature.primary.signature.hash.sha256 security_result.about.file.sha256 Nilai disalin secara langsung
_source.event.outcome security_result.action Nilai dari _source.event.outcome, huruf besar, lalu disetel ke ALLOW jika dalam [SUCCESS, ALLOW], BLOCK jika dalam [FAILURE, DENY, SKIPPED, RATE_LIMIT], UNKNOWN_ACTION jika UNKNOWN
_source.event.action security_result.action_details Nilai disalin secara langsung
_source.destination.geo.region_iso_code security_result.associations Digabungkan dengan objek yang berisi nama dari _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 Digabungkan dengan objek yang berisi ID dan nama dari kolom yang tercantum
_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 Digabungkan dengan objek yang berisi id, name, subtechnique_id, subtechnique_name dari kolom yang tercantum
_source.event.category security_result.category_details Digabungkan dari _source.event.category
_source.kibana.alert.rule.description security_result.description Nilai disalin secara langsung
_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 Digabungkan dengan objek label yang berisi nilai dari kolom yang tercantum
_source.rule.id, _source.kibana.alert.rule.rule_id security_result.rule_id Nilai dari _source.rule.id jika tidak kosong, atau dari _source.kibana.alert.rule.rule_id
_source.rule.name, _source.kibana.alert.rule.name security_result.rule_name Nilai dari _source.rule.name jika tidak kosong, atau dari _source.kibana.alert.rule.name
_source.rule.ruleset security_result.rule_set Nilai disalin secara langsung
security_result.severity Tetapkan ke "LOW"; jika _index cocok dengan .alert, tetapkan ke "HIGH"; jika _source.kibana.alert.rule.parameters.severity cocok dengan (?i)LOW, tetapkan ke "LOW"
_source.message security_result.summary Nilai disalin secara langsung
_source.file.Ext.malware_signature.primary.signature.id security_result.threat_id Nilai disalin secara langsung
_source.file.Ext.malware_signature.primary.signature.name security_result.threat_name Nilai disalin secara langsung
_source.source.address, _source.source.ip src.asset.ip Digabungkan dari _source.source.address dan _source.source.ip
_source.source.address, _source.source.ip src.ip Digabungkan dari _source.source.address dan _source.source.ip
_source.host.name target.asset.hostname Nilai disalin secara langsung
_source.destination.address, _source.destination.ip target.asset.ip Digabungkan dari _source.destination.address dan _source.destination.ip
_source.file.path, _source.dll.path, _source.process.executable, _source.Target.process.executable target.file.full_path Nilai dari _source.file.path jika events.file, _source.dll.path jika events.library, _source.process.executable jika events.process atau events.api, _source.Target.process.executable jika events.api
_source.dll.hash.md5, _source.process.hash.md5 target.file.md5 Nilai dari _source.dll.hash.md5 jika events.library, _source.process.hash.md5 jika .alert
_source.dll.name, _source.process.name target.file.names Digabungkan dari _source.dll.name jika events.library, _source.process.name jika .alert
_source.dll.hash.sha1, _source.process.hash.sha1 target.file.sha1 Nilai dari _source.dll.hash.sha1 jika events.library, _source.process.hash.sha1 jika .alert
_source.dll.hash.sha256, _source.process.hash.sha256 target.file.sha256 Nilai dari _source.dll.hash.sha256 jika events.library, _source.process.hash.sha256 jika .alert
_source.host.name target.hostname Nilai disalin secara langsung
_source.destination.address, _source.destination.ip target.ip Digabungkan dari _source.destination.address dan _source.destination.ip
_source.destination.geo.city_name target.location.city Nilai disalin secara langsung
_source.destination.geo.country_name target.location.country_or_region Nilai disalin secara langsung
_source.destination.geo.continent_name target.location.name Nilai disalin secara langsung
_source.destination.geo.location.lat target.location.region_coordinates.latitude Dikonversi menjadi string, lalu menjadi float
_source.destination.geo.location.lon target.location.region_coordinates.longitude Dikonversi menjadi string, lalu menjadi float
_source.destination.geo.region_name target.location.state Nilai disalin secara langsung
_source.data_stream.namespace target.namespace Nilai disalin secara langsung
_source.destination.port target.port Dikonversi ke string, lalu ke bilangan bulat
_source.process.command_line target.process.command_line Nilai disalin secara langsung
_source.process.executable target.process.file.full_path Nilai disalin secara langsung
_source.process.hash.md5 target.process.file.md5 Nilai disalin secara langsung
_source.process.hash.sha1 target.process.file.sha1 Nilai disalin secara langsung
_source.process.hash.sha256 target.process.file.sha256 Nilai disalin secara langsung
_source.process.name target.process.file.names Digabungkan dari _source.process.name
_source.registry.key target.registry.registry_key Nilai disalin secara langsung
_source.registry.path target.registry.registry_value_data Nilai disalin secara langsung
_source.registry.value target.registry.registry_value_name Nilai disalin secara langsung
_source.data_stream.dataset target.resource.name Nilai disalin secara langsung
_source.process.entity_id target.user.userid Nilai disalin secara langsung
metadata.product_name Ditetapkan ke "Elastic Defend"
metadata.vendor_name Ditetapkan ke "Elastis"

Perlu bantuan lain? Dapatkan jawaban dari anggota Komunitas dan profesional Google SecOps.