ליצור קורלציה בין נתונים באמצעות שאילתות איחוד חיצוניות (outer join)
במאמר הזה מוסבר על צירופים חיצוניים (צירוף שמאלי וצירוף ימני). פעולות Join משמשות כדי לקשר ולשלב נתונים ממקורות מרובים על סמך ערכי שדות משותפים. כדי לזהות ולחקור איומים בצורה יעילה, אתם יכולים לשלב אירועי אבטחה וישויות קשורים בתצוגה אחת מקיפה.
בניגוד לצירופים רגילים (פנימיים), שדורשים רשומות תואמות בשני מקורות הנתונים, צירוף חיצוני מאחזר את כל הרשומות מצד אחד של הצירוף, גם אם אין רשומות תואמות בצד השני. שדות לא תואמים מהצד השני בדרך כלל ממולאים בערך null. כך לא תאבדו נתונים שאין להם התאמה.
איך פועלים איחודים חיצוניים
הקונספט של איחודים חיצוניים ב-YARA-L 2.0 זהה לאיחודים חיצוניים ב-SQL סטנדרטי:
הצירוף החיצוני השמאלי שומר את כל הרשומות מהצד השמאלי של הצירוף.
הצירוף החיצוני הימני שומר את כל הרשומות מהצד הימני של הצירוף.
תחביר של Outer join (left join ו-right join) נתמך בכל השאילתות – גם עם תנאי match וגם בלעדיו. ההתנהגות הבסיסית של outer join זהה בחיפוש, במרכזי הבקרה ובכללי הזיהוי, אבל התחביר שונה בהתאם להקשר:
חיפוש ומרכזי בקרה: משתמשים במילות המפתח המפורשות
left joinאוright joinבקטעevents.כללי זיהוי: מגדירים את קשר הצירוף באמצעות סימן שוויון (
=) בקטעeventsומציינים תנאי לא מוגבל בקטעcondition(לדוגמה,#data_table >= 0לצירוף חיצוני שמאלי או#data_table = 0להחרגה של צירוף אנטי).
הסבר על איחוד חיצוני שמאלי (left outer join)
בצירוף חיצוני שמאלי (או צירוף שמאלי) נשמרות כל הרשומות ממקור הנתונים בצד השמאלי (השמור) של הצירוף, גם אם משתמשים במילת המפתח left join בחיפוש וגם אם משתמשים בתנאי לא מוגבל (#data_table >= 0) בכלל זיהוי.
אם לרשומה מהצד השמאלי אין התאמה בטבלת הנתונים או האירועים הימנית, השדות מהצד הימני מוחזרים כ-
null.השלכות של שימוש בפלייסהולדר: כל משתנה פלייסהולדר שמשתמשים בו בקטע
matchצריך להפנות לשדה מהאירוע השמאלי כדי להבטיח צבירת נתונים מדויקת בכל קבוצת התוצאות המלאה.
דוגמה ל-left join בין אירועים
בדוגמה הבאה מוצג צירוף חיצוני שמאלי כדי לקשר בין אירועי התחברות של משתמשים לבין אירועי חיבור לרשת שמתרחשים באותו מארח.
הצירוף השמאלי מבטיח שכל האירועים של USER_LOGIN יישמרו בקבוצת התוצאות. אם נמצא אירוע NETWORK_CONNECTION ($e2) תואם, הנתונים שלו מצורפים.
אם לא נמצאה התאמה, השדות של $e2 הם null.
$e1.metadata.event_type = "USER_LOGIN"
$e2.metadata.event_type = "NETWORK_CONNECTION"
left join $e1.principal.hostname = $e2.principal.hostname
הגדרת האירוע השמאלי
השאילתה הבאה מגדירה את הצד השמאלי של הצירוף ($e1), שהוא קבוצת האירועים שנשמרת בתוצאה הסופית:
$e1.metadata.event_type = "USER_LOGIN"
הטבלה הבאה מייצגת את תוצאת השאילתה, ומזהה את הקבוצה הראשונית של אירועי התחברות של משתמשים:
| סוג אירוע | שם המארח הראשי | כתובת IP |
|---|---|---|
USER_LOGIN
|
workstation-01
|
192.168.1.101
|
USER_LOGIN
|
laptop-hr-02
|
192.168.1.102
|
USER_LOGIN
|
server-db-03
|
10.0.0.50
|
USER_LOGIN
|
kiosk-4
|
192.168.1.104
|
הגדרת האירוע הנכון
השאילתה הבאה מגדירה את הצד הימני של הצירוף ($e2), שהוא קבוצת האירועים שמותאמת לאירועים בצד השמאלי:
$e2.metadata.event_type = "NETWORK_CONNECTION"
בטבלה הבאה מוצגת קבוצת האירועים של החיבור לרשת שזמינים להתאמה:
| סוג אירוע | שם המארח הראשי | כתובת IP |
|---|---|---|
NETWORK_CONNECTION
|
workstation-01
|
192.168.1.101
|
NETWORK_CONNECTION
|
laptop-hr-02
|
192.168.1.101
|
NETWORK_CONNECTION
|
kiosk-4
|
203.0.113.3
|
הצטרפות לאירועים
עם קטע התאמה
הדוגמה הבאה ממחישה שאילתת התאמה באמצעות צירוף חיצוני שמאלי בשדה principal.hostname:
$e1.metadata.event_type = "USER_LOGIN"
$e2.metadata.event_type = "NETWORK_CONNECTION"
left join $e1.principal.hostname = $e2.principal.hostname
$host = $e1.principal.hostname
match:
$host over 5m
הצירוף החיצוני השמאלי מבטיח שכל אירוע
USER_LOGIN($e1) ייכלל בקבוצת התוצאות הסופית.הפלייסהולדר $host מקבל את הערך מ-
$e1.principal.hostname. הצירוף החיצוני השמאלי מבטיח את הנוכחות של האירוע$e1, ומוודא שהמשתנה $host תמיד מאוכלס לצורך צבירה.הכלל צובר את התוצאות לפי המארח בחלון זמן של 5 דקות.
תוצאת צירוף
הנתונים שמתקבלים מציגים את השילוב של שני האירועים. כל הרשומות מהטבלה השמאלית ($e1) נשמרות, והשדות מהטבלה הימנית ($e2) מוגדרים כ-null כשלא נמצא שם מארח תואם (לדוגמה, בשביל server-db-03).
סוג האירוע ($e1)
|
שם המארח הראשי ($host)
|
כתובת IP ($e1)
|
סוג האירוע ($e2)
|
כתובת IP ($e2)
|
סטטוס התאמה |
|---|---|---|---|---|---|
USER_LOGIN
|
workstation-01
|
192.168.1.101
|
NETWORK_CONNECTION
|
192.168.1.101
|
נמצאה התאמה |
USER_LOGIN
|
laptop-hr-02
|
192.168.1.102
|
NETWORK_CONNECTION
|
192.168.1.101
|
נמצאה התאמה |
USER_LOGIN
|
server-db-03
|
10.0.0.50
|
null
|
null
|
אין התאמה |
USER_LOGIN
|
kiosk-4
|
192.168.1.104
|
NETWORK_CONNECTION
|
203.0.113.3
|
נמצאה התאמה |
דוגמאות לשאילתות של איחוד שמאלי (left join)
בקטע הזה מוצגות דוגמאות לשאילתות של LEFT JOIN.
הצטרפות עם תנאי התאמה
ישות אירוע
$e1.metadata.event_type = "NETWORK_CONNECTION" $g1.graph.metadata.entity_type = "ASSET" left join $e1.principal.asset.hostname = $g1.graph.entity.asset.hostname $host = $e1.principal.asset.hostname match: $host over 5mEvent-datatable
$host = $e1.principal.hostname left join $e1.principal.hostname = %all_dt_column_types.hostname match: $host by 5m
צירופים בלי תנאי התאמה
אירוע-אירוע
$e1.metadata.event_type = "USER_LOGIN" $e1.principal.ip = "114.241.96.87" $e2.metadata.event_type = "NETWORK_CONNECTION" left join $e1.principal.hostname = $e2.principal.hostnameישות אירוע
$e1.metadata.event_type = "NETWORK_CONNECTION" $g1.graph.metadata.entity_type = "ASSET" left join $e1.principal.asset.hostname = $g1.graph.entity.asset.hostname $host = $e1.principal.asset.hostnameEvent-datatable
$host = $e1.principal.hostname left join $e1.principal.hostname = %all_dt_column_types.hostname
איחודים שמאליים (left join) בכללי זיהוי
בכללי זיהוי, לא משתמשים במילת המפתח left join בקטע events. במקום זאת, מקשרים אירוע UDM לטבלת נתונים או לאירוע משני בקטע events באמצעות שוויון (=), ושולטים בהתנהגות של הצירוף בקטע condition:
| סוג האיחוד (join) | הקטע events |
הקטע condition |
התנהגות באירועים ללא התאמה |
|---|---|---|---|
| איחוד פנימי (inner join) | $key = %data_table.key |
$e and #data_table > 0 |
אירועים ללא התאמה נמחקים מזרם הזיהוי. |
| איחוד חיצוני שמאלי (העשרה) | $key = %data_table.key |
$e and #data_table >= 0 |
כל האירועים ב-$e נשמרים, ושדות בטבלת הנתונים שלא תואמים הם null. |
| Anti-join (החרגה) | $key = %data_table.key |
$e and #data_table = 0 |
התראה מופעלת רק כשמפתח האירוע לא קיים בטבלת הנתונים. |
דוגמה לצירוף שמאלי של אירוע לטבלת נתונים בכלל
בדוגמה הבאה, טבלת נתונים בשם corporate_asset_directory משמשת להעשרת אירועים במטא-נתונים גיאוגרפיים ובקריטיות של נכסים, בלי להשמיט אירועים ממארחים לא מנוהלים.
הגדרת טבלת הנתונים
טבלת הנתונים corporate_asset_directory מכילה את השורות הבאות, כאשר hostname היא עמודת המפתח:
hostname (מפתח) |
country_code |
country_name |
asset_tier |
owner_dept |
risk_score |
|---|---|---|---|---|---|
ES01-W10 |
ES |
Spain |
TIER_3_WORKSTATION |
Finance |
20 |
CH02-SRV |
CH |
Switzerland |
TIER_1_CRITICAL |
Engineering |
80 |
US03-LAP |
US |
United States |
TIER_2_PRODUCTION |
Executive |
50 |
השוואה בין תנאי inner join לבין תנאי left outer join
Inner join (
#corporate_asset_directory > 0): אם מספר טבלאות הנתונים גדול מ-0, מתבצעת פעולת inner join. אם אירוע מגיע ממארח לא מנוהל שלא מופיע ב-corporate_asset_directory(לדוגמה,unmanaged-byod-09), האירוע מסונן ולא נוצר זיהוי:rule inner_join_drops_unmatched_events { meta: author = "Google SecOps" description = "Inner join example: drops events whose hostname is not in the data table." events: $e.principal.hostname != "" $hostname = $e.principal.hostname // Direct inner join against data table $hostname = %corporate_asset_directory.hostname match: $hostname over 1h outcome: $country = array_distinct(%corporate_asset_directory.country_code) $asset_tier = array_distinct(%corporate_asset_directory.asset_tier) $risk_score = max(%corporate_asset_directory.risk_score) condition: $e and #corporate_asset_directory > 0 }איחוד חיצוני שמאלי (
#corporate_asset_directory >= 0): שימוש בתנאי הלא מוגבל#corporate_asset_directory >= 0מבצע איחוד חיצוני שמאלי. כל האירועים ב-$eנשמרים גם אם שם המארח לא תואם לשורה ב-corporate_asset_directory.אם אירוע לא תואם לשורה בטבלת הנתונים, ההפניות אל
%corporate_asset_directory.columnמקבלות את הערךnull. בקטעoutcome, משתמשים ב-strings.coalesceלעמודות של מחרוזות ובביטויים מותנים שלifלעמודות מספריות כדי להקצות ערכי ברירת מחדל חלופיים:rule left_outer_join_enrichment { meta: author = "Google SecOps" description = "Left outer join using #dt >= 0: preserves all events and populates enrichment fields." events: $e.principal.hostname != "" $hostname = $e.principal.hostname // Outer join equality binding $hostname = %corporate_asset_directory.hostname match: $hostname over 1h outcome: $country = array_distinct(strings.coalesce(%corporate_asset_directory.country_code, "UNKNOWN")) $asset_tier = array_distinct(strings.coalesce(%corporate_asset_directory.asset_tier, "UNMANAGED")) $risk_score = max(if(%corporate_asset_directory.risk_score > 0, %corporate_asset_directory.risk_score, 0)) condition: $e and #corporate_asset_directory >= 0 }
תוצאת ההצטרפות לכלל
בטבלה הבאה מוצגת השוואה בין ערכי התוצאות של מארחים תואמים ולא תואמים כשמשתמשים ב-#corporate_asset_directory >= 0:
שם המארח הראשי ($hostname) |
סטטוס ההתאמה של טבלת הנתונים | $country |
$asset_tier |
$risk_score |
|---|---|---|---|---|
CH02-SRV |
נמצאה התאמה | ["CH"] |
["TIER_1_CRITICAL"] |
80 |
ES01-W10 |
נמצאה התאמה | ["ES"] |
["TIER_3_WORKSTATION"] |
20 |
unmanaged-byod-09 |
אין התאמה (null הוחלפו בברירות מחדל) |
["UNKNOWN"] |
["UNMANAGED"] |
0 |
דוגמאות לכללים של איחוד שמאלי בלעדי (החרגה)
אפשר להשתמש ב-left outer join עם תנאי של ספירה אפס (#data_table = 0) כדי לבצע left anti-join. התבנית הזו מונעת זיהויים כשאירוע תואם לטבלת נתוני החרגה, ומפעילה התראה רק כשאין התאמה.
החרגה של עמודה אחת (
#authorized_scanners_exclusion = 0): הכלל הבא מאחד את$e.principal.hostnameעם טבלת נתונים שלauthorized_scanners_exclusion, ומופעל רק כשהמארח לא נמצא בטבלה:rule anti_join_scanner_exclusion { meta: author = "Google SecOps" description = "Anti-join exclusion using #dt = 0: triggers only if the host is not in the authorized scanners table." events: $e.principal.hostname != "" $hostname = $e.principal.hostname // Bind join key to data table $hostname = %authorized_scanners_exclusion.hostname match: $hostname over 1h outcome: $total_sent_bytes = sum($e.network.sent_bytes) condition: $e and #authorized_scanners_exclusion = 0 }לחלופין, אפשר לספור את השורות בטבלת הנתונים התואמים בקטע
outcome($scanner_match_count = count(%authorized_scanners_exclusion.hostname)) ולהעריך את$e and $scanner_match_count = 0בקטעcondition:rule anti_join_outcome_count { meta: author = "Google SecOps" description = "Anti-join via outcome variable count check: triggers when scanner match count is zero." events: $e.principal.hostname != "" $hostname = $e.principal.hostname $hostname = %authorized_scanners_exclusion.hostname match: $hostname over 1h outcome: $total_sent_bytes = sum($e.network.sent_bytes) $scanner_match_count = count(%authorized_scanners_exclusion.hostname) condition: $e and $scanner_match_count = 0 }החרגה של קבוצת שורות עם כמה עמודות (
#multi_column_admin_exceptions = 0): כדי להחריג אירועים רק כששילוב ספציפי של כמה שדות תואם לאותה שורה בטבלת נתוני החריגות, צריך לקשר כל שדה אירוע לעמודה התואמת שלו בקטעeventsולציין את הערך#data_table = 0בקטעcondition:rule multi_column_tuple_exclusion { meta: author = "Google SecOps" description = "Multi-column row-tuple anti-join: excludes activity matching composite (origin_ip, target_ip, username, action) rows." events: // Bind event fields to match variables $e.principal.ip = $src_ip $e.target.ip = $dst_ip $e.principal.user.userid = $user $e.metadata.product_event_type = $action // Multi-column equality against the same data table row $src_ip = %multi_column_admin_exceptions.origin_ip $dst_ip = %multi_column_admin_exceptions.target_ip $user = %multi_column_admin_exceptions.username $action = %multi_column_admin_exceptions.action match: $src_ip, $dst_ip, $user, $action over 5m outcome: $event_count = count($e.metadata.id) condition: $e and #multi_column_admin_exceptions = 0 }
איחוד חיצוני ימני (right outer join)
right outer join (או right join) שומר את כל הרשומות ממקור הנתונים בצד ימין של מילת המפתח right join.
אם לרשומה מהאירוע הימני אין התאמה באירוע השמאלי, השדות מהאירוע השמאלי מוחזרים כ-
null.השלכות של שימוש בפלייסהולדרים: כל משתנה פלייסהולדר שמשתמשים בו בקטע
matchצריך להפנות לשדה מהאירוע הנכון, כדי להבטיח צבירת נתונים מדויקת בכל קבוצת התוצאות.
דוגמה לצירוף ימני של אירוע לאירוע
בדוגמה הבאה מוצג right outer join שנועד לקשר בין אירועי התחברות של משתמשים לבין אירועי חיבור לרשת שמתרחשים באותו מארח.
הפונקציה right join מבטיחה שכל האירועים של NETWORK_CONNECTION יישמרו בקבוצת התוצאות. אם נמצא אירוע USER_LOGIN תואם, הנתונים שלו מצורפים.
אם לא נמצאה התאמה, השדות של $e1 הם null.
$e1.metadata.event_type = "USER_LOGIN"
$e2.metadata.event_type = "NETWORK_CONNECTION"
right join $e1.principal.hostname = $e2.principal.hostname
הגדרת אירוע עזיבה
השאילתה הבאה מגדירה את הצד השמאלי של הצירוף ($e1), שהוא קבוצת האירועים האופציונלית בתוצאה הסופית:
$e1.metadata.event_type = "USER_LOGIN"
הטבלה הבאה מייצגת את תוצאת השאילתה, ומזהה את קבוצת אירועי ההתחברות הראשונית של המשתמשים:
| סוג אירוע | שם המארח הראשי | כתובת IP |
|---|---|---|
USER_LOGIN
|
workstation-01
|
192.168.1.101
|
USER_LOGIN
|
laptop-hr-02
|
192.168.1.102
|
USER_LOGIN
|
server-db-03
|
10.0.0.50
|
הגדרת האירוע הנכון
השאילתה הבאה מגדירה את הצד הימני של הצירוף ($e2), שהוא קבוצת האירועים שנשמרת בתוצאה הסופית.
$e2.metadata.event_type = "NETWORK_CONNECTION"
בטבלה הבאה מוצגת קבוצת האירועים של החיבור לרשת שאפשר להתאים.
| סוג אירוע | שם המארח הראשי | כתובת IP |
|---|---|---|
NETWORK_CONNECTION
|
workstation-01
|
192.168.1.101
|
NETWORK_CONNECTION
|
laptop-hr-02
|
192.168.1.101
|
NETWORK_CONNECTION
|
vm-unauth-05
|
203.0.113.3
|
הצטרפות לאירועים
בדוגמה הבאה מוצגת שאילתת התאמה עם צירוף חיצוני ימני בשדה principal.hostname:
$e1.metadata.event_type = "USER_LOGIN"
$e2.metadata.event_type = "NETWORK_CONNECTION"
right join $e1.principal.hostname = $e2.principal.hostname
$host = $e1.principal.hostname
match:
$host over 5m
ה-right outer join מבטיח שכל אירוע
NETWORK_CONNECTION($e2) ייכלל בקבוצת התוצאות הסופית.הערך של ה-placeholder
$hostמוקצה מ-$e2.principal.hostname. הצירוף החיצוני הימני מבטיח את הנוכחות של אירוע$e2, ומוודא שהמשתנה$hostתמיד מאוכלס לצורך צבירה.הכלל צובר את התוצאות לפי המארח בחלון זמן של 5 דקות.
תוצאת צירוף
קבוצת הנתונים שנוצרת מציגה את השילוב של שני האירועים. כל הרשומות מהטבלה הימנית ($e2) נשמרות, והשדות מהטבלה השמאלית ($e1) מוגדרים כ-null כשלא נמצא שם מארח תואם (לדוגמה, vm-unauth-05).
סוג האירוע ($e1)
|
שם המארח הראשי ($e1)
|
כתובת IP ($e1)
|
סוג האירוע ($e2)
|
שם המארח הראשי ($host) | כתובת IP ($e2)
|
סטטוס התאמה |
|---|---|---|---|---|---|---|
USER_LOGIN
|
workstation-01
|
192.168.1.101
|
NETWORK_CONNECTION
|
workstation-01
|
192.168.1.101
|
נמצאה התאמה |
USER_LOGIN
|
laptop-hr-02
|
192.168.1.102
|
NETWORK_CONNECTION
|
laptop-hr-02
|
192.168.1.101
|
נמצאה התאמה |
null
|
null
|
null
|
NETWORK_CONNECTION
|
vm-unauth-05
|
203.0.113.4
|
אין התאמה |
שאילתות לדוגמה של RIGHT JOIN
בקטע הזה יש דוגמאות לשאילתות של RIGHT JOIN.
הצטרפות עם תנאי התאמה
אירוע-אירוע
$e1.metadata.event_type = "USER_LOGIN" $e2.metadata.event_type = "NETWORK_CONNECTION" right join $e1.principal.hostname = $e2.principal.hostname $host = $e2.principal.hostname match: $host over 5mאירוע-ישות
$e1.metadata.event_type = "NETWORK_CONNECTION" $g1.graph.metadata.entity_type = "ASSET" right join $g1.graph.entity.asset.hostname = $e1.principal.asset.hostname $host = $e1.principal.asset.hostname match: $host over 5mDatatable-event
$host = $e1.principal.hostname right join %all_dt_column_types.hostname = $e1.principal.hostname match: $host by 5m
צירופים בלי תנאי התאמה
אירוע-אירוע
$e1.metadata.event_type = "USER_LOGIN" $e1.principal.ip = "114.241.96.87" $e2.metadata.event_type = "NETWORK_CONNECTION" right join $e1.principal.hostname = $e2.principal.hostnameאירוע-ישות
$e1.metadata.event_type = "NETWORK_CONNECTION" $g1.graph.metadata.entity_type = "ASSET" right join $g1.graph.entity.asset.hostname = $e1.principal.asset.hostname $host = $e1.principal.asset.hostnameDatatable-event
$host = $e1.principal.hostname right join %all_dt_column_types.hostname = $e1.principal.hostname
מגבלות
כשיוצרים איחודים חיצוניים, חשוב להביא בחשבון את המגבלות הבאות:
אין תמיכה בצירוף חיצוני מלא (צירוף שמאלי וצירוף ימני ביחד).
טווח התאריכים של השאילתה לשילובים ללא התאמה מוגבל ל-14 ימים לכל היותר.
אי אפשר לחבר ישירות בין שני מקורות לפי הקשר (לדוגמה, ישות ישירות לטבלת נתונים).
האירוע הראשי של Unified Data Model (UDM) חייב להיות הצד השמור של ה-outer join. השאילתה לא תקינה אם האירוע הראשי נמצא בצד שניתן להגדיר כ-null.
האיחוד של אירוע וישות חייב להיות איחוד שמאלי. כך האירוע (
$e1) נשמר בצורה נכונה.צירוף של ישות ואירוע חייב להיות צירוף ימני. כך האירוע (
$e1) נשמר בצורה נכונה.
הדוגמה הבאה לא תקינה כי אירוע ה-UDM (
$e1) נמצא בצד שמאל, אבל ה-right join שומר על הצד הימני ($g1), וזה מפר את הכלל שצריך לשמור על אירוע ה-UDM:// Invalid query $e1.metadata.event_type = "NETWORK_CONNECTION" $g1.graph.metadata.entity_type = "ASSET" right join $e1.principal.asset.hostname = $g1.graph.entity.asset.hostnameמילות המפתח המפורשות
left joinו-right joinבקטעeventsלא נתמכות בכללי זיהוי, אלא רק בחיפושים ב-YARA-L ובלוחות בקרה. כדי לבצע איחוד חיצוני שמאלי או איחוד אנטי בכלל זיהוי, משתמשים בתנאי לא מוגבל כמו#data_table >= 0או#data_table = 0בקטעcondition. למידע נוסף, קראו את המאמר Left joins בכללי זיהוי.
שיטות מומלצות
כדי למנוע ביצועים איטיים וזמני קצובים לתפוגה של שאילתות בשאילתות של צירוף חיצוני, השתמשו במסננים ספציפיים ומצומצמים.
לדוגמה, שאילתה רחבה כמו:
$e1.metadata.event_type = "USER_LOGIN"
$e2.metadata.event_type = "NETWORK_CONNECTION"
right join $e1.principal.hostname = $e2.principal.hostname
כדי לבצע אופטימיזציה, אפשר להוסיף קריטריונים ספציפיים:
$e1.metadata.event_type = "USER_LOGIN"
$e1.principal.ip = "121.121.121.121"
$e1.principal.user.userid = "alex"
$e2.metadata.event_type = "NETWORK_CONNECTION"
$e2.src.hostname = "altostrat.com"
$e1.principal.hostname = $e2.principal.hostname
הבעיה עדיין לא נפתרה? קבלת תשובות מחברי הקהילה וממומחי Google SecOps.