בדף הזה אנחנו מסבירים איך ליצור ולערוך שאילתות של ממצאים ב-Security Command Center באמצעות החלונית Query editor בדף Findings.
אפשר להשתמש בשאילתות כדי לאחזר ממצאים ספציפיים ולסנן את הממצאים שמוצגים בתוצאות השאילתה.
עריכת שאילתות של ממצאים
בחלונית Query editor (עורך השאילתות), אפשר להוסיף מסננים לשאילתות כדי לבחור ממצאים על סמך ערכי המאפיינים או האטריבוטים שלהם. אפשר לסנן לפי דברים כמו נוכחות של ערכים, היעדר ערכים או התאמה של מחרוזת חלקית.
-
נכנסים לדף Findings ב-Security Command Center במסוף Google Cloud .
- בוחרים את הפרויקט או הארגון. Google Cloud הדף ממצאים נטען עם שאילתת ברירת המחדל שמוצגת בשדה תצוגה מקדימה של שאילתה.
- בצד שמאל של הקטע תצוגה מקדימה של השאילתה, לוחצים על edit עריכת השאילתה כדי לפתוח את החלונית עורך השאילתות.
- לוחצים על הוספת מסנן כדי לעבור אל מסנני מאפיינים מוגדרים מראש, לחפש אותם ולהוסיף אותם לשאילתה.
בתיבת הדו-שיח בחירת מסנן אפשר לבחור מאפיינים וערכים נתמכים של ממצאים.
- בוחרים מאפיין של ממצא או מקלידים את השם שלו בתיבה Search finding attributes. תוצג רשימה של מאפייני המשנה הזמינים.
- בוחרים מאפיין משנה. מוצג שדה בחירה שבו אפשר ליצור את הצהרת השאילתה באמצעות מאפיין המשנה שבחרתם, אופרטור שאילתה וערך אחד או יותר למאפיין המשנה.
- בוחרים את האופרטור וערך אחד או יותר של מאפיין המשנה בחלונית. מידע נוסף על אופרטורים של שאילתות ועל הפונקציות שבהן הם משתמשים זמין במאמר בנושא אופרטורים של שאילתות בתפריט 'הוספת מסננים'.
- לוחצים על אישור.
תיבת הדו-שיח תיסגר והשאילתה תתעדכן.
- חוזרים על הפעולות עד ששאילתת הממצאים מכילה את כל המאפיינים הרצויים.
כשעובדים בכלי לעריכת שאילתות בדף ממצאים, הקטע מסננים מהירים מושבת כדי למנוע התנגשויות בין השניים.
לחלופין, אפשר ליצור שאילתת ממצאים באופן ידני באותו אופן שבו יוצרים מסנן ממצאים באמצעות Security Command Center API. כשמקלידים את השאילתה, מופיע תפריט של השלמה אוטומטית שבו אפשר לבחור שמות של מסננים, פונקציות וערכים. כדי לפתוח ידנית את תפריט ההשלמה האוטומטית, מקישים על Control+Space.
במהלך עריכת שאילתה, העורך מדגיש את השגיאות בשאילתה כדי שתוכלו לתקן אותן לפני שליחת השאילתה.
אופרטורים של שאילתות
ההצהרות של השאילתות לגבי הממצאים של Security Command Center תומכות באופרטורים שרוב ממשקי ה-API תומכים בהם. Google Cloud
ברשימה הבאה מוצג שימוש באופרטורים שונים:
state="ACTIVE" AND NOT mute="MUTED"create_time>"2023-08-15T19:05:32.428Z"resource.parent_name:"prod"severity="CRITICAL" OR severity="HIGH"
ברשימה הבאה מפורטים כל האופרטורים והפונקציות שנתמכים בהצהרות של שאילתות לגבי ממצאים:
למחרוזות:
=להתאמה מדויקתלדוגמה,
resource.parent_name="prod"תואם לערךprod. הוא לא תואם ל-productionאו ל-canaryprod.
:להתאמה חלקיתלדוגמה,
resource.parent_name:"prod"מתאים לערכיםprod,productionו-canaryprod.
למספרים (חוץ מ-int64):
-
<, >, <=, >=לאי-שוויונים -
=,!=לשוויון
-
למספרים (int 64):
-
=,!=לשוויון
-
לערכים בוליאניים:
=for equality
לגבי קשרים לוגיים:
ANDORNOTאו-
לקיבוץ ביטויים:
(,)(סוגריים)
- למערכים:
-
contains(), פונקציה לשליחת שאילתות לגבי ממצאים עם שדה מערך שמכיל לפחות רכיב אחד שתואם למסנן שצוין -
containsOnly(), פונקציה לשליחת שאילתות לגבי ממצאים עם שדה מערך שמכיל רק רכיבים שתואמים למסנן שצוין
-
- לכתובות IP:
-
inIpRange(), פונקציה לשליחת שאילתות לגבי כתובות IP בטווח CIDR שצוין
-
אופרטורים של שאילתות בתפריט 'הוספת מסננים'
בתפריט הוספת מסנן של עורך השאילתות, אופרטורים ופונקציות של שאילתות מיוצגים על ידי מילים או ביטויים, כמו:
- שווה ל: התאמה לממצאים עם ערך המאפיין הזה בדיוק.
- לא שווה ל-: מתאים לממצאים שלא כוללים את ערך המאפיין הזה בדיוק.
- After: התוצאות יכללו ממצאים עם זמן יצירה או עדכון אחרי זמן מסוים שצוין.
- Before: התאמה של ממצאים עם זמן יצירה או עדכון לפני זמן מסוים.
- גדול מ-: התאמה לממצאים עם ערכי מאפיינים שגבוהים מהערך שצוין.
- קטן מ: התוצאות תואמות לערכי מאפיינים שהם נמוכים מהערך שציינתם.
- כולל: התוצאות תואמות לערכי מאפיינים שמכילים את הטקסט שמזינים בשדה מילת מפתח.
- לא מכיל: התוצאות תואמות לערכי מאפיינים שלא מכילים את הטקסט שמזינים בשדה מילת מפתח.
- כדי למצוא מאפיינים שמכילים מערכים:
- מכיל כלשהו: מתאים לממצאים שיש להם ערך מערך שמכיל כל אחד מהטקסטים שהזנתם בשדה מילת מפתח.
- מכיל את כל: מתאים לממצאים שיש להם ערך מערך שמכיל את כל הטקסט שהזנתם בשדה מילת מפתח.
- לא מכיל: מתאים לממצאים שאין להם ערך מערך שמכיל את הטקסט שהזנתם בשדה מילת מפתח.
- מכיל רק: התאמה לממצאים שיש להם מאפיין מערך שמכיל רק את הערך שמזינים בשדה מילת מפתח, ולא ערכים אחרים.
- לכתובות IP:
- Any within IP range: התאמה לממצאים שיש להם כתובת IP בטווח CIDR שצוין.
- לא מכיל כתובות IP בטווח: התוצאות תואמות לממצאים שיש להם כתובת IP שלא נמצאת בטווח CIDR שצוין.
פונקציות של שאילתות
פונקציית שאילתה מספקת הערכות מורכבות יותר של ערכי מאפיינים מאשר אופרטורים נפוצים של שאילתות.
הפונקציה contains
אפשר להשתמש בפונקציה contains כדי להעריך מאפיינים או שדות משנה של מאפיינים שיכולים להופיע כמה פעמים באותה ממצא.
באופן פנימי, המאפיינים האלה או שדות המשנה של המאפיינים מאוחסנים ברכיבים של מבנה נתונים מסוג מערך, ולכן הם נקראים מאפיינים מסוג מערך.
לדוגמה, ממצאים מסוימים יכולים להתייחס לכמה חיבורים לרשת, ולכן המאפיין connections הוא מאפיין מסוג מערך.
באופן דומה, ממצאים מסוימים של איומים יכולים להתייחס למספר כתובות IP כאינדיקטורים לפריצה, ולכן שדה המשנה ip_addresses של המאפיין indicator הוא מאפיין מסוג מערך.
הפונקציה contains משתמשת בתחביר הבא:
contains(ARRAY_ATTRIBUTE_NAME, SUBFILTER)
מחליפים את מה שכתוב בשדות הבאים:
ARRAY_ATTRIBUTE_NAME: השם של מאפיין מסוג מערך שמאוחסן במערך. אם מאפיין מסוג מערך הוא שדה משנה של מאפיין אחר, צריך לציין את שם המאפיין ואת שם שדה המשנה, כשהם מופרדים באמצעות נקודה.בדוגמה הבאה, מאפיין מסוג מערך,
ip_addresses, הוא שדה משנה שלindicator, ולכן שניהם מצוינים במיקוםARRAY_ATTRIBUTE_NAME:contains(indicator.ip_addresses, elem="192.0.2.80")
SUBFILTER: ביטוי שמגדיר איך להעריך כל מופע של מאפיין מסוג מערך. יש תמיכה באופרטורים של שאילתות ובהצהרות הערכה ב-Security Command Center Standard.אם הערך שרוצים לבדוק נמצא בשדה משנה של מאפיין מסוג מערך, מציינים את שם שדה המשנה בצד ימין של הביטוי. הפונקציה
containsהבאה מעריכה כל רכיב במערך שלconnections, שהוא מאפיין מסוג מערך שמכיל שדות משנה. הערכים שנשלחים בשאילתה נמצאים בשדה המשנהdestination_ip, שהוא לא שדה מסוג מערך. הערכים לשאילתה מצוינים באמצעות שם שדה המשנה,destination_ip, במקום הפרמטרelem.contains(connections, destination_ip="192.0.2.80")
אם שדה המשנה הוא מאפיין מסוג מערך, מציינים את המאפיין מסוג מערך בצד ימין של הביטוי עם ההורה שלו, ומשתמשים בפרמטר
elemבצד שמאל של הביטוי כדי לציין את הערך לחיפוש. לדוגמה, הפונקציהcontainsהבאה מעריכה כל רכיב במערך שלip_addresses, שהוא שדה משנה של המאפייןindicator. המאפייןindicatorהוא לא שדה מסוג מערך.contains(indicator.ip_addresses, elem="192.0.2.80")
הפונקציה contains בתפריט 'הוספת מסנן'
בתפריט הוספת מסנן, בהתאם למאפיין הממצא שאתם בודקים, הפונקציה contains מופיעה באופן מפורש או שהיא נכללת באופן אוטומטי כשבוחרים באפשרות סינון אחרת שדורשת אותה.
לדוגמה, בשדה המשנה כתובות IP של מאפיין האינדיקטור, אפשר לבחור את אפשרויות הסינון הבאות:
- מכיל כלשהו
- מכיל הכול
- לא מכיל אף אחת
לעומת זאת, אם מסננים לפי שדה המשנה כתובת IP של היעד של המאפיין חיבורים ובוחרים באפשרות כל כתובת בטווח כתובות ה-IP, הפונקציות contains מתווספות אוטומטית להצהרת השאילתה, כמו שמוצג בדוגמה הבאה:
contains(connections, inIpRange(destination_ip, "2001:db8::/32"))
מידע נוסף על הפונקציה contains זמין במאמר סינון שדות מסוג מערך.
הפונקציה containsOnly
הפונקציה containsOnly מאפשרת לשלוח שאילתות לגבי ממצאים של מאפיינים מסוג מערך או שדות משנה שמכילים רק את הערכים שצוינו במסנן המשנה, ולא ערכים אחרים.
הפונקציה containsOnly משתמשת בתחביר הבא:
containsOnly(ARRAY_ATTRIBUTE_NAME,SUBFILTER)
מחליפים את מה שכתוב בשדות הבאים:
ARRAY_ATTRIBUTE_NAME: השם של מאפיין מסוג מערך. אם מאפיין מסוג מערך הוא שדה משנה של מאפיין אחר, מציינים את שם המאפיין ואת שם שדה המשנה כשהם מופרדים באמצעות נקודה. כשמריצים שאילתות באמצעות מסוף Google Cloud , הפונקציה הזו תומכת רק במאפייני המערךiam_bindings.memberו-iam_bindings.role.
SUBFILTER: ביטוי שמגדיר איך להעריך כל רכיב במאפיין מסוג מערך. יש תמיכה באופרטורים ובמשפטי הערכה רגילים של Security Command Center.
בתפריט הוספת מסנן, אפשרויות הסינון הבאות משתמשות בפונקציה containsOnly:
IAM binding > Member: בוחר רק ממצאים שכוללים את המשתמשים, חשבונות השירות או הקבוצות שצוינו.
IAM binding > Role: בחירה של ממצאים שכוללים רק את התפקידים שצוינו.
בדוגמה הבאה מוצגת שאילתת ממצאים ב Google Cloud מסוף
שמחזירה ממצאים פעילים שלא הושתקו עבור משתמשים בקבוצה example-group:
state="ACTIVE" AND NOT mute="MUTED" AND containsOnly(iam_bindings,member="group:example-group@example.com")
הפונקציה inIpRange
הפונקציה inIpRange בודקת אם כתובת ה-IP במאפיין ממצא נבחר נמצאת בטווח של כתובות IP שאתם מציינים באמצעות סימון CIDR (טווח CIDR). כך נראה התחביר של הפונקציה inIpRange:
inIpRange(ATTRIBUTE_WITH_IP, "CIDR_RANGE")
בתפריט הוספת מסנן, אפשרויות הסינון הבאות משתמשות בפונקציה inIpRange:
- כל הכתובות בטווח ה-IP: נבחרות רק ממצאים שמכילים כתובות IP בטווח שצוין.
- Does not have any within IP range: בוחר רק ממצאים שלא מכילים כתובות IP בטווח שצוין.
בדוגמה הבאה מוצגת שאילתת ממצאים במסוף Google Cloud שמחזירה ממצאים פעילים שלא הושתקו, שבהם שדה המשנה caller_ip של האובייקט access מכיל כתובת IPv6 בטווח CIDR של 2001:db8::/32:
state="ACTIVE" AND NOT mute="MUTED" AND inIpRange(access.caller_ip, "2001:db8::/32")
בדוגמה הבאה מוצגת שאילתת ממצאים שמחזירה ממצאים פעילים שלא בוטל ההשתקה שלהם, שבהם שדה המשנה caller_ip של האובייקט access לא מכיל כתובת IP בטווח CIDR של IPv4 192.0.2.0/24:
state="ACTIVE" AND NOT mute="MUTED" AND NOT inIpRange(access.caller_ip, "192.0.2.0/24")
אם כתובת IP מופיעה במאפיין שיכול להופיע כמה פעמים בתוצאת סריקה, צריך להשתמש בפונקציה contains עם הפונקציה inIpRange כדי לבדוק כל מופע של המאפיין ולחפש בו את כתובת ה-IP. לדוגמה:
contains(connections, inIpRange(source_ip, "192.0.2.0/24"))
מידע נוסף על הפונקציה contains() זמין במאמר הפונקציה contains.
איתור מאפיינים לשאילתות
כדי לבחור את הממצאים שיוצגו, מערכת Security Command Center מעריכה את המאפיינים של כל ממצא שנשמר בהשוואה למסנני המאפיינים שצוינו בשאילתה.
אפשר לשלוח שאילתות לגבי רוב מאפייני הממצאים. יש מאפיינים שמשותפים לכל הממצאים. מאפיינים אחרים עשויים להיות ספציפיים לבעיית אבטחה מסוימת, לקטגוריית ממצאים או לשירות זיהוי.
בתפריט Add filter בחלונית עורך השאילתות, האפשרויות שאפשר להחיל על מסנן מאפיינים משתנות בהתאם לסוג המאפיין שבוחרים, ולשאלה אם למאפיין יש שדות משנה או מערך של ערכים.
בתפריט הוספת מסנן, לוחצים על אחד מהמאפיינים הבאים ברמה העליונה כדי להציג את מאפייני המשנה והערכים שאפשר להשתמש בהם בשאילתת ממצאים:
- ממצא
- משאב
- גישה (
access) - דירוג החשיפה להתקפות
- גיבוי ותוכנית התאוששות מאסון (DR)
- תאימות (
compliances[]) - חיבורים (
connections[]) - אנשי קשר
- קונטיינרים
- מסד נתונים
- אירועי גישה לנתונים
- אירועים של זרימת נתונים
- אירועים של מחיקת נתונים (
DataRetentionDeletionEvent) - העברה לא מורשית של נתונים (
exfiltration) - קבצים
- קישור IAM (
iamBindings[]) - אינדיקטור
- Kernel rootkit
- Kubernetes
- MITRE ATT&CK (
mitreAttack) - תהליכים (
processes[]) - מצב אבטחה
- Sensitive Data Protection
- נקודת חולשה