הגדרת מסננים במרכז הבקרה
במאמר הזה מוסבר איך אפשר להחיל מסננים על שדות של מקור נתונים כדי לצמצם את הנתונים שמוצגים בתרשימים הרלוונטיים.
הוספת מסנן
כדי להוסיף מסנן:
בדף עריכת מרכז הבקרה, לוחצים על פילטר כדי להוסיף פילטר.
בחלון ניהול פילטרים, לוחצים על הוספה כדי להוסיף פילטר חדש.
בשדה Field to filter, מזינים את השדה שבו רוצים להשתמש כדי לסנן את הנתונים. מידע נוסף על מקורות נתונים ושדות נתמכים זמין במאמר בנושא מקורות נתונים נתמכים.
בשדה שם המסנן, מזינים שם למסנן.
בשדה החלה על, בוחרים את התרשימים שבהם רוצים להחיל את המסנן.
אופציונלי: מגדירים ערך ברירת מחדל למסנן.
לוחצים על סיום כדי להוסיף את המסנן ולסגור את החלון ניהול מסננים.
סינון מתקדם
Google Security Operations מספקת סינון מתקדם בפלטפורמת מרכז הבקרה המובנית שלה. בניגוד למסננים בסיסיים שקשורים לשדות ספציפיים, מסננים מתקדמים פועלים כמשתני שאילתה, שנקראים גם טוקנים. היכולת הזו מאפשרת לאנליסטים של אבטחה להוסיף ערכים דינמיים, ביטויים רגולריים מורכבים או לוגיקה בוליאנית ישירות לשאילתות YARA-L בזמן הריצה.
תכונות עיקריות
- סינון גמיש: אפשר להשתמש בקלט סינון יחיד (לדוגמה,
$token$) כדי לסנן בו-זמנית על סמך כמה שדות בכמה תרשימים בלוח בקרה. - אפשרויות דינמיות בתפריט הנפתח: אפשר לאכלס את אפשרויות הסינון באופן דינמי באמצעות התוצאות של שאילתת YARA-L נפרדת. כך אפשר לוודא שהמשתמשים תמיד יבחרו מתוך נתונים עדכניים.
- עיצוב גמיש: אפשר להגדיר קידומות, סיומות ותוחמים בהתאמה אישית (לדוגמה,
/לביטויים רגולריים או,לסעיפים שלIN) כדי לעצב ערכים שנבחרו על ידי המשתמש לפני שהם מוזרקים לשאילתה. - ערכי ברירת מחדל: הגדרת ערכי ברירת מחדל מבטיחה שהנתונים ייטענו בלוחות הבקרה באופן מיידי, ותומכת בדוחות מתוזמנים אוטומטיים שבהם לא מתבצעת אינטראקציה עם המשתמש.
- תמיכה בבחירה מרובה: המשתמשים יכולים לבחור כמה ערכים לטוקן אחד, שמופרדים באמצעות מפריד שהמשתמש מגדיר.
אבטחה והרשאות
הסינון המתקדם משתמש בהרשאות קיימות של בקרת גישה מבוססת-תפקידים (RBAC), ולא נדרשות הרשאות חדשות. ההרשאות הרלוונטיות לניהול זהויות והרשאות גישה (IAM) הן:
| הרשאת IAM | מטרה |
|---|---|
nativedashboards.update |
יצירה והגדרה של מסננים מתקדמים בלוח בקרה. |
nativeDashboards.get |
צפייה בלוחות בקרה ושימוש באמצעי הבקרה של קלט המסנן. |
dashboardQueries.execute |
מריצים את השאילתות הסופיות שפוענחו עם טוקנים שהוחלפו. |
במקרה של אכיפת RBAC על נתונים, שאילתות שמשמשות לאכלוס תפריטים נפתחים דינמיים מופעלות בהקשר של המשתמש שצופה בהם. כך אפשר לוודא שהמשתמשים יראו רק ערכים (כמו כתובות IP ספציפיות) שיש להם הרשאה לגשת אליהם.
הגדרה ושימוש במסננים מתקדמים
בקטעים הבאים מפורט תהליך ההגדרה והשימוש במסננים מתקדמים בלוחות הבקרה של Google SecOps.
יצירת מסנן מתקדם חדש
כדי ליצור מסנן מתקדם חדש, פועלים לפי השלבים הבאים:
- פותחים את תיבת הדו-שיח Manage Filters (ניהול מסננים) בלוח בקרה.
- בוחרים באפשרות ואז באפשרות מסנן מתקדם בתור סוג המסנן.
- מזינים שם מסנן (תווית) ומשתנה של טוקן (לדוגמה,
token).- הגבלות על התחביר של משתני טוקן: שם משתנה הטוקן יכול לכלול רק תווים אלפאנומריים וקווים תחתונים (
^[a-zA-Z0-9_]+$). - ייחודיות: השמות של האסימונים צריכים להיות ייחודיים. אם יש התנגשויות, אי אפשר לשמור את המסנן.
- הגבלות על התחביר של משתני טוקן: שם משתנה הטוקן יכול לכלול רק תווים אלפאנומריים וקווים תחתונים (
- בוחרים באפשרות Generate from Query (יצירה מתוך שאילתה, תוצאות דינמיות של YARA-L) או באפשרות Manual Entry (הזנה ידנית, רשימה סטטית).
- כשהאפשרות יצירה משאילתה מסומנת:
- מזינים שאילתה ומגדירים טווח זמן.
- לוחצים על הפעלת החיפוש.
- בוחרים עמודה מהתפריט הנפתח בחירת עמודה.
- בוחרים ערך מהתפריט הנפתח Preview Filter Dropdown.
- אם בוחרים באפשרות הזנה ידנית, מקלידים ערך בשדה הזנה ידנית ולוחצים על הוספה.
- כשהאפשרות יצירה משאילתה מסומנת:
- בוחרים קידומת וסיומת כדי להוסיף ערכים ללוגיקה ספציפית, כמו ביטויים רגולריים.
- אם נעשה שימוש בטוקן בתוך תווי תיחום של ביטוי רגולרי בשאילתת YARA-L (לדוגמה,
principal.ip = /$token$/), בדרך כלל לא צריך לציין קידומת או סיומת. - אם משתמשים בטוקן בלי תווי תיחום של ביטוי רגולרי, אבל רוצים שהוא יפעל כביטוי רגולרי מעוגן (לדוגמה,
principal.ip = $token$), צריך להגדיר את Prefix ל-/^ואת Suffix ל-$/.
- אם נעשה שימוש בטוקן בתוך תווי תיחום של ביטוי רגולרי בשאילתת YARA-L (לדוגמה,
- מעבירים את המתג של אפשר לבחור כמה אפשרויות כדי להגדיר תו מפריד (לדוגמה,
|ללוגיקה של ביטויים רגולרייםOR). - בוחרים ערך ברירת מחדל מהתפריט הנפתח.
- מסמנים את התיבה הוספת קידומת או סיומת לערכי ברירת מחדל או מבטלים את הסימון שלה.
- לוחצים על סיום.
שימוש בטוקנים בשאילתות של תרשימים
יוצרים של לוחות בקרה צריכים להוסיף ידנית את האסימון, מוקף בסמלי $, לשאילתה של התרשים.
לדוגמה:
principal.hostname = $hostname$re.regex(target.ip, $ip_regex$)
באימות טוקן, אם שאילתה משתמשת בטוקן לא מוגדר, מוצג באנר אזהרה צהוב. במקרים כאלה, המערכת מתייחסת לטוקן כמחרוזת מילולית.
התנהגות ברירת המחדל בעת טעינה
מסננים מתקדמים בלוחות הבקרה של Google SecOps פועלים רק באמצעות החלפת מחרוזות. בניגוד למסננים רגילים, המערכת לא מפרשת את הלוגיקה בשבילכם, אלא מבצעת פעולת 'חיפוש והחלפה' של $token$ עם הערך שנבחר לפני שהשאילתה עוברת קומפילציה. השאילתה פועלת כתבנית, והמשתמש אחראי לוודא שהשאילתה הסופית, אחרי החלפת הטוקנים, תקינה מבחינת התחביר.
ערכי ברירת מחדל ותוקף השאילתה
מכיוון שהמערכת לא מתעלמת באופן אוטומטי מטוקן אם לא מסופק קלט, צריך להגדיר ערכי ברירת מחדל ששומרים על מבנה שאילתה תקין לטעינות ראשוניות ולדוחות מתוזמנים.
דוגמאות להגדרות יעילות של ערך ברירת מחדל:
| תרחיש לדוגמה | הקשר השאילתה | הגדרת ערך ברירת מחדל | הלוגיקה שמתקבלת |
|---|---|---|---|
| התאמה מדויקת | principal.hostname = $host$ |
לא נכון: השארת התוכן ריק מובילה לתחביר לא תקין (principal.hostname = ). נכון: צריך להשתמש ב-placeholder ששומר על תחביר תקין. |
דוגמה עם ברירת מחדל ריקה: נכשלת כי principal.hostname = היא YARA-L לא תקינה. |
| התאמה מדויקת | principal.hostname = "$host$" |
להשאיר ריק | הצלחה: הערך הוא principal.hostname = "", שלא מחזיר תוצאות אבל הוא תקין מבחינת התחביר. |
| תו כללי לחיפוש (הצגה של הכול) | principal.hostname = /.*$host$.*/ |
.* |
הצלחה: הפונקציה מחזירה את הערך principal.hostname = /.*/, שהוא ביטוי רגולרי כללי שמחזיר את כל התוצאות. |
| ביטוי רגולרי (הצגה של הכול) | principal.hostname = $host$ |
/.*/ |
Success: הערך הוא principal.hostname = /.*/, שתואם לכל שמות המארחים. |
| עוגן של ביטוי רגולרי | metadata.product_name = /^$token$$/ |
.* |
הצלחה: הערך הוא metadata.product_name = /^.*$/ בטעינה, ומתאים לכל המוצרים. |
| מספרים שלמים (הצגת הכול) | principal.host = $token$ |
0 or 1=1 |
הצלחה: הערך הוא principal.host = 0 or 1=1, כלומר כל התוצאות מוחזרות. |
| מספרים שלמים (הצגת הכול) | cast.as_string(principal.host) = $token$ |
/.*/ |
הצלחה: הערך שמתקבל הוא cast.as_string(principal.host) = /.*/, שתואם לכל הייצוגים של מחרוזות של מספרים שלמים של המארח. |
| טוקן עם אפשרות בחירה אחת עם לוגיקת ברירת מחדל של 'הכול' | $log = metadata.log_type \n $log = if($log$ = "", metadata.log_type, $log$)\n match: $log |
השדה ריק (עם קידומת: ", סיומת: ") |
הצלחה: אם ערך ברירת המחדל ריק, $log הופך ל-"". ההצהרה if הופכת ל-$log = if("" = "", metadata.log_type, ""), שמתפשטת ל-$log = metadata.log_type. השאילתה תתאים לכל סוגי היומנים. |
| ערך ברירת מחדל ספציפי יחיד | $et = metadata.event_type \n $et = $et2$ \n match: $et |
EMAIL_TRANSACTION (עם תחילית: ", סיומת: ") |
הצלחה: הערך הוא $et = "EMAIL_TRANSACTION" בטעינה, והתוצאות שמוצגות כברירת מחדל מוגבלות לקטגוריה ספציפית של אירועים. |
| בחירה מרובה של ביטוי רגולרי | $log = metadata.log_type \n $log = $logs$ \n match: $log |
.* (עם קידומת: /, סיומת: /, תו הפרדה: |) |
הצלחה: הערך הוא $log = /.*/ בטעינה, ומתאים לכל סוגי היומנים. בחירה של כמה ערכים (למשל DNS, DHCP) מחזירה את הערך $log = /DNS|DHCP/. |
| ברירת מחדל של 'תמיד נכון' (הצגת הכול) | $et = metadata.event_type \n $et = $et4$ \n match: $et |
"USER_LOGIN" or 1=1 (עם תו הפרדה: " or metadata.event_type = ", סימון התיבה 'החלת קידומת/סיומת על ערכי ברירת מחדל': לא מסומן) |
הצלחה: הערך הוא $et = "USER_LOGIN" or 1=1 בטעינה, שתואם לכל האירועים. בחירה באפשרויות ספציפיות מחליפה את המחרוזת בפסוקיות שוויון מפורשות של OR. |
| הזרקה של סעיף מלא (בחירה מרובה) | $et$ \n $et = metadata.event_type \n match: $et |
השדה נשאר ריק (עם התחילית: metadata.event_type = ", הסיומת: ", התו המפריד: " or metadata.event_type = ", האפשרות 'החלת תחילית/סיומת על ערכי ברירת מחדל': לא מסומנת) |
הצלחה: האסימון עצמו מחדיר את כל פרדיקט שדה היעד. כשבוחרים באפשרות USER_LOGIN ו-NETWORK_DNS, הן מתרחבות ל-metadata.event_type = "USER_LOGIN" or metadata.event_type = "NETWORK_DNS". |
| ביטוי רגולרי (regex) ברירת מחדל לסינון דואר | $pet = metadata.product_event_type \n $pet = $pet$ \n match: $pet |
/.*/ (עם קידומת: ", סיומת: ", החלת קידומת/סיומת על ערכי ברירת מחדל: לא מסומן) |
Success: הערך הוא $pet = /.*/ בטעינה, בהתאמה לכל סוגי אירועי המוצרים. כשבוחרים ערך ספציפי, המערכת מוסיפה מרכאות (לדוגמה, $pet = "USER_LOGIN"). |
שיקולי תחביר לגבי מסננים מתקדמים
המערכת לא מבצעת באופן אוטומטי ביטול בריחה לתווים מיוחדים (כמו מרכאות או לוכסנים). חשוב תמיד לוודא שהקידומת, הסיומת והמפריד שהגדרתם תואמים לתחביר של שפת השאילתות (YARA-L) שבה אתם משתמשים.
מפרט ל-API
למפרטים מפורטים של ה-API, ראו AdvancedFilterConfig.
ניהול מסנן השעות הגלובלי
המסנן הגלובלי של הזמן חל על כל התרשימים, ללא קשר למקור הנתונים של התרשים.
כדי לבחור את התרשימים שאפשר להחיל עליהם את מסנן הזמן הגלובלי, מבצעים את הפעולות הבאות:
בדף עריכת מרכז הבקרה, לוחצים על פילטר כדי להוסיף פילטר.
בחלון Manage filters, בוחרים באפשרות Global time filter מתוך רשימת המסננים.
לוחצים על המתג כדי לוודא שהפילטר הגלובלי של הזמן מופעל.
בשדה Apply to, בוחרים את התרשימים שרוצים להחיל עליהם את מסנן הזמן הגלובלי.
בשדה הגדרת ערכי ברירת מחדל, מגדירים טווח זמן להצגת הנתונים באמצעות ערכים מוחלטים או יחסיים.
לוחצים על סיום כדי להפעיל את המסנן ולסגור את החלון ניהול מסננים.
החלת מסנן על מרכז הבקרה
כדי להחיל מסנן:
בדף Edit Dashboard (עריכת לוח הבקרה), לוחצים על Back (חזרה) > Filter (מסנן) כדי לראות את המסננים של לוח הבקרה.
בחלון Dashboard filters (מסנני מרכז הבקרה), בוחרים את המסנן שיצרתם.
מזינים ערך בשדה שנבחר.
לוחצים על אישור. התרשימים שהמסנן רלוונטי לגביהם יתעדכנו עם נתונים חדשים.
שינוי מסנן הזמן הגלובלי
כשפותחים לוח בקרה, מסנן הזמן הגלובלי מוחל על התרשימים הרלוונטיים עם טווח הזמן שמוגדר כברירת מחדל.
כדי לשנות את הערך של מסנן הזמן הגלובלי:
לוחצים על תזמון.
בתיבת הדו-שיח Global Time Filter, בוחרים באופרטור
pastאוbetween.בוחרים את טווח התאריכים.
לוחצים על אישור. התרשימים שנבחרו מתעדכנים עם נתונים חדשים על סמך מסנן הזמן הגלובלי.
הסבר על האופרטור Past
האופרטור past מחשב את שעת ההתחלה על סמך הערך והיחידה שאתם מציינים. מועד הסיום הוא תמיד הרגע הנוכחי.
חישוב זמן ההתחלה תלוי ביחידה:
- שניות, דקות, שעות: היחידות האלה מחשבות את שעת ההתחלה על ידי הפחתת המספר המדויק של שניות, דקות או שעות מחותמת הזמן הנוכחית.
- ימים, שבועות, חודשים, שנים: היחידות האלה מתחילות את הזמן בתחילת התקופה הנוכחית או הקודמת (לדוגמה, בתחילת היום או החודש הנוכחיים).
בטבלה הבאה מוצגות דוגמאות על סמך חותמת זמן נוכחית של 13:13 ב-2 ביולי 2025:
| ערך | יחידה | שעת ההתחלה של הסינון |
|---|---|---|
n |
שניות | 13:13:00 2 ביולי 2025 פחות n שניות |
n |
דקות | 13:13:00 2 ביולי 2025 פחות n דקות |
n |
שעות | 13:13:00 2 ביולי 2025 פחות n שעות |
1 |
יום | 00:00:00, 2 ביולי 2025 (תחילת היום הנוכחי) |
2 |
ימים | 00:00:00 1 ביולי 2025 (תחילת היום הקודם) |
1 |
שבוע | 00:00:00 ביום הראשון של השבוע הנוכחי. היום שבו מתחיל השבוע תלוי בהגדרות הלוקאל של המערכת. |
1 |
חודש | 00:00:00 1 ביולי 2025 (תחילת החודש הנוכחי) |
2 |
חודשים | 00:00:00 ב-1 ביוני 2025 (תחילת החודש הקודם) |
1 |
שנה | 00:00:00 ב-1 בינואר 2025 (תחילת השנה הנוכחית) |
2 |
שנים | 00:00:00 1 בינואר 2024 (תחילת השנה הקודמת) |
הבעיה עדיין לא נפתרה? קבלת תשובות מחברי הקהילה וממומחי Google SecOps.