איסוף יומנים של Elastic Defend
גרסת כלי הניתוח: 5.0
במאמר הזה מוסבר איך להטמיע יומנים של Elastic Defend ב-Google Security Operations באמצעות Google Cloud Storage V2 עם פונקציית Cloud Run.
Elastic Defend הוא פתרון לזיהוי ותגובה בנקודות קצה (EDR) בתוך Elastic Security, שמספק יכולות מניעה, זיהוי ותגובה עם שקיפות מלאה במערכות ההפעלה Windows, macOS ו-Linux. הוא עוקב אחרי ביצוע תהליכים, פעילות בקבצים, חיבורים לרשת, שינויים ברישום וטעינות של ספריות כדי לזהות איומים ולמנוע אותם ברמת נקודת הקצה. הנתונים מאוחסנים ב-Elasticsearch ואפשר לאחזר אותם באמצעות Elasticsearch Search API.
לפני שמתחילים
חשוב לוודא שמתקיימות הדרישות המוקדמות הבאות:
- מופע של Google SecOps
- פרויקט ב-Google Cloud עם ממשקי ה-API הבאים שמופעלים בו:
- Cloud Storage
- פונקציות Cloud Run
- Cloud Scheduler
- Pub/Sub
- IAM
- גישה לאשכול Elasticsearch עם Elastic Defend שפרוס
- הרשאות ליצירת מפתחות API ב-Elasticsearch (
manage_security,manage_api_keyאו הרשאת אשכולmanage_own_api_key) - קישוריות רשת מפונקציות Cloud Run לאשכול Elasticsearch
יצירת קטגוריה של Google Cloud Storage
- נכנסים למסוף Google Cloud.
- בוחרים פרויקט או יוצרים פרויקט חדש.
- בתפריט הניווט, עוברים אל Cloud Storage > Buckets.
- לוחצים על Create bucket.
מספקים את פרטי ההגדרה הבאים:
הגדרה ערך Name your bucket (שם הקטגוריה) מזינים שם ייחודי גלובלית (לדוגמה, elastic-defend-logs)סוג המיקום בוחרים לפי הצרכים (אזור, שני אזורים, מספר אזורים) Location בוחרים את המיקום (לדוגמה, us-central1).סוג אחסון (storage class) רגיל (מומלץ ליומנים שמתבצעת אליהם גישה לעיתים קרובות) בקרת גישה אחיד (מומלץ) כלים להגנה אופציונלי: הפעלת ניהול גרסאות של אובייקטים או מדיניות שמירת נתונים לוחצים על יצירה.
איסוף פרטי כניסה של Elastic Defend
כדי לאפשר לפונקציית Cloud Run לאחזר אירועים של Elastic Defend, צריך ליצור מפתח API עם הרשאות קריאה בזרמי הנתונים של logs-endpoint.
יצירת מפתח API באמצעות Kibana
- נכנסים אל Kibana.
- בתפריט הניווט או בשדה החיפוש הגלובלי, עוברים אל Stack Management > API Keys.
- לוחצים על Create API key (יצירת מפתח API).
- בשדה Name, מזינים
Google SecOps Cloud Storage Integration. - בשדה Expiration (תפוגה), אפשר להגדיר תאריך תפוגה. כברירת מחדל, התוקף של מפתחות API לא פג.
- לוחצים על Control security privileges (שליטה בהרשאות אבטחה).
- בקטע Indices (אינדקסים), לוחצים על Add index privilege (הוספת הרשאת אינדקס).
- מגדירים את הרשאת האינדקס:
- מדדים: מזינים
logs-endpoint.* - הרשאות: בוחרים באפשרות קריאה
- מדדים: מזינים
- משאירים את הקטע הרשאות לאשכול ריק (לא נדרשות הרשאות לאשכול).
- לוחצים על Create API key (יצירת מפתח API).
תיעוד פרטי הכניסה ל-API
אחרי שיוצרים את מפתח ה-API, מוצגות פרטי הכניסה בתיבת דו-שיח:
Encoded: מפתח ה-API בקידוד Base64 (לדוגמה,
VnVhQ2ZHY0JDZGJrUW0tZTVhT3g6dWkybHAyYXhUTm1zeWFrdzl0dk5udw==)צריך גם לתעד את כתובת ה-URL של נקודת הקצה של Elasticsearch:
ב-Elastic Cloud: נקודת הקצה מוצגת במסוף Cloud בקטע Elasticsearch של הפריסה (לדוגמה,
https://my-deployment.es.us-central1.gcp.cloud.es.io:443)במקרה של Elasticsearch בניהול עצמי: משתמשים בשם המארח או בכתובת ה-IP של אשכול Elasticsearch עם יציאה (לדוגמה,
https://elasticsearch.example.com:9200)
יצירת מפתח API באמצעות כלי הפיתוח (שיטה חלופית)
אפשר גם ליצור מפתח API באמצעות כלי הפיתוח של Kibana:
- נכנסים אל Kibana.
- עוברים אל ניהול > כלים למפתחים.
במסוף, מריצים את הפקודה הבאה:
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" } }התשובה מכילה את פרטי הכניסה של מפתח ה-API:
{ "id": "VuaCfGcBCdbkQm-e5aOx", "name": "Google SecOps Cloud Storage Integration", "api_key": "ui2lp2axTNmsyakw9tvNnw", "encoded": "VnVhQ2ZHY0JDZGJrUW0tZTVhT3g6dWkybHAyYXhUTm1zeWFrdzl0dk5udw==" }מעתיקים את הערך encoded ושומרים אותו. זהו מפתח ה-API בקידוד Base64 שבו תשתמשו לאימות.
יצירת חשבון שירות
יוצרים חשבון שירות ייעודי לפונקציית Cloud Run.
- במסוף Google Cloud, עוברים אל IAM & Admin > Service Accounts.
- לוחצים על יצירת חשבון שירות.
- מספקים את פרטי ההגדרה הבאים:
- שם חשבון השירות: מזינים
elastic-defend-collector - תיאור חשבון השירות: מזינים
Service account for Elastic Defend log collection to GCS
- שם חשבון השירות: מזינים
- לוחצים על יצירה והמשך.
- בקטע Grant this service account access to project (מתן גישה של חשבון השירות הזה לפרויקט), מוסיפים את התפקידים הבאים:
- לוחצים על Select a role (בחירת תפקיד) ובוחרים באפשרות Storage Object Admin (אדמין של אובייקטים ב-Storage) (
roles/storage.objectAdmin). - לוחצים על Add another role ובוחרים באפשרות Cloud Run Invoker (
roles/run.invoker).
- לוחצים על Select a role (בחירת תפקיד) ובוחרים באפשרות Storage Object Admin (אדמין של אובייקטים ב-Storage) (
- לוחצים על Continue.
- לוחצים על סיום.
יצירת נושא Pub/Sub
יוצרים נושא Pub/Sub כדי להפעיל את פונקציית Cloud Run מ-Cloud Scheduler.
- במסוף Google Cloud, עוברים אל Pub/Sub > Topics.
- לוחצים על יצירת נושא.
- מספקים את פרטי ההגדרה הבאים:
- מזהה הנושא: מזינים
elastic-defend-trigger - הוספת מינוי ברירת מחדל: משאירים את התיבה מסומנת
- מזהה הנושא: מזינים
- לוחצים על יצירה.
יצירת פונקציית Cloud Run
יצירה של פונקציית Cloud Run שמחלצת אירועים מ-Elasticsearch וכותבת אותם ל-GCS.
יצירת הפונקציה
- במסוף Google Cloud, עוברים אל Cloud Run functions.
- לוחצים על יצירת פונקציה.
מספקים את פרטי ההגדרה הבאים:
הגדרה ערך סביבה דור שני שם הפונקציה elastic-defend-to-gcsאזור בוחרים את אותו אזור שבו נמצא מאגר GCS סוג הטריגר Cloud Pub/Sub נושא ב-Cloud Pub/Sub בחירת elastic-defend-triggerהזיכרון שהוקצה 512MiB (הגדלה לנפחי נתונים גדולים) פסק זמן 540 שניות חשבון שירות בזמן ריצה בחירת elastic-defend-collectorלוחצים על הבא.
הוספת משתני סביבה
מוסיפים את משתני הסביבה הבאים בקטע Runtime, build, connections and security settings (הגדרות של זמן ריצה, build, חיבורים ואבטחה):
משתנה ערך GCS_BUCKETהשם של קטגוריית ה-GCS (לדוגמה, elastic-defend-logs)GCS_PREFIXתחילית לקובצי יומן (לדוגמה, elastic-defend)STATE_KEYשם קובץ תמונת המצב (לדוגמה, state.json)ES_HOSTכתובת ה-URL של Elasticsearch (לדוגמה, https://my-deployment.es.us-central1.gcp.cloud.es.io:443)ES_API_KEYמפתח API מקודד משלב יצירת פרטי הכניסה MAX_RECORDSהמספר המקסימלי של רשומות לכל הפעלה (לדוגמה, 100000)PAGE_SIZEמספר הרשומות לכל בקשת חיפוש (לדוגמה, 1000)LOOKBACK_HOURSמספר השעות שצריך להמתין עד שניתן יהיה לצפות בשידור החוזר (לדוגמה, 24)
הוספת קוד הפונקציה
- בוחרים באפשרות Python 3.11 בתור סביבת זמן הריצה.
- מגדירים את Entry point ל-
main. - בקטע Source code (קוד מקור), בוחרים באפשרות Inline Editor (עורך בשורה).
מחליפים את התוכן של
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"מחליפים את התוכן של
requirements.txtבתוכן הבא:functions-framework==3.* google-cloud-storage==2.* requests==2.*לוחצים על פריסה.
מחכים שהפריסה תסתיים בהצלחה.
יצירת משימה ב-Cloud Scheduler
יוצרים משימה של Cloud Scheduler כדי להפעיל את הפונקציה של Cloud Run לפי לוח זמנים קבוע.
- במסוף Google Cloud, עוברים אל Cloud Scheduler.
- לוחצים על Create Job (יצירת משימה).
מספקים את פרטי ההגדרה הבאים:
הגדרה ערך שם elastic-defend-schedulerאזור בוחרים את אותו אזור כמו פונקציית Cloud Run תדירות */5 * * * *(כל 5 דקות)אזור זמן בוחרים את אזור הזמן (לדוגמה, UTC)לוחצים על Continue.
בקטע Configure the execution (הגדרת ההפעלה):
- Target type (סוג היעד): בוחרים באפשרות Pub/Sub.
- נושא ב-Cloud Pub/Sub: בוחרים באפשרות
elastic-defend-trigger - גוף ההודעה: מזינים
{"run": true}
לוחצים על יצירה.
אחזור חשבון השירות של Google SecOps והגדרת הפיד
Google SecOps משתמש בחשבון שירות ייחודי כדי לקרוא נתונים מהקטגוריה של GCS. צריך להעניק לחשבון השירות הזה גישה לדלי.
קבלת כתובת האימייל בחשבון השירות
- עוברים אל SIEM Settings > Feeds (הגדרות SIEM > פידים).
- לוחצים על הוספת פיד חדש.
- לוחצים על Configure a single feed (הגדרת פיד יחיד).
- בשדה שם הפיד, מזינים שם לפיד (לדוגמה,
Elastic Defend Events). - בוחרים באפשרות Google Cloud Storage V2 בתור סוג המקור.
- בוחרים באפשרות Elastic Defend בתור סוג היומן.
לוחצים על קבלת חשבון שירות. תוצג כתובת האימייל בחשבון שירות ייחודי, לדוגמה:
chronicle-12345678@chronicle-gcp-prod.iam.gserviceaccount.comמעתיקים את כתובת האימייל הזו לשימוש בשלב הבא.
הגדרת הפיד
- לוחצים על הבא.
מציינים ערכים לפרמטרים הבאים של הקלט:
כתובת ה-URL של קטגוריית האחסון: מזינים את ה-URI של קטגוריית GCS עם נתיב הקידומת:
gs://elastic-defend-logs/elastic-defend/מחליפים את
elastic-defend-logsבשם של קטגוריית GCS.אפשרות למחיקת המקור: בוחרים את אפשרות המחיקה לפי ההעדפה שלכם:
- אף פעם: לא נמחקים קבצים אחרי ההעברה (מומלץ לבדיקות).
- מחיקת קבצים שהועברו: הקבצים נמחקים אחרי שההעברה מסתיימת.
מחיקת קבצים שהועברו וספריות ריקות: מחיקת קבצים וספריות ריקות אחרי שההעברה מסתיימת בהצלחה.
הגיל המקסימלי של הקובץ: כולל קבצים ששונו במספר הימים האחרון (ברירת המחדל היא 180 ימים)
מרחב השמות של הנכס: מרחב השמות של הנכס
תוויות להוספה: התווית שתתווסף לאירועים מהפיד הזה
לוחצים על הבא.
בודקים את ההגדרות של הפיד החדש במסך סיום ולוחצים על שליחה.
הענקת הרשאות IAM לחשבון השירות של Google SecOps
לחשבון השירות של Google SecOps צריך להיות התפקיד צפייה באובייקט אחסון בקטגוריה של GCS.
- עוברים אל Cloud Storage > Buckets (קטגוריות).
- לוחצים על שם הקטגוריה (לדוגמה,
elastic-defend-logs). - עוברים לכרטיסייה Permissions.
- לוחצים על הענקת גישה.
- מספקים את פרטי ההגדרה הבאים:
- Add principals (הוספת ישויות מורשות): מדביקים את כתובת האימייל בחשבון של חשבון השירות של Google SecOps
- הקצאת תפקידים: בוחרים באפשרות צפייה באובייקטים באחסון.
לוחצים על Save.
טבלת מיפוי 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 | הערך צריך להיות File Events אם _index ~ events.file; Library Events אם events.library; Network Events אם events.network; Process Events אם events.process; Registry Events אם events.registry; Security Events אם events.security; API Events אם events.api; Alerts אם .alert | |
| _id | metadata.product_log_id | הערך מ-_id אם הוא לא נמצא ב-["", " ", "null", "N/A"] |
| _source.ecs.version | metadata.product_version | הערך הועתק ישירות |
| _source.network.type | network.application_protocol_version | הערך הועתק ישירות |
| _source.network.transport | network.ip_protocol | הערך הוא TCP אם יש התאמה ל- (?i)tcp; UDP אם יש התאמה ל- (?i)udp; ICMP אם יש התאמה ל- (?i)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 | הערך הוא WINDOWS אם יש התאמה ל- (?i)windows; LINUX אם יש התאמה ל- (?i)linux; MAC אם יש התאמה ל- (?i)mac; IOS אם יש התאמה ל- (?i)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 | ערך מתוך _source.user.id אם הוא תואם לביטוי הרגולרי ^S-\\d-(\\\\d+-){1,14}\\\\d+$ |
| _source.file.Ext.malware_signature.primary.signature.hash.sha256 | security_result.about.file.sha256 | הערך הועתק ישירות |
| _source.event.outcome | security_result.action | הערך מתוך _source.event.outcome, באותיות רישיות, ואז מוגדר כ-ALLOW אם הוא נמצא ב-[SUCCESS, ALLOW], כ-BLOCK אם הוא נמצא ב-[FAILURE, DENY, SKIPPED, RATE_LIMIT], וכ-UNKNOWN_ACTION אם הוא UNKNOWN |
| _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 | מיזוג עם אובייקט שמכיל מזהה ושם מהשדות שמופיעים ברשימה |
| _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; if _index matches .alert, set to "HIGH"; if _source.kibana.alert.rule.parameters.severity matches (?i)LOW, set to "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 | הערך מתוך _source.file.path אם events.file, מתוך _source.dll.path אם events.library, מתוך _source.process.executable אם events.process או events.api, מתוך _source.Target.process.executable אם events.api |
| _source.dll.hash.md5, _source.process.hash.md5 | target.file.md5 | ערך מתוך _source.dll.hash.md5 אם events.library, _source.process.hash.md5 אם .alert |
| _source.dll.name, _source.process.name | target.file.names | מוזג מתוך _source.dll.name אם events.library, מתוך _source.process.name אם .alert |
| _source.dll.hash.sha1, _source.process.hash.sha1 | target.file.sha1 | ערך מתוך _source.dll.hash.sha1 אם events.library, _source.process.hash.sha1 אם .alert |
| _source.dll.hash.sha256, _source.process.hash.sha256 | target.file.sha256 | ערך מתוך _source.dll.hash.sha256 אם events.library, _source.process.hash.sha256 אם .alert |
| _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 | הוגדר כ'גמיש' | |
_source.host.hostname |
event.idm.read_only_udm.intermediary.hostname |
מופה מיומן השינויים |
_source.process.pid |
event.idm.read_only_udm.principal.process.pid |
מופה מיומן השינויים |
_source.process.command_line |
event.idm.read_only_udm.principal.process.command_line |
מופה מיומן השינויים |
_source.process.name |
event.idm.read_only_udm.principal.process.file.names |
מופה מיומן השינויים |
_source.process.parent.executable |
event.idm.read_only_udm.principal.process.parent_process.file.full_path |
מופה מיומן השינויים |
_source.process.Ext.token.integrity_level_name |
event.idm.read_only_udm.principal.resource.attribute.labels |
מופה מיומן השינויים |
_source.process.Ext.code_signature |
event.idm.read_only_udm.principal.resource.attribute.labels |
מופה מיומן השינויים |
_source.process.Ext.ancestry |
event.idm.read_only_udm.principal.resource.attribute.labels |
מופה מיומן השינויים |
_source.process.Ext.protection |
event.idm.read_only_udm.principal.resource.attribute.labels |
מופה מיומן השינויים |
_source.process.Ext.authentication_id |
event.idm.read_only_udm.principal.resource.attribute.labels |
מופה מיומן השינויים |
_source.winlog.event_data.PrivilegeList |
event.idm.read_only_udm.additional.fields |
מופה מיומן השינויים |
Privilege List |
event.idm.read_only_udm.additional.fields |
מופה מיומן השינויים |
_source.event.ingested |
event.idm.read_only_udm.additional.fields |
מופה מיומן השינויים |
Ingested |
event.idm.read_only_udm.additional.fields |
מופה מיומן השינויים |
_source.event.provider |
event.idm.read_only_udm.additional.fields |
מופה מיומן השינויים |
Provider |
event.idm.read_only_udm.additional.fields |
מופה מיומן השינויים |
_source.user.name |
event.idm.read_only_udm.principal.user.userid |
מופה מיומן השינויים |
_source.event.action |
event.idm.read_only_udm.security_result.action_details |
מופה מיומן השינויים |
_source.host.domain |
event.idm.read_only_udm.principal.administrative_domain |
מופה מיומן השינויים |
_source.event.sequence |
event.idm.read_only_udm.security_result.detection_fields |
מופה מיומן השינויים |
_source.kibana.alert.rule.description |
event.idm.read_only_udm.security_result.description |
מופה מיומן השינויים |
_source.kibana.alert.rule.rule_id |
event.idm.read_only_udm.security_result.rule_id |
מופה מיומן השינויים |
_source.kibana.alert.rule.name |
event.idm.read_only_udm.security_result.rule_name |
מופה מיומן השינויים |
_source.kibana.alert.rule.parameters.severity |
event.idm.read_only_udm.security_result.severity |
מופה מיומן השינויים |
_source.kibana.alert.rule.parameters.threat.tactic.id |
event.idm.read_only_udm.security_result.attack_details.tactics |
מופה מיומן השינויים |
יומן שינויים
צפייה ביומן השינויים של מנתח התוכן הזה
הבעיה עדיין לא נפתרה? קבלת תשובות מחברי הקהילה וממומחי Google SecOps.