חיפוש בטבלאות נתונים
טבלאות נתונים הן מבני נתונים עם כמה עמודות שמאפשרים להזין נתונים משלכם ב-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:
בסרגל הצד, בוחרים באפשרות חקירה > טבלאות נתונים.
בחלק העליון של סרגל הצד טבלאות נתונים, לוחצים על יצירה.
בתיבת הדו-שיח יצירת טבלת נתונים חדשה, נותנים לטבלה שם ואפשר גם להוסיף תיאור.
מבצעים אחת מהפעולות הבאות:
- מזינים נתוני CSV באופן ידני או מדביקים נתוני CSV באזור Text (מצב עריכה).
- כדי לייבא נתונים מקובץ CSV או TSV לטבלת הנתונים:
- לוחצים על ייבוא קובץ.
- עוברים לקובץ ולוחצים על פתיחה. תיבת הדו-שיח ייבוא קובץ תיפתח.
- אם בחרתם קובץ TSV בשלב הקודם, מבצעים את הפעולות הבאות:
- ברשימה סוג התו המפריד, בוחרים באפשרות זיהוי אוטומטי או באפשרות Tab (טאב).
- ברשימה התחלת הייבוא בשורה, מציינים את השורה בקובץ שממנה רוצים לייבא את הנתונים.
- לוחצים על ייבוא נתונים.
בוחרים במצב העריכה Table ומגדירים את האפשרויות הבאות לפי הצורך:
לוחצים על 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 הוא ערך השורה המתאים.
הוספת שורה חדשה לטבלת נתונים
כדי להוסיף שורה חדשה, מבצעים את הפעולות הבאות:
- בכרטיסייה פרטים, בוחרים במצב עריכה טבלה.
- לוחצים לחיצה ימנית על שורה קיימת ובוחרים באפשרות הוספת שורה מעל.
- מזינים נתונים לשורה חדשה. השורה הראשונה נחשבת לכותרת הטבלה. חשוב להתאים כל פריט נתונים לעמודת הנתונים ולסוג הנתונים המתאימים.
- לוחצים על Save.
עריכת שורה בטבלת נתונים
כדי לערוך שורה:
- לוחצים על השדה שרוצים לשנות. השדה הופך לעריכה.
- מבצעים את השינויים הרצויים.
- לוחצים על Save.
חיפוש שורות בטבלת הנתונים
אתם יכולים לחפש מידע ספציפי בטבלת נתונים באמצעות ממשק האינטרנט. בכרטיסייה פרטים, מזינים מחרוזת חיפוש בשדה החיפוש ולוחצים על חיפוש. מוצגות השורות שמכילות את מחרוזת החיפוש.
ניהול של זמן החיים (TTL) של שורה בטבלה
כדי לנהל את ערך משך החיים (TTL) של שורות בטבלה, מבצעים את הפעולות הבאות:
לוחצים על הצגת TTL לכל שורה. מוצגת עמודת TTL, שמציינת אם התוקף של כל שורה פג. אם התוקף לא פג, מוצג הזמן שנותר עד לתפוגה.
לוחצים על השעה של תפוגת שורה כברירת מחדל כדי להציג את תיבת הדו-שיח עדכון תפוגת שורה כברירת מחדל ומשנים את ה-TTL של שורת הטבלה.
מזינים ערך חדש של TTL בשדה Hours (שעות) או Days (ימים). הערך המינימלי הוא שעה אחת. הערך המקסימלי הוא 365 ימים.
לוחצים על Save.
התנהגות של שינוי ברירת המחדל של ה-TTL ברמת השורה
השורות מקבלות בירושה את ה-TTL שהוחל ברמת הטבלה. אפשר גם להגדיר TTL ספציפי לשורות בודדות, וה-TTL הזה ברמת השורה מקבל עדיפות על פני ברירת המחדל ברמת הטבלה. כשמוסיפים שורה חדשה, ה-TTL שלה מתחיל מרגע היצירה.
מחיקת שורה בטבלה
כדי למחוק שורה, לוחצים לחיצה ימנית על השורה ובוחרים באפשרות מחיקת שורות.
כדי למחוק כמה שורות, בוחרים את כל השורות שרוצים להסיר. אחר כך לוחצים לחיצה ימנית על אחת מהשורות שנבחרו ובוחרים באפשרות מחיקת שורות.
הסרת טבלת נתונים
כדי להסיר טבלת נתונים:
בסרגל הצד, בוחרים טבלת נתונים מהרשימה טבלאות נתונים.
לוחצים על 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 לטבלת נתונים באמצעות אופרטור השוויון (
=) להשוואות מבוססות שורות. ההשוואה הזו מאפשרת לכם לסנן את הנתונים. השוואה מבוססת-שורות מקבלת את הערךtrueרק אם כל התנאים בהצהרה תואמים לשורה אחת בטבלת הנתונים.
סינון נתוני אירועים וישויות ב-UDM באמצעות טבלת נתונים
אפשר לסנן אירועים וישויות של UDM על ידי השוואה שלהם לרשומות בטבלת נתונים. מצרפים את טבלת הנתונים לאירוע או לישות ב-UDM באמצעות השוואות מבוססות-שורות או מבוססות-עמודות.
השוואות מבוססות-שורות ומבוססות-עמודות בטבלאות נתונים
| סוג ההשוואה | לוגיקה מרכזית | אופרטורים נפוצים | תחביר לדוגמה | מתי משתמשים |
|---|---|---|---|---|
| מבוסס על שורות | כל התנאים צריכים להתקיים באותה שורה | =, !=, >, >=, <, <= |
$e.field = %table.col_a |
כשהקשר בין ערכים של כמה עמודות באותה שורה חשוב. |
| מבוסס-עמודות | הערך חייב להופיע בכל מקום בעמודה | IN, IN regex, IN cidr |
$e.field IN %table.col_b |
כשבודקים אם ערך מסוים קיים בקבוצת ערכים בעמודה אחת. |
מקושרים אירועי UDM לטבלאות נתונים באמצעות שיטות השוואה מבוססות שורה או מבוססות עמודה:
השוואה מבוססת-שורות כדי לקשר אירועי 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 לטבלאות נתונים
כדי לקשר אירועי 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.