יצירת לוגיקה באמצעות הכלי לבניית ביטויים

נתמך ב:

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

אחרי שבוחרים placeholder לפרמטר בפעולה של ספר ההפעלה, אפשר להשתמש בתוצאות ה-JSON. התוצאות האלה מספקות מידע מקיף שמוחזר מהפעולה, ואפשר להשתמש בו בפעולות ובזרימות הבאות של Playbook. לפרטים נוספים, קראו את המאמר תרחישי שימוש בכלי לבניית ביטויים.

הצגת הכלי ליצירת ביטויים

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

פונקציות

יש תמיכה בפונקציות הבאות של צינורות:

  • ‫First (x)‎: הפונקציה מחזירה את X הרכיבים הראשונים של מערך.
    דוגמה: alerts | First(2) (אם alerts הוא [{"id": "A"}, {"id": "B"}, {"id": "C"}], הפונקציה מחזירה [{"id": "A"}, {"id": "B"}])
  • ‫Last (x): מחזירה את X הרכיבים האחרונים במערך.
    דוגמה: alerts | Last(1) (אם alerts הוא [{"id": "A"}, {"id": "B"}, {"id": "C"}], הפונקציה מחזירה [{"id": "C"}])
  • ‫Min (KeyPath): מחזירה את הפריט עם הערך המינימלי ממערך. אם מספקים פרמטר keyPath, הפונקציה מחזירה את האובייקט עם הערך המינימלי בנתיב שצוין.‫
    דוגמה: alerts | Min("score") (אם alerts מכיל רשימה של אובייקטים עם שדה score, הפונקציה מחזירה את האובייקט עם הציון הכי נמוך)
  • ‫Max (KeyPath): מחזירה את הפריט עם הערך המקסימלי ממערך. אם מספקים פרמטר keyPath, הפונקציה מחזירה את האובייקט עם הערך המקסימלי בנתיב שצוין.
    דוגמה: alerts | Max("score") (אם alerts מכיל רשימה של אובייקטים עם שדה score, הפונקציה מחזירה את האובייקט עם הציון הכי גבוה)
  • ‫Filter (ConditionKey, Operator, Value): מסננת מערך של אובייקטים ומחזירה רק את האובייקטים שתואמים לתנאי בשדה שצוין.
    • ‫ConditionKey: השדה בכל אובייקט שצריך לבדוק לפי התנאי.
    • אופרטור: האופרטור שבו רוצים להשתמש לתנאי.
      • לקלט של מחרוזת: =, !=, in, not in.
      • לקלט של מספר או תאריך: =, ‏!=, ‏>, ‏>=, ‏ < , ‏<=.
  • ערך: הערך שצריך לבדוק בתנאי.
    דוגמה: alerts | Filter("severity", "=", "HIGH") (הפונקציה מחזירה את כל ההתראות שבהן השדה severity הוא HIGH)
  • ‫dateFormat ("pattern") – עיצוב של מחרוזת תאריך. משתמשים בפרמטר pattern כדי לתאר את הפורמט של מחרוזת התאריך שהזנתם. הפונקציה מתקננת את התאריך לפורמט הבא: YYYY-MM-DD hh:mm:ss.
    דוגמה: timestamp_field | dateFormat("yyyy/MM/ddTHH:mm:ss") (אם timestamp_field הוא ‎ "2024/07/20T10:00:00Z"‎, הפונקציה מחזירה ‎ "2024-07-20 10:00:00"‎)

    אסימוני תבניות נתמכים:

    • ‫Year: yyyy (4 digits), yy (2 digits), y (1 or 2 digits).
    • חודש: MM (01-12), ‏ M (1-12), ‏ MMMM (שם מלא), ‏ MMM (שם מקוצר).
    • יום: dd (01-31), ‏ d (1-31), ‏ dddd (שם היום המלא), ‏ ddd (שם היום המקוצר).
    • שעה: HH (פורמט 24 שעות, 00-23), H (פורמט 24 שעות, 0-23), hh (פורמט 12 שעות, 01-12), h (פורמט 12 שעות, 1-12).
    • דקה: mm (00-59), m (0-59).
    • שנייה: ss (00-59), s (0-59).
    • שניות חלקיות: fff או FFF.
    • אזור זמן: zzz (לדוגמה, -08:00), zz, z.
    • לפני הצהריים/אחרי הצהריים: tt (לפני הצהריים/אחרי הצהריים), t (לפני הצהריים/אחרי הצהריים).
  • ‫Count ()‎: הפונקציה מחזירה את מספר הפריטים במערך הקלט.
    דוגמה: alerts | Count() (אם alerts הוא מערך עם 4 רכיבים, הפונקציה מחזירה 4)
  • OrderBy ("keyPath", "direction")‎: מסדר מערך של אובייקטים לפי הערכים של נתיב מפתח מסוים.
    דוגמה: alerts | OrderBy("score", "DESC") (ממיין את המערך alerts לפי score בסדר יורד)
  • ‫toLower (): המרה של קלט לתווים באותיות קטנות.
    דוגמה: status_field | toLower() (אם status_field הוא OPEN, הפונקציה מחזירה open)
  • ‫toUpper ()‎: המרת קלט לאותיות רישיות.
    דוגמה: severity_field | toUpper() (If severity_field is "high", returns "HIGH")
  • ‫Replace ("x", "y"): מחליפה מחרוזת משנה בתוך מחרוזת במחרוזת אחרת.
    דוגמה: message_field | Replace("World", "Universe") (אם message_field הוא "Hello World", הפונקציה מחזירה את "Hello Universe")
  • ‫Distinct ()‎: הסרת ערכים כפולים ממערך. למערכים של אובייקטים, הפונקציה מבצעת השוואה מעמיקה כדי לזהות אובייקטים כפולים.
    דוגמה: [10, 20, 30, 20, 40] | Distinct() (הפונקציה מחזירה [10, 20, 30, 40])
  • ‫getByIndex ("index"): אחזור פריטים ממערך לפי אינדקס שצוין או רשימת אינדקסים.
    דוגמה: alerts | getByIndex("0") (הפונקציה מחזירה את הרכיב הראשון במערך alerts)
    דוגמה: alerts | getByIndex("0,2") (הפונקציה מחזירה את הרכיב הראשון והשלישי במערך alerts)
  • split ("delimiter")‎: הפונקציה הזו מחלקת מחרוזת למערך של מחרוזות משנה, באמצעות תו מפריד שצוין.
    לדוגמה: "tag1,tag2,tag3" | split(",") (התוצאה: ["tag1", "tag2", "tag3"])
  • ‫join ("delimiter"): שרשור של מערך מחרוזות למחרוזת אחת, באמצעות מפריד שצוין.
    דוגמה: ["malware", "critical"] | join(" & ") (הפונקציה מחזירה את הערך malware & critical)
  • ‫trim (): מסירה רווחים לבנים בתחילת הטקסט ובסופו.
    דוגמה: " hello world " | trim() (הפונקציה מחזירה את הערך "hello world")
  • ‫trimChars ("characters")‎: הפונקציה מסירה תווים שצוינו מתחילת המחרוזת ומסופה. רווחים לבנים בתחילת הטקסט ובסופו תמיד מוסרים, גם אם לא צוין אחרת.
    דוגמה: "--TEST--ABC--" | trimChars("-") (הפונקציה מחזירה TEST--ABC)
  • ‫substring (start, end): מחלצת מחרוזת משנה ממחרוזת, באמצעות אינדקס התחלה שצוין ואינדקס סיום אופציונלי.
    דוגמה: "Hello World" | substring(0, 5) (הפונקציה מחזירה Hello)
    דוגמה: "Hello World" | substring(6) (הפונקציה מחזירה World)
  • ‫incrementValue (value): מגדיל ערך מספרי בסכום שצוין. אם לא מציינים סכום, הערך גדל ב-1.
    דוגמה: score_field | incrementValue(5) (אם הערך של score_field הוא 90, הפונקציה מחזירה 95)
    דוגמה: counter_field | incrementValue() (אם הערך של counter_field הוא 10, הפונקציה מחזירה 11)
  • ‫setIfEmpty ("defaultValue"): מחזירה את ערך ברירת המחדל שצוין אם ערך הקלט ריק.
    דוגמה: optional_field | setIfEmpty("N/A") (If optional_field is empty, returns "לא רלוונטי"; otherwise, returns the value of optional_field)
  • ‫toUnixtime (): ממירה מחרוזת של תאריך ושעה קריאה לאנשים (למשל, ‎2014/03/12T13:37:27Z או ‎2014-03-12T13:37:27+01:00) לחותמת זמן של Unix, שמוצגת ב-UTC.
    לדוגמה: "2024-07-20T10:00:00Z" | toUnixtime() (הפונקציה מחזירה 1721469600)
  • ‫ifThenElse ("operator", "comparedValue", "trueResult", "falseResult") – בודקת תנאי ומחזירה את הביטוי הראשון אם התנאי מתקיים, אחרת מחזירה את הביטוי השני.
    דוגמה: severity_field | ifThenElse("=", "HIGH", "High Priority", "Normal Priority") (אם severity_field הוא HIGH, הפונקציה מחזירה High Priority, אחרת היא מחזירה Normal Priority)
    דוגמה: score_field | ifThenElse(">", "70", "Above Threshold", "Below Threshold") (אם score_field הוא 90, הפונקציה מחזירה Above Threshold, אם score_field הוא 60, הפונקציה מחזירה Below Threshold)

ביטוי

בשדה Expression (ביטוי) מוסיפים את התוצאות של ה-JSON יחד עם הפונקציות והצינורות כדי להוסיף כמה פונקציות יחד וליצור את הביטוי.

הרצה / תוצאות

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

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