הגדרת שדות מחושבים

נתמך ב:

המדריך הזה מיועד לאנליסטים בתחום האבטחה ולמנהלי מרכזי אבטחה (SOC) שרוצים להפוך את העשרת הנתונים לפעולה אוטומטית במסגרת פעולות האבטחה שלהם. במאמר מוסבר איך ליצור ולנהל שדות מחושבים באמצעות נוסחאות לוגיות כדי להפיק ערכים חדשים מנתונים קיימים של אירועים והתראות. כך לא תצטרכו להזין נתונים באופן ידני, ותוכלו לוודא שהמדדים החשובים מתעדכנים בזמן אמת. השלמה מוצלחת של התהליך משפרת את יכולות הניתוח של הפלטפורמה ומאיצה את מיון האירועים באמצעות אכלוס אוטומטי של שדות.

בעזרת שדות מחושבים, אתם יכולים להפיק באופן דינמי נקודות נתונים חדשות בתוך תיקים והתראות ב-Google Security Operations. באמצעות הגדרת נוסחאות לוגיות, אפשר לחשב ערכים על סמך שדות מערכת קיימים או שדות בהתאמה אישית. הערך המחושב נבדק ונשמר באופן אוטומטי בזמן אמת בשדה מותאם אישית קיים שהמשתמש בחר (עם התווית Target Field).

תרחישים נפוצים לדוגמה

התרחישים הבאים מייצגים את הדרכים הנפוצות ביותר שבהן ארגונים משתמשים בשדות מחושבים כדי לשפר את היעילות התפעולית ואת בהירות הנתונים.

חישוב אוטומטי של ציון סיכון

  • יעד: סיווג של פניות על סמך נפח האירועים או רמות העדיפות.
  • ערך: מאפשר לבצע טריאז' באופן סטנדרטי ולוודא שהצוות יראה מיד אירועים בסיכון גבוה.

נורמליזציה של נתונים

  • המטרה: סימון התראות כבדיקה או ייצור על סמך מוסכמות מתן שמות.
  • הערך: מפחית את הרעש בכך שהוא מאפשר למנתחי הנתונים לסנן נתוני בדיקה לא קריטיים מהתצוגה הראשית שלהם.

מונחים חשובים

  • נוסחה: ביטוי לוגי מבוסס-טקסט שאתם מגדירים, באמצעות פונקציות, אופרטורים והפניות לשדות, כדי לחשב ערך.
  • שדה יעד: שדה בהתאמה אישית קיים (מסוג טקסט חופשי) שבו מאוחסן חישוב התוצאה של הנוסחה.
  • יחסי תלות: השדות שאליהם מפנה הנוסחה. כשהערך של שדה תלוי משתנה, המערכת מעריכה מחדש את השדה המחושב באופן סינכרוני.

לפני שמתחילים

לפני שיוצרים חישוב, צריך לוודא שהסביבה עומדת בדרישות הטכניות הבאות:

  • הרשאות: צריכה להיות לכם הרשאת אדמין בתפריט ההגדרות והרשאות לניהול נתוני הפניות.
  • בדיקת הסביבה: ודאו שיש לכם שדות מותאמים אישית קיימים ופעילים (מסוג טקסט חופשי) שישמשו כשדות יעד.

חשוב לוודא שיש לכם שדות מותאמים אישית קיימים שתוכלו להשתמש בהם כשדות יעד במערכת. אם לא, מבצעים את השלבים הבאים:

  1. עוברים אל הגדרות > נתוני בקשות תמיכה > שדות בהתאמה אישית.
  2. יוצרים שדה חדש בהתאמה אישית ומגדירים את הסוג שלו כטקסט חופשי.

מידע נוסף על שדות בהתאמה אישית זמין במאמר יצירת שדה בהתאמה אישית.

מגבלות טכניות וכללי אימות

לפני שמגדירים חישוב, חשוב לוודא ששדות היעד והלוגיקה עומדים במגבלות המערכת הבאות. הכללים האלה קובעים איך מנוע Google SecOps מאמת את התוצאות של הנוסחאות ושומר אותן.

קריטריונים לאימות שדות

מנגנון החישוב אוכף באופן קפדני את הדרישות הבאות לגבי כל שדה שמוגדר כשדה יעד:

  • סוג הנתונים: השדה צריך להיות מסוג טקסט חופשי.
  • סטטוס תפעולי: השדה צריך להיות פעיל. המערכת לא יכולה לכתוב לשדות שנמחקו או שבוטלו.
  • מיפוי תלויות: כדי למנוע לוגיקה מעגלית, שדה לא יכול להיות יעד אם הוא כבר תלות של שדה מחושב אחר.

הגדרת היקף לשדות

כשיוצרים שדה בהתאמה אישית עם היקף Both, המערכת יוצרת רשומות ייחודיות לכל הקשר. כך אפשר לשמור על לוגיקה נפרדת למקרים ולהתראות באותה קטגוריה לוגית.

בתפריט שדה היעד, צריך לבחור את ההיקף הספציפי שרלוונטי לנוסחה:

  • היקף הטיפול בפנייה: מסומן בתווית CaseCustom.YourField (לדוגמה, CaseCustom.RiskLevel)
  • היקף ההתראה: מסומן בתווית AlertCustom.YourField (לדוגמה, AlertCustom.RiskLevel)

יצירה וניהול של שדות מחושבים

בקטע הזה מוסבר איך להגדיר חישוב חדש ואיך לפתור בעיות נפוצות במהלך תהליך ההגדרה.

יצירת חישוב חדש

כדי ליצור חישוב חדש:

  1. עוברים אל הגדרות > נתוני בקשות תמיכה > שדות מחושבים.
  2. לוחצים על add הוספה.
  3. בשדה שם השדה המחושב, מזינים שם ותיאור ייחודיים לחישוב.
  4. באזור Target Field, בוחרים את ה-Custom Field הקיים שבו רוצים לשמור את התוצאה.

    1. כשל צפוי: השדה שנבחר לא מופיע בתפריט.
    2. פעולת תיקון: מוודאים שהשדה המותאם אישית פעיל, שהוא מוגדר לטקסט חופשי ושלא מדובר כבר בתלות בחישוב אחר.
  5. בכלי לעריכת טקסט, יוצרים את הנוסחה באמצעות הפונקציות, האופרטורים והתחביר הנתמכים. יוצרים ביטוי לוגי (לדוגמה, IF ([case.priority] == "High") THEN "Urgent" ELSE "Standard"). פרטים נוספים זמינים במאמר שפת הנוסחאות והתחביר.

  6. לוחצים על Save.

    1. כשל צפוי: המערכת דוחה את השמירה ומציגה הדגשה אדומה של השגיאה.
    2. פעולת תיקון: בודקים אם יש שגיאות תחביר, כמו סוגריים חסרים סביב תנאי IF או מילות מפתח באותיות קטנות.

גישה לנכסים מתקדמים ולקובצי עזר

הנוסחאות צריכות לעמוד בכללי דקדוק מחמירים ולכללי רגישות לאותיות רישיות וקטנות עבור כל האופרטורים והפונקציות המובנים. כדי לוודא שהחישובים שלכם תקינים, אתם יכולים להשתמש במפרט הטכני הבא.

דוגמאות לנוסחאות

התבניות הבאות מדגימות איך לשלב פונקציות ואופרטורים כדי להעשיר נתונים באופן אוטומטי. אתם יכולים להעתיק את קטעי הקוד האלה ולהתאים אותם לשמות השדות הספציפיים ולדרישות הארגוניות שלכם.

דוגמה 1: הגדרת רמת סיכון

הנוסחה הזו משמשת לסיווג פניות לפי מילות מפתח ספציפיות שנמצאות בכותרת הפנייה.

  • שדה יעד: CaseCustom.risk_level (טקסט)
  • המטרה: להקצות באופן אוטומטי סטטוס "גבוה" לאירועים דחופים
  • נוסחה:

    IF (CONTAINS([case.name], "urgent")) THEN "High" ELSE "Medium"

דוגמה 2: סימון התרעות בדיקה

הלוגיקה הזו מזהה נתוני בדיקות ומוסיפה להם תוויות, כדי לעזור לאנליסטים לסנן את התצוגות הראשיות שלהם ולהתמקד באירועים שקורים בסביבת הייצור.

  • שדה יעד: AlertCustom.is_test (טקסט)
  • מטרה: זיהוי הסיומת -TEST או המחרוזת TEST בשם של התראה
  • נוסחה:

    IF (CONTAINS([alert.name], "TEST") OR ENDS_WITH([alert.name], "-TEST"))
    THEN "TRUE"
    ELSE "FALSE"
    

דוגמה 3: שילוב תנאים

בדוגמה הזו מוצגת לוגיקה מקוננת לתעדוף ביקורות על סמך נפח האירועים ורמות העדיפות הקיימות.

  • שדה יעד: CaseCustom.review_status (טקסט)
  • יעד: הפעלת בדיקה ידנית רק כשאורך היומן משמעותי והעדיפות לא Low.
  • נוסחה:

    IF (LENGTH(\[AlertCustom.event\_details\]) \> 100 AND NOT IS(\[case.priority\], "Low"))
    THEN "Needs Review"
    ELSE "Auto-Closed"
    

השפה והתחביר של הנוסחה

מנוע החישוב מבחין בין אותיות רישיות לאותיות קטנות בכל האופרטורים, מילות המפתח והפונקציות המובנים. חובה לכתוב מילות מפתח (לדוגמה, IF, THEN, ELSE, AND, OR, NOT) ושמות של פונקציות (לדוגמה, CONTAINS, LENGTH, STARTS_WITH, ENDS_WITH, IS, IS_NOT, DOES_NOT_CONTAIN) באותיות רישיות. עם זאת, בדיקה של מחרוזות טקסט בתוך פונקציות ואופרטורים של שוויון היא לא תלוית-רישיות. לדוגמה, אם תחפשו "פישינג", תקבלו תוצאות עם המילים "פישינג" או "פישינג".

סוגי נתונים וערכים מילוליים

ליטרל הוא ערך קבוע שמשמש בביטויים. מומלץ לוודא שסוגי הנתונים של הארגומנטים של הפונקציות והפעולות תואמים.

סוג תחביר וכללים דוגמה
STRING טקסט שמוקף במירכאות כפולות. "critical", "N/A"
NUMBER מספרים שלמים או עשרוניים. 100, 3.14
BOOLEAN חייב להיות באותיות רישיות. TRUE, FALSE
NULL מייצג ערך ריק. NULL

הפניות לשדות

כדי להשתמש בערך של שדה אחר, צריך להקיף את שם השדה בסוגריים מרובעים, למשל [object.field_name].

  • כלל תחביר: צריך להשתמש בקידומת עם הפניות לשדות. חובה להשתמש בקידומת (לדוגמה, case. או AlertCustom.) ואחריה בנקודה ובשם השדה. שם השדה עצמו יכול להכיל אותיות, מספרים, קווים תחתונים ורווחים. לדוגמה: [case.name], [alert.priority], [AlertCustom.my_custom_field].
  • אפשר להשתמש בשדות המערכת האלה: case.name, case.stage, case.priority, alert.name, alert.priority, alert.rule_generator.
  • אפשר להפנות לכל השדות המותאמים אישית שהוגדרו על ידי המשתמש.
  • נוסחה של שדה מחושב לא יכולה להפנות לשדה מחושב אחר.

אופרטורים

אפשר להשתמש באופרטורים להשוואות ולפעולות לוגיות. שימוש בסוגריים () כדי לשנות את סדר העדיפות שמוגדר כברירת מחדל ולקבץ ביטויים

  • אופרטורים להשוואה: ==, !=, >, >=, <, <=
  • אופרטורים לוגיים: AND, OR, NOT
  • סדר פעולות: NOT, >, >=, <, <=, AND, OR,

ביטויי תנאי

המערכת תומכת בלוגיקה של משפט תנאי באמצעות התחביר IF (condition) THEN expression1 ELSE expression2. החלק ELSE הוא אופציונלי. אם משמיטים אותו והתנאי הוא FALSE, התוצאה תהיה NULL כברירת מחדל.

התנאי חייב להיות ביטוי שהערך שלו הוא TRUE או FALSE.

לדוגמה, IF ( [CaseCustom.score] > 75 ) THEN "High Risk" ELSE "Low Risk".

פונקציות

פונקציות הן פעולות מוגדרות מראש שחייבות להיות באותיות רישיות בלבד. בטבלה הבאה מפורטות הפונקציות הנתמכות לשינוי נתונים ולהערכת נתונים.

תפקיד תיאור תחביר סוג הערך שמוחזר
CONTAINS(field, substring) בדיקה אם שדה טקסט מכיל מחרוזת משנה (לא תלוית-רישיות) CONTAINS([case.name], "phishing") BOOLEAN
DOES_NOT_CONTAIN(field, substring) בדיקה אם שדה טקסט לא מכיל מחרוזת משנה (לא תלוי באותיות רישיות) DOES_NOT_CONTAIN([case.name], "test") BOOLEAN
LENGTH(field) הפונקציה מחזירה את מספר התווים בשדה LENGTH([case.name]) NUMBER
STARTS_WITH(field, prefix) בודקת אם השדה מתחיל בקידומת (לא תלוי רישיות) STARTS_WITH([CaseCustom.hostname], "srv-") BOOLEAN
ENDS_WITH(field, suffix) בדיקה אם השדה מסתיים בסיומת (לא תלוי-רישיות) ENDS_WITH([AlertCustom.filename], ".exe") BOOLEAN
IS(field, literal) הפונקציה בודקת אם הערך בשדה שווה לערך מילולי (לא תלוי רישיות) IS([alert.priority], "High") BOOLEAN
IS_NOT(field, literal) הפונקציה בודקת אם הערך בשדה לא שווה לערך מילולי (לא תלוי-רישיות) IS_NOT([alert.priority], "Low") BOOLEAN

מילות מפתח ומזהים שמורים

מנוע החישוב שומר מילים ספציפיות לפעולות ולפונקציות לוגיות. אי אפשר להשתמש במונחים האלה כשמות של שדות בהתאמה אישית או כמזהים אחרים בתוך נוסחה:

  • לוגי: AND, OR, NOT, IF, THEN, ELSE
  • ערכים: NULL, TRUE, FALSE
  • פונקציות: CONTAINS, LENGTH, STARTS_WITH, ENDS_WITH, IS, IS_NOT, DOES_NOT_CONTAIN

תאימות של סוגי נתונים

כדי שההערכה תתבצע בהצלחה, צריך לוודא שכל הפעולות והארגומנטים של הפונקציה משתמשים בסוגים תואמים. הסוגים הנתמכים כוללים STRING,‏ NUMBER,‏ BOOLEAN ו-NULL.

הסוג של התוצאה הסופית של הנוסחה חייב להיות זהה לסוג הנדרש של שדה היעד. מכיוון ששדות היעד מוגבלים ל"טקסט חופשי", הנוסחה חייבת בסופו של דבר להחזיר מחרוזת או ערך שאפשר להמיר באופן משתמע לפורמט של היעד.

עיצוב ורווחים

בדרך כלל המערכת מתעלמת מרווחים, מטאבים וממעברי שורה בין טוקנים, אבל הם נדרשים כדי להפריד בין מילות מפתח לבין מזהים. כדאי להשתמש ברווחים לבנים באופן אסטרטגי כדי ליצור נוסחאות מורכבות עם כמה שורות, כך שיהיה קל יותר לתחזק אותן ולבדוק אותן עם עמיתים.

כתיבת נוסחאות אפקטיביות

מנוע החישוב גמיש לגבי רווחים לבנים, אבל כדי למנוע שגיאות לוגיות ולפשט את פתרון הבעיות, מומלץ לפעול לפי תקני הפורמט הבאים.

  • קיבוץ מפורש: השתמשו בסוגריים כדי להגדיר את סדר הפעולות בצורה ברורה, גם כשאתם מסתמכים על קדימות רגילה. כך אפשר למנוע חוסר בהירות לוגית.
  • מבנה חזותי: מוסיפים רווחים מסביב לאופרטורים (==, AND, OR) ומוסיפים שורות חדשות להצהרות מקוננות של IF/THEN כדי שהלוגיקה תהיה קלה לסריקה.
  • אימות סוג: כדי למנוע שגיאות בהערכה, תמיד צריך לוודא שהפלט הסופי של הנוסחה תואם לסוג הצפוי של שדה היעד.

    IF (
        (IS([CaseCustom.event_count], "100") AND NOT IS([case.priority], "Low"))
        OR CONTAINS([case.name], "Critical")
    )
    THEN "Needs Immediate Review"
    ELSE "Standard Review"
    

פתרון בעיות

בקטע הזה מפורטות הציפיות לגבי הביצועים, ומוצעים פתרונות בשירות עצמי לבעיות נפוצות בפריסה שנתקלים בהן כשיוצרים או מנהלים נוסחאות.

זמן אחזור ומגבלות

שדות מחושבים עוברים הערכה באופן סינכרוני בכל פעם ששדה תלות משתנה. כדי לשמור על ביצועי המערכת, שדה מחושב לא יכול להפנות אל שדה מחושב אחר. המערכת חוסמת את התלות השרשרתית הזו כדי למנוע רקורסיה ועיכובים בעיבוד.

תיקון שגיאות

כשכותבים נוסחאות באופן ידני, יכולות להתרחש שגיאות בגלל חוסר התאמה בתחביר או בסוג הנתונים. בטבלה הבאה מפורטים קודי שגיאה ספציפיים שקשורים למסע המשתמש, ופתרונות מדויקים ופרקטיים לכל אחד מהם.

סוג השגיאה שגיאה תיקון
תחביר הנוסחה לא עומדת בכללי התחביר, למשל סוגריים לא תואמים או מילות מפתח באותיות קטנות. מוסיפים סוגריים () לכל התנאים של IF ומוודאים שכל מילות המפתח הן באותיות גדולות.
אימות הנוסחה מפנה לשדה לא ידוע (לדוגמה, [\case.typo]) או שהיא גורמת לחוסר התאמה בין סוגים. בודקים את שמות השדות בסוגריים המרובעים ומוודאים שהפלט תואם לסוג של שדה היעד.
הערכה הנוסחה תקינה אבל נכשלת במהלך ההרצה, ולרוב מוצגת השגיאה ‎ #ERROR!‎. בודקים אם יש בעיות בזמן הריצה, כמו העברת ערך שאינו מחרוזת לפונקציה כמו LENGTH().

שינוי או מחיקה של שדות יעד

המערכת מגנה באופן פעיל על השדות שהנוסחאות שלכם מסתמכות עליהם כדי לשמור על תקינות נתונים. אם תנסו למחוק או לשנות שדה מותאם אישית שמשמש כשדה יעד, המערכת תחסום את הפעולה ותציג אזהרה שמציינת שהשדה נמצא בשימוש פעיל בשדה מחושב.

אימות ובדיקה

אחרי ששומרים חישוב חדש, מאמתים את התוצאות על ידי מעבר לבקשה או להתראה ועדכון של שדה תלות. מוודאים ששדה היעד מאוכלס בערך הצפוי בזמן אמת.

הבעיה עדיין לא נפתרה? קבלת תשובות מחברי הקהילה וממומחי Google SecOps.