חיפוש בטבלאות נתונים

נתמך ב:

טבלאות נתונים הן מבני נתונים עם כמה עמודות שמאפשרים להזין נתונים משלכם ב-Google Security Operations. טבלאות נתונים יכולות לשמש כטבלאות חיפוש עם עמודות מוגדרות, והנתונים מאוחסנים בשורות. אתם יכולים ליצור או לייבא טבלת נתונים לחשבון Google SecOps באמצעות ממשק האינטרנט של Google SecOps, ה-API של טבלאות הנתונים או שאילתה של סקירה כללית של YARA-L 2.0.

הקצאת הרשאות לטבלאות נתונים באמצעות RBAC של נתונים

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

ניהול טבלאות נתונים באמצעות ממשק האינטרנט של Google SecOps

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

גישה לטבלאות הנתונים

כדי לגשת לדף Data Tables:

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

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

הוספת טבלת נתונים חדשה

כשמוסיפים טבלת נתונים חדשה, אפשר להזין נתוני CSV באופן ידני, להדביק נתוני CSV או לייבא קובץ CSV או TSV לטבלת הנתונים.

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

כדי להוסיף טבלת נתונים חדשה ל-Google SecOps:

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

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

  3. בתיבת הדו-שיח יצירת טבלת נתונים חדשה, נותנים לטבלה שם ואפשר גם להוסיף תיאור.

  4. מבצעים אחת מהפעולות הבאות:

    • מזינים נתוני CSV באופן ידני או מדביקים נתוני CSV באזור Text (מצב עריכה).
    • כדי לייבא נתונים מקובץ CSV או TSV לטבלת הנתונים:
    1. לוחצים על ייבוא קובץ.
    2. עוברים לקובץ ולוחצים על פתיחה. תיבת הדו-שיח ייבוא קובץ תיפתח.
    3. אם בחרתם קובץ TSV בשלב הקודם, מבצעים את הפעולות הבאות:
      1. ברשימה סוג התו המפריד, בוחרים באפשרות זיהוי אוטומטי או באפשרות Tab (טאב).
      2. ברשימה התחלת הייבוא בשורה, מציינים את השורה בקובץ שממנה רוצים לייבא את הנתונים.
    4. לוחצים על ייבוא נתונים.
  5. בוחרים במצב העריכה Table ומגדירים את האפשרויות הבאות לפי הצורך:

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

מיפוי של סוגי נתונים לעמודות בטבלת נתונים

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

אפשר למפות שדות נתונים בודדים לעמודת נתונים, ולמפות שדות נתונים חוזרים לעמודת נתונים באמצעות ממשק האינטרנט או ה-API, באופן הבא:

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

  • בבקשות API, מגדירים את repeated_values לערך true.

מידע נוסף מופיע במאמר שדות חוזרים.

בדוגמה הבאה, העמודה Field_value בטבלת הנתונים מכילה ערכים של כמה שדות:

Field_value Field_name
altostrat.com FQDN
192.0.2.135 קניין רוחני (IP)
charlie userid
דוגמה שם המארח

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

FQDN קניין רוחני (IP) Userid שם המארח
altostrat.com 192.0.2.135 צ'רלי דוגמה
… … … …

הגדרת עמודות מרכזיות

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

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

הגדרת עמודות לתמיכה בשדות חוזרים

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

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

מיפוי שמות של עמודות לשדות של ישויות (אופציונלי)

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

בדוגמה הבאה של טבלת נתונים, העמודות Userid ו-Role ממופות לעמודות entity.user.userid ו-entity.user.attribute.role.name, בהתאמה:

מספר משתמש
(מיפוי אל entity.user.userid)
אימייל תפקיד
(מיפוי אל entity.user.attribute.role.name)
שקע jack123@gmail.com אדמין
מפואר tony123@gmail.com מהנדס

אפשר למפות עמודה בטבלת נתונים לשדה פרוטו של ישות באמצעות השדה mapped_column_path של משאב DataTable.

בעמודות ללא נתיב ישות מוגדר, כמו Email בטבלת הדוגמה הזו, צריך לציין סוג נתונים באופן ידני. כמו ברשימות עזר, סוגי הנתונים שנתמכים בטבלאות נתונים הם number,‏ string,‏ regex ו-cidr.

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

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

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

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

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

עריכת שורה בטבלת נתונים

כדי לערוך שורה:

  1. לוחצים על השדה שרוצים לשנות. השדה הופך לעריכה.
  2. מבצעים את השינויים הרצויים.
  3. לוחצים על Save.

חיפוש שורות בטבלת הנתונים

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

ניהול של זמן החיים (TTL) של שורה בטבלה

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

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

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

  3. מזינים ערך חדש של TTL בשדה Hours (שעות) או Days (ימים). הערך המינימלי הוא שעה אחת. הערך המקסימלי הוא 365 ימים.

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

התנהגות של שינוי ברירת המחדל של ה-TTL ברמת השורה

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

מחיקת שורה בטבלה

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

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

הסרת טבלת נתונים

כדי להסיר טבלת נתונים:

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

  2. לוחצים על Delete.

ניהול טבלאות נתונים באמצעות Chronicle API

אפשר גם להשתמש במשאבי REST שזמינים ב-Chronicle API כדי לנהל טבלאות נתונים ב-Google SecOps. ה-API יכול לשכפל את כל התכונות שזמינות בממשק האינטרנט, והוא כולל כמה תכונות נוספות שמאפשרות לנהל טבלאות נתונים עם ביצועים טובים יותר ובקנה מידה גדול יותר.

אלה משאבי REST של טבלת הנתונים:

דוגמה: תחביר של מסנן

בדוגמה הבאה של Chronicle API אפשר לראות איך משתמשים בתחביר filter כדי לחפש את google.com בשורות של טבלת נתונים:

  curl -X GET \
    -H "Authorization: Bearer $(gcloud auth print-access-token)" \
    -H "Content-Type: application/json" \
    "https://staging-chronicle.sandbox.googleapis.com/v1alpha/projects/{$PROJECT}/locations/${REGION}/instances/${INSTANCE}/dataTables/${DATA_TABLE_NAME}/dataTableRows?filter=google.com"

שימוש בטבלאות נתונים ב-Google SecOps

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

אפשר להשתמש בטבלאות נתונים בשילוב עם שאילתות YARA-L גם בחיפוש וגם בכללים.

אפשר להשתמש בטבלאות נתונים בדרכים הבאות:

סינון נתוני אירועים וישויות ב-UDM באמצעות טבלת נתונים

אפשר לסנן אירועים וישויות של UDM על ידי השוואה שלהם לרשומות בטבלת נתונים. מצרפים את טבלת הנתונים לאירוע או לישות ב-UDM באמצעות השוואות מבוססות-שורות או מבוססות-עמודות.

השוואות מבוססות-שורות ומבוססות-עמודות בטבלאות נתונים

סוג ההשוואה לוגיקה מרכזית אופרטורים נפוצים תחביר לדוגמה מתי משתמשים
מבוסס על שורות כל התנאים צריכים להתקיים באותה שורה =, !=, >, >=, <, <= $e.field = %table.col_a כשהקשר בין ערכים של כמה עמודות באותה שורה חשוב.
מבוסס-עמודות הערך חייב להופיע בכל מקום בעמודה IN, IN regex, IN cidr $e.field IN %table.col_b כשבודקים אם ערך מסוים קיים בקבוצת ערכים בעמודה אחת.

מקושרים אירועי UDM לטבלאות נתונים באמצעות שיטות השוואה מבוססות שורה או מבוססות עמודה:

  • כדי לקשר אירועים של UDM לטבלאות נתונים באמצעות השוואה מבוססת-שורה, משתמשים באופרטורים של שוויון (=, !=, >, >=, <, <=).

    לדוגמה: $<udm_variable>.<field_path> = %<data_table_name>.<column_name>

    • אם משתמשים בכמה הצהרות השוואה, כל השדות או התנאים צריכים להיות זהים בשורה של טבלת הנתונים.
    • כדי להשתמש באופרטורים (כמו not, !=, >, >=, <, <=) בשאילתה, צריך לכלול לפחות תנאי join אחד בין שדות UDM לבין שורות בטבלת נתונים.

    • מערכת Google SecOps מתייחסת לכל כלל עם טבלת נתונים join כאל כלל מרובה אירועים, שנדרש בו קטע match בהגדרת הכלל.

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

    • תחביר נכון של הצטרפות:

      לדוגמה, כדי להשתמש ב'החרגה משולבת' שמבוססת על שורות, צריך להשתמש ב-join של left outer ובסעיף where כדי לבדוק אם יש nulls.

    • תחביר שגוי של הצטרפות:

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

      לדוגמה, אל תשתמשו בתחביר הזה: NOT (field1 = %table.col1 AND field2 = %table.col2)

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

  • כדי להשתמש בעמודה של טבלת נתונים מסוג CIDR או regex להשוואה מבוססת-שורות, משתמשים בתחביר הבא:

    net.ip_in_range_cidr($e.principal.ip, %<data_table_name>.<column_name>)
    
    re.regex($e.principal.hostname, %<data_table_name>.<column_name>)
    
  • כדי לקשר אירועי UDM לטבלאות נתונים באמצעות השוואה מבוססת-עמודות, משתמשים במילת המפתח in.

    לדוגמה: $<udm_variable>.<field_path> in %<data_table_name>.<column_name>

  • כדי לסנן אירועים שבהם ערך השדה קיים בעמודה שצוינה (לדוגמה, רשימת חסימה או רשימת היתרים), משתמשים בתחביר הבא: NOT (... IN %table.column)

    לדוגמה: not ($evt_username in %my_data_table.username)

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

    $e.principal.ip in cidr %cidr_data_table.column_name
    
    $e.principal.hostname in regex %regex_data_table.column_name
    
  • כשמשווים בין עמודות בטבלאות נתונים שהן מסוגי הנתונים CIDR או ביטוי רגולרי, מילות המפתח cidr ו-regex הן אופציונליות.

  • אפשר גם להשתמש באופרטור not עם טבלאות נתונים.

    שאילתת הדוגמה הבאה מסננת רשומות שבהן כתובות ה-IP ‏ ($e.principal.ip) לא תואמות לאף אחד מטווחי ה-CIDR שמופיעים בעמודה benign_ip בטבלה cidr_data_table:

    not $e.principal.ip in %data_table.benign_ip
    

שימוש בטבלת נתונים כרשימת הפניות עם כמה עמודות

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

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

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

  • דוגמה לכלל:

    rule udm_in_data_table {
    meta:
      description = "Use data table as multicolumn reference list"
    events:
      $e.metadata.event_type = "NETWORK_CONNECTION"
      $e.security_result.action = "ALLOW"
      $e.target.asset.asset_id = $assetid
    
      // Event hostname matches at least one value in table column hostname.
      $e.target.hostname in %badApps.hostname
    
      // Event IP matches at least one value in table column ip.
      $e.target.ip in %badApps.ip
    
    match:
      $assetid over 1h
    
    condition:
      $e
    }
    
  • דוגמה לחיפוש:

    events:
      $e.metadata.event_type = "NETWORK_CONNECTION"
      $e.security_result.action = "ALLOW"
      $e.target.asset.asset_id = $assetid
    
      // Event hostname matches at least one value in table column hostname.
      $e.target.hostname in %badApps.hostname
    
      // Event IP matches at least one value in table column ip.
      $e.target.ip in %badApps.ip
    

צירופים מבוססי-שורה בין טבלת נתונים לבין אירוע או ישות של UDM

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

כדי להשתמש באופרטורים (כמו not, !=, >, >=, <, <=) בשאילתה, צריך לכלול לפחות join תנאי בין שדות UDM לבין שורות בטבלת הנתונים. ‫Google SecOps מתייחס לכל כלל עם טבלת נתונים join כאל כלל מרובה אירועים, שנדרש עבורו קטע match תואם בהגדרת הכלל.

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

  • יש תמיכה ב-placeholder לטבלאות נתונים בקטע event של שאילתה, אבל הן צריכות להיות מקושרות לאירוע UDM או לישות UDM.

  • בדוגמה הבאה נעשה שימוש בעמודה של טבלת נתונים מסוג string.

    • בדוגמה הזו של שאילתת YARA-L נבדק אם אירוע התחברות של משתמש תואם לשורה ב-example_table.

      • אחד התנאים הוא ש-user ID קיים ב-example_table.
      • שני התנאים צריכים להתקיים באותה שורה ב-example_table כדי שהכלל יופעל.
    • דוגמה לכלל:

      // Check if user exists in a data table and is active in all user login events.
      rule udm_join_data_table {
      
      meta:
        description = "Join data table with UDM event"
      
      events:
        $e.metadata.event_type = "USER_LOGIN"
        $e.security_result.action = "ALLOW"
        $e.principal.user.userid = $userid
      
      // Event must match at least 1 row in the data table 
      // where the uid in the data table row is the userid on the event 
      // and the active date in the same data table row is before the event timestamp.
      %example_table.uid = $userid
      $e.principal.hostname = %example_table.hostname
      
      match:
        $userid over 1h
      
      condition:
        $e
      }
      
    • דוגמה לחיפוש:

      events:
      $e.metadata.event_type = "USER_LOGIN"
      $e.security_result.action = "ALLOW"
      $e.principal.user.userid = $userid
      
      // Event must match at least 1 row in the data table 
      // where the uid in the data table row is the userid on the event 
      // and the active date in the same data table row is before the event timestamp
      
      %example_table.uid = $userid
      $e.principal.hostname = %example_table.hostname
      
  • הדוגמה הבאה ממחישה איך טבלת נתונים ונתוני אירועים של UDM פועלים יחד.

    על סמך הלוגיקה בשאילתת YARA-L הקודמת, משתמש עם user ID 32452 מופיע בזיהוי כ-hostname של המשתמש מהמערכת, ותואם ל-hostname בטבלת הנתונים.

    טבלת נתונים
    uid שם הפריט hostname
    32452 משאבי אנוש host1
    64452 כספים host2
    46364 איטלקית host3
    טבלת אירועי UDM
    principal מטא-נתונים security_result principal
    32452 USER_LOGIN אישור host1
    64589 USER_LOGIN אישור host9
    87352 USER_LOGIN אישור host4

כתיבת תוצאות משאילתות YARA-L בטבלאות נתונים

אפשר לכתוב את התוצאות משאילתות YARA-L לטבלת נתונים. בעזרת התכונה הזו אתם יכולים ליצור טבלאות נתונים מנתוני Google SecOps, ולהשתמש בטבלאות האלה כדי לסנן ולשפר נתונים אחרים.

אתם יכולים להשתמש בתחביר לכתיבת שאילתות ב-YARA-L כדי:

  • הגדרת תחביר YARA-L לכתיבת תוצאות של שאילתות בטבלאות נתונים.

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

  • הנתונים צריכים להיות בהתאם לתחביר ולמוסכמות של YARA-L.

כתיבת זיהויים והתראות בטבלאות נתונים באמצעות YARA-L

אפשר להשתמש בשאילתת YARA-L כדי לשלוח זיהויים והתראות לטבלאות נתונים.

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

מציינים את הפונקציה write_row בקטע הייצוא של שאילתת YARA-L. כתיבת נתונים בטבלת הנתונים חייבת להיות הפעולה האחרונה בשאילתה. כתוצאה מכך, משתני התוצאה נכתבים בטבלת הנתונים.

  • דוגמה

    export:
      %<data_table_name>.write_row(
      data_table_column_x_name: <value>,
      data_table_column_y_name: <value>,
      ...,
      ...,
      data_table_column_z_name: <value>
    )
    // depending on the key column(s), the rows will be updated for existing keys 
    and appended for new keys
    
  • דוגמה: ייצוא תוצאות חיפוש לטבלת נתונים

    events:
      $e.metadata.event_type = "USER_LOGIN"
      $e.security_result.action = "ALLOW"
    
    outcome:
      $user = $e.principal.user.userid
      $ip = $e.target.ip[0] // Assuming target.ip is an array
      $timestamp = $e.metadata.event_timestamp.seconds
    
    export:
      // Write to the data table named 'successful_logins'
      %successful_logins.write_row(
        user: $user,          // Maps $user variable to 'user' column
        ip: $ip,              // Maps $ip variable to 'ip' column
        first_seen: $timestamp // Maps $timestamp variable to 'first_seen' column
      )
    

שינוי טבלת נתונים באמצעות YARA-L

בדוגמה הבאה אפשר לראות איך משנים טבלת נתונים באמצעות YARA-L:

‫TableName: ip_user_domain_table (עמודות המפתח של המפתח הראשי מוגדרות בזמן היצירה)

כתובת IP employee_id* דומיין
192.0.2.10 Dana altostrat.com
‫192.0.2.20 Quinn altostrat.com
192.0.2.30 Lee cymbalgroup.com

הסימן * מציין את המפתח הראשי.

השאילתה הבאה מתעדת שילובים ייחודיים של principal.ip,‏ principal.user.employee_id ו-target.domain. היא מסננת את התוצאות לפי השכיחות של target.domain:

  • דוגמה

    events:
      $e.principal.ip = $principal_ip
      $e.principal.user.employee_id = $principal_user_employee_id
      $e.target.domain.name = $target_domain
      $e.target.domain.prevalence.day_count < 5
    
    // To run this query as a rule, add Condition Section here 
    // condition:$e
    

תוצאות השאילתה:

ip empid דומיין
192.0.2.10 Dana altostrat.com
192.0.2.30 Lee examplepetstore.com
‫192.0.2.20 Quinn altostrat.com

דוגמה: שימוש ב-write_row כדי לכתוב פלט של שאילתה בטבלת נתונים

  • דוגמה לכלל:

    rule udm_write_data_table {
    meta:
        description = "Writeto data table"
    events:
      $e.principal.user.employee_id = $principal_user_employee_id
      $e.target.domain.name = $target_domain
      $e.target.domain.prevalence.day_count < 5
    
    outcome:
      $hostname = $target_domain
      $principal_emp_id = $principal_user_employee_id
    
    condition:
      $e
    
    export:
      %ips_with_hostnames.write_row(
          employeeid:$principal_emp_id,
          hostname:$hostname
      )
    }
    
  • דוגמה לחיפוש:

    events:
      $e.principal.user.employee_id = $principal_user_employee_id
      $e.target.domain.name = $target_domain
      $e.target.domain.prevalence.day_count < 5
    
    outcome:
      $hostname = $target_domain
      $principal_emp_id = $principal_user_employee_id
    
    export:
      %ips_with_hostnames.write_row(
        employeeid:$principal_emp_id,
        hostname:$hostname
      )
    

דוגמה: הסבר על write_row

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

  • דוגמה לכלל:

    rule udm_write_data_table {
    meta:
      description = "Write data table"
    events:
      $e.metadata.event_type = "USER_LOGIN"
      all $e.security_result.action != "BLOCK"
      all $e.security_result.action != "UNKNOWN_ACTION"
    
      $user = $e.principal.user.userid
      $ip = $e.target.ip
      $ts = $e.metadata.event_timestamp.seconds
    
    match:
      $user, $ip over 1h
    
    outcome:
      $first_seen = min($ts)
    
    condition:
      $e
    
    export:
      %successful_logins.write_row(user:$user, ip:$ip)
    }
    
  • דוגמה לחיפוש:

    events:
      $e.metadata.event_type = "USER_LOGIN"
      all $e.security_result.action != "BLOCK"
      all $e.security_result.action != "UNKNOWN_ACTION"
    
      $ts = $e.metadata.event_timestamp.seconds
    
    outcome:
      $user = $e.principal.user.userid
      $ip = $e.target.ip[0]
    
    export:
      %successful_logins.write_row(user:$user, ip:$ip)
    

    אלה נתוני האירוע:

    metadata: {
      event_type: USER_LOGIN
      event_timestamp: { seconds: 1283299200 }
    }
    principal: {
      user: {
        userid: "charlie"
      }
    }
    target: {
      ip: ["192.0.2.135", "192.0.2.136"]
    }
    security_result: {
      action: ALLOW
    }
    
  • הגילויים הבאים מוחזרים כשמריצים את השאילתה הזו ככלל:

    מזהה זיהוי התאמה למשתנה $user Match $ip
    0 charlie 192.0.2.135
    1 charlie 192.0.2.136

    טבלת הנתונים מכילה את הפרטים הבאים:

    user ip
    charlie 192.0.2.135
    charlie 192.0.2.136
  • שאילתת החיפוש הבאה ממחישה את התמיכה שמוצעת בחיפוש לכתיבת ערכים סקלריים בטבלאות נתונים.

    events:
      $e.metadata.event_type = "NETWORK_CONNECTION"
    
    export:
      %summary_table.write_row(col_name: $e.metadata.product_name, Vendor_name: $e.metadata.vendor_name)
    

העשרת תרשים ישויות באמצעות טבלת נתונים

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

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

  • תבנית כלל

    rule entity_graph_template {
    
      meta:
        ...
    
      setup:
        // import the data table into entity graph
        <enrichment_keyword> <join_condition>
    
      events:
        ...
    
      match:
        ...
    
      condition:
        ...
    }
    

אפשר להשתמש בפונקציות הבאות של YARA-L 2.0 כדי לשפר את גרף הישויות באמצעות טבלת נתונים:

  • ‫graph_override: החלפת השורות בתרשים הישויות שתואמות לתנאי הצירוף בנתונים מטבלת הנתונים.

    לדוגמה: [graph_override](?tab=t.0#heading=h.v0fps7eke1if)

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

    בדוגמה הבאה, $g1 הוא המשתנה של תרשים הישויות ו-example_table הוא טבלת הנתונים: graph_append [$g1, %example_table]

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

    • start_time (ממופה ל-metadata.interval.start_time.seconds)

    • end_time (ממופה ל-metadata.interval.end_time.seconds)

    אי אפשר למפות עמודות של טבלת נתונים לשדות של מטא-נתונים באמצעות ממשק האינטרנט. בappend תרחישי שימוש, צריך ליצור טבלאות נתונים באמצעות Chronicle API‏ (https://docs.cloud.google.com/chronicle/docs/reference/rest/v1alpha/projects.locations.instances.dataTables/create)

  • ‫graph_exclude: הסרת השורות בתרשים הישויות שתואמות לתנאי join.

    לדוגמה: [graph_exclude](?tab=t.0#heading=h.o0qbb5paki6g)

תנאי ההצטרפות חייב להיות ביטוי שוויון בין העמודה בטבלת הנתונים לבין השדה בתרשים הישות. בפונקציות graph_override ו-graph_exclude, התחביר לגישה לטבלת נתונים הוא:

<data_table_name>.<column_name>

כל מסנן שמצוין עבור <entity_variable> בקטע האירועים מוחל אחרי השיפור שלו באמצעות טבלת הנתונים.

אחרי שהישות בתרשים הישויות מועשרת בישות בטבלת הנתונים, צריך לצרף את משתנה הישות בתרשים הישויות לישות ב-UDM.

החלפת גרף הישות בנתונים מטבלת הנתונים

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

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

דוגמה: התאמה בהצטרפות יחידה

בדוגמה הבאה, השורות בתרשים הישויות שתואמות לתנאי הצירוף בין העמודה בטבלת הנתונים לבין השדה בתרשים הישויות ($g1.graph.entity.ip = %example_table.my_ip) מוחלפות על ידי טבלת הנתונים.

  • דוגמה

    rule rule_override {
      meta:
      description = "Override entity context with data table before joining with UDM event"
    
      setup:
      //Rows in the entity graph that match the join condition are overridden by the data table
        graph_override ($g1.graph.entity.ip = %example_table.my_ip)
    
      events:
        $e.metadata.event_type = "NETWORK_CONNECTION"
        $e.security_result.action = "ALLOW"
    
        // Filter will be applied after graph is overridden by data table
        $g1.graph.entity.hostname = "ftp01"
    
        // Accessing unmapped columns
        $g1.graph.additional.fields["Owner"] = "alice"
    
        // Joining the UDM event with the enriched entity graph
        $e.target.ip = $iocip
        $g1.graph.entity.ip = $iocip
    
      match:
        $iocip over 1h
    
      condition:
        $e and $g1
    }
    

כדי להשתמש בעמודה לא ממופה (למשל, Owner) של טבלת הנתונים, צריך להשתמש בהצהרה מקבילה עבור $g1.graph.entity.owner = "alice" is $g1.graph.additional.fields["Owner"] = "alice". הסיבה לכך היא שכל העמודות שלא מופו בטבלת הנתונים נכנסות לשדה additional של גרף הישות ($g1).

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

גרף ישויות קיים
שם המארח IP MAC
ftp01 10.1.1.4 …:01
www01 10.1.1.5 …:02
טבלת נתונים
שם המארח IP MAC בעלים
ftp01 10.1.1.4 …:bb alice
h1 10.1.1.6 …:cc אמיר
h2 10.1.1.7 …:dd chris
h3 10.1.1.4 …:ee דאג

גרף ישויות מועשר
שם המארח IP MAC בעלים
ftp01 10.1.1.4 …:bb alice
www01 10.1.1.5 …:02
h3 10.1.1.4 …:ee אלפי

דוגמה: התאמה בכמה הצטרפויות

בדוגמה הבאה, השורות בתרשים הישות שתואמות לכמה תנאי צירוף ($g1.graph.entity.ip = %example_table.my_ip ו-$g1.graph.entity.hostname = %example_table.my_hostname) מוחלפות על ידי טבלת הנתונים.

  • דוגמה

    rule rule_override {
    meta:
      description = "Override Entity context with Data Table before joining with UDM event"
    setup:
      // example with more than one condition
      graph_override ($g1.graph.entity.ip = %example_table.my_ip and
      $g1.graph.entity.hostname = %example_table.my_hostname) 
    events:
      $e.metadata.event_type = "NETWORK_CONNECTION"
      $e.security_result.action = "ALLOW"
    
      // Filter will be applied after graph is overridden by data table
      $g1.graph.entity.hostname = "ftp01"
    
      // joining the UDM event with the enriched entity graph
      $e.target.ip = $iocip
      $g1.graph.entity.ip = $iocip
    
    match:
      $iocip over 1h
    
    condition:
      $e and $g1
    }
    

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

גרף ישויות קיים
שם המארח IP MAC
ftp01 10.1.1.4 …:01
www01 10.1.1.5 …:02
טבלת נתונים
שם המארח IP MAC בעלים
ftp01 10.1.1.4 …:bb alice
h1 10.1.1.5 ‎…:cc אמיר
h2 10.1.1.6 …:dd chris
h3 10.1.1.4 …:ee דאג
גרף ישויות מועשר
שם המארח IP MAC בעלים
ftp01 10.1.1.4 …:bb alice
www01 10.1.1.5 …:02

צירוף נתונים מטבלת הנתונים לגרף הישויות

כשמשתמשים בפונקציה graph_append, לא צריך לציין תנאי לצירוף.

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

  • דוגמה

    rule rule_append {
    meta:
      description = "Data table append entity"
    
    setup:
      graph_append [$g1, %example_table]
    
    events:
      // filter UDM events
      $e.metadata.event_type = "NETWORK_CONNECTION"
      $e.security_result.action = "ALLOW"
    
      // Join the filtered UDM events with the enriched graph
      $e.target.ip = $iocip
      $g1.graph.entity.ip = $iocip
    
    match:
      $iocip over 1h
    
    condition:
      $e and $g1
    }
    

בדוגמה הבאה מוצגת פעולת הוספה שבה השורות בטבלת הנתונים מתווספות לשורות בתרשים הישות:

תרשים ישויות קיים
שם המארח IP MAC
ftp01 10.1.1.4 …:01
www01 10.1.1.5 …:02
טבלת נתונים
IP MAC בעלים
10.1.1.4 …:01 אליס
10.1.1.6 …:cc אמיר
10.1.1.7 …:dd chris
10.1.1.4 …:ee דאג
תרשים ישויות מועשר
שם המארח IP MAC בעלים
ftp01 10.1.1.4 …:01
www01 10.1.1.5 …:02
10.1.1.4 …:bb alice
10.1.1.6 …:cc אמיר
10.1.1.7 …:dd chris
10.1.1.4 …:ee דאג

שימוש ב-graph_exclude כדי להסיר שורות מתרשים הישויות

באמצעות הפונקציה graph_exclude, שורות בתרשים הישויות שתואמות לתנאי הצירוף מוסרות מתרשים הישויות.

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

  • דוגמה

    rule rule_exclude {
    
        meta:
        setup:
          graph_exclude ($g1.graph.entity.ip = %example_table.ip)
    
        events:
            $e.metadata.event_type = "NETWORK_CONNECTION"
            $e.security_result.action = "ALLOW"
            $e.target.ip = $iocip
            $g1.graph.entity.ip = $iocip
    
        match:
            $iocip over 1h
    
        condition:
          $e and $g1
    }
    

הטבלאות הבאות ממחישות פעולת החרגה שבה השורות בתרשים הישות שתואמות לשדה ה-IP בטבלת הנתונים מוסרות:

תרשים ישויות קיים
שם המארח IP MAC
ftp01 10.1.1.4 ‎…:01
www01 10.1.1.5 ‎…:02
טבלת נתונים
IP MAC בעלים
10.1.1.4 …:bb alice
10.1.1.6 ‎…:cc אמיר
10.1.1.7 …:dd chris
תרשים ישויות מועשר
שם המארח IP MAC
www01 10.1.1.5 ‎…:02

מגבלות קצב של API

מכסות השאילתות לדקה (QPM) הבאות נאכפות לכל פרויקט ולכל משתמש כשקוראים לנקודות הקצה של Google SecOps Data Table ו-Data Table Row API בארכיטקטורת REST:

משאב פעולת API מגבלת קצב (רגילה)
DataTables CreateDataTable (data_table/create_requests) 60 שאילתות לדקה
DataTables GetDataTable (data_table/get_requests) ‫120 שאילתות לדקה
DataTables ListDataTables (data_table/list_requests) ‫120 שאילתות לדקה
DataTables UpdateDataTable (data_table/update_requests) ‫60 QPM
DataTables DeleteDataTable (data_table/delete_requests) 60 שאילתות לדקה
DataTableRows CreateDataTableRow (data_table_row/create_requests) ‫60 QPM
DataTableRows GetDataTableRow (data_table_row/get_requests) ‫120 שאילתות לדקה
DataTableRows ListDataTableRows (data_table_row/list_requests) ‫120 שאילתות לדקה
DataTableRows UpdateDataTableRow (data_table_row/update_requests) 60 שאילתות לדקה
DataTableRows DeleteDataTableRow (data_table_row/delete_requests) ‫60 QPM
DataTableRows BulkCreateDataTableRows (סינכרוני / אסינכרוני) ‫30 QPM
DataTableRows BulkReplaceDataTableRows (סנכרון / אסינכרוני) ‫30 שאילתות לדקה
DataTableRows BulkUpdateDataTableRows (סנכרון / אסינכרוני) ‫10 QPM
DataTableRows BulkDeleteDataTableRows (סנכרון / אסינכרוני) ‫30 שאילתות לדקה
DataTableRows BulkGetDataTableRows (data_table_row/bulk_get_requests) ‫120 שאילתות לדקה

מגבלות

  • מספר טבלאות הנתונים המקסימלי בחשבון Google SecOps: ‏1,000.

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

  • השדות בטבלת הנתונים לא תומכים בתו פסיק (,).

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

  • מספר ההצהרות המקסימלי של in בשאילתה לעמודות מסוג הנתונים String ו-Number: 10.

  • המספר המקסימלי של הצהרות in עם אופרטורים של ביטויים רגולריים: 5.

  • המספר המקסימלי של inהצהרות עם אופרטורים של CIDR: ‏ 5.

  • מספר ההצהרות המקסימלי של = (JOIN): 10.

  • מספר העמודות המקסימלי לכל טבלת נתונים: 1,000.

  • מספר השורות המקסימלי בכל טבלת נתונים: 10 מיליון.

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

  • נפח הנתונים המקסימלי בטבלת נתונים: 10GB.

  • אי אפשר להשתמש ב-placeholder בקטע ההגדרה.

  • אפשר לצרף עמודות לא ממופות של טבלת נתונים עם סוג הנתונים string רק לשדות מחרוזת של אירוע UDM או ישות UDM.

  • אפשר להשתמש רק בעמודות לא ממופות בטבלת נתונים עם סוג נתונים שמוגדר כ-cidr או כ-regex עבור CIDR או ביטוי רגולרי.

  • חיפושים בטבלת נתונים: אין תמיכה בתווים כלליים לחיפוש של ביטויים רגולריים, ומונחי החיפוש מוגבלים ל-100 תווים.

מגבלות על שאילתות איחוד (join) של טבלאות נתונים בכללים

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

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

  • בניגוד לישויות ול-UDM, טבלאות נתונים לא תומכות בפלייסהולדרים. הדבר מוביל למגבלות הבאות:

    • אי אפשר להחיל קבוצת מסננים על טבלת נתונים ולצרף אותה לישות UDM.

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

    לדוגמה, טבלת נתונים בשם dt עם שלוש עמודות: my_hostname, ‏ org ו-my_email, ועם הכלל הבא:

    events:
      $e1.principal.hostname =  %dt.my_hostname
      %dt.org ="hr"
    
      $e2.principal.email =  %dt.my_email
      %dt.org !="hr"
    

כל המסננים בטבלת נתונים מופעלים קודם, ואז השורות המסוננות מטבלת הנתונים מצורפות ל-UDM. במקרה הזה, המסננים הסותרים (%dt.org ="hr" and %dt.org !="hr") בטבלה dt יוצרים טבלת נתונים ריקה, שמצורפת לטבלאות e1 ו-e2.

מגבלות בשימוש בטבלאות נתונים עם כללים

המגבלות הבאות חלות על טבלאות נתונים כשמשתמשים בהן עם כללים.

מגבלות על תדירות ההרצה

אין תמיכה בתדירות הפעלה בזמן אמת בכללים עם טבלאות נתונים.

מגבלות על פלט לטבלאות נתונים

  • אין תמיכה במגדירי any ו-all בעמודות של שדות חוזרים בטבלאות נתונים.

  • אינדקס של מערכים לא נתמך בעמודות של שדות חוזרים בטבלאות נתונים.

  • אפשר לייצא משתני תוצאה רק לטבלת נתונים. אי אפשר לייצא ישירות נתיבי אירועים או עמודות של טבלת נתונים.

  • רשימות העמודות חייבות לכלול את עמודות המפתח הראשי של טבלאות הנתונים.

  • אפשר להגדיר עד 20 תוצאות.

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

  • אפשר להגדיר עד חמישה כללים שיכתבו לטבלת נתונים בו-זמנית.

  • אין ערובה לכך שכלל של יצרן יוכל להוסיף שורות לטבלת נתונים לפני שכלל של צרכן עבור אותה טבלת נתונים יתחיל.

  • לכל כלל יש מגבלה על מספר שורות התוצאה. יש מגבלה של 10,000 שורות על התוצאה ועל הנתונים שנשמרו, וגם על טבלאות הנתונים.

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

מגבלות על העשרת ישויות מטבלאות נתונים

  • אפשר להחיל רק פעולת העשרה אחת (override,‏ append או exclude) על משתנה אחד של תרשים ישויות.

  • בכל פעולת העשרה אפשר להשתמש רק בטבלת נתונים אחת.

  • אפשר להגדיר עד שתי פעולות העשרה מכל סוג בקטע setup של כלל YARA-L.

בדוגמה הבאה, פעולת override מוחלת על משתנה גרף היישות $g1, ופעולת append מוחלת על משתנה גרף היישות $g2.

  • none setup: graph_override($g1.graph.entity.user.userid = %table1.myids) graph_append [$g2, %table1]

בדוגמה הקודמת, אותה טבלת נתונים (table1) משמשת לשיפור של גרפים שונים של ישויות. אפשר גם להשתמש בטבלאות נתונים שונות כדי לשפר את תרשימי הישויות השונים, באופן הבא:

  • none setup: graph_override($g1.graph.entity.user.userid = %table1.myids) graph_append [$g2, %table2]

מגבלות בשימוש בטבלאות נתונים עם Search

המגבלות הבאות חלות על טבלאות נתונים כשמשתמשים בהן בחיפוש:

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

  • אם גודל השורות של האירועים חורג מ-5MB, הן לא נכללות בטבלת הנתונים של פלט החיפוש.

  • אין תמיכה בהעשרה של ישויות בחיפוש.

  • אין תמיכה בטבלאות נתונים למשתמשים במפתחות הצפנה בניהול הלקוח (CMEK).

  • הכתיבה מוגבלת ל-6 פעמים בדקה לכל לקוח.

  • טבלת נתונים וצירופי טבלאות נתונים נתמכים רק באירועי UDM, ולא בישויות.

    נתמך: %datatable1.column1 = %datatable2.column1

    לא נתמך: graph.entity.hostname = %sample.test

  • אי אפשר לכלול משתנה match בקטע export של שאילתת נתונים סטטיסטיים.

    לדוגמה, אין תמיכה במקרים הבאים:

      match:
          principal.hostname
      export:
          %sample.write_row(
          row: principal.hostname
        )
    
    

מגבלות כשמשנים את השם של טבלאות נתונים או מוחקים אותן באמצעות Chronicle API או Terraform

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

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