ניהול החרגות של כללים
במאמר הזה מוסבר איך לנהל באופן פרוגרמטי החרגות של כללים ב-Google Security Operations באמצעות ה-API. החרגות משמשות כמסננים שאתם מגדירים על סמך שדות של Unified Data Model (UDM) כדי למנוע יצירת התראות מזיהויים ספציפיים. המסננים האלה מזהים פעילויות מוכרות או בטוחות, וכך מפחיתים את הרעש המיותר בלוח הבקרה.
יצירת החרגה באמצעות מסנני תוצאות
אתם יכולים ליצור כלל חדש להחרגה באופן פרוגרמטי כדי להשתיק ממצאים ספציפיים של זיהוי שתואמים לקריטריונים שהגדרתם, וכך לצמצם את הרעש ולהגדיר עדיפות להתראות עם רמת מהימנות גבוהה.
משתמשים בנקודת הקצה POST כדי להגדיר את לוגיקת ההשבתה. כל המסננים במערך outcomeFilters מקושרים באמצעות פסקה מרומזת של AND.
Method: POST
נקודת קצה:
https://REGION-chronicle.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION/instances/INSTANCE_ID
מחליפים את מה שכתוב בשדות הבאים:
REGION: האזור Google Cloud של מופע Google SecOps.
PROJECT_ID: מזהה הפרויקט ב- Google Cloud .
LOCATION: המיקום של מופע Google SecOps (לרוב זהה לאזור).
INSTANCE_ID: המזהה של מופע Google SecOps.
דוגמה:
POST https://us-chronicle.googleapis.com/v1/projects/my-project/locations/us/instances/my-instance/findingsRefinements
גוף הבקשה:
{
"displayName": "Exclusion with outcome filters",
"type": "DETECTION_EXCLUSION",
"query": "principal.hostname = \"altostrat.com\"",
"outcomeFilters": [
{
"outcome_variable": "ip",
"outcome_value": "127.0.01",
"outcome_filter_operator": "EQUAL"
},
{
"outcome_variable": "hostnames",
"outcome_value": "altostrat.com",
"outcome_filter_operator": "CONTAINS"
}
]
}
בדוגמה הזו מוסבר איך להגדיר לוגיקה של השבתה שבה כמה מסננים במערך outcomeFilters מקושרים באמצעות פסקה מרומזת של AND.
שדות חובה: displayName, type, query
שדות שנוצרו על ידי המערכת: לא מציינים name, createTime או updateTime.
הפרמטרים האלה מנוהלים על ידי המערכת, והמערכת מתעלמת מהם או שהם גורמים לשגיאות אם הם נכללים בבקשה.
לוגיקת ההסתרה מבוססת על קשר מסוג AND. הבקשה יוצרת החרגה שמבטלת כל זיהוי של אירוע עם המאפיינים הבאים:
"altostrat.com" כשם המארח הראשי
משתנה התוצאה
ipעם ערך של127.0.0.1משתנה תוצאה
hostnamesשלפחות אחד מהערכים המצטברים שלו הואaltostrat.com.
כל המסננים שצוינו בהחרגה מקושרים באופן מרומז באמצעות פסקה AND.
תגובה מה-API: ה-API מחזיר את שם המשאב FindingsRefinement.
המשאב FindingsRefinement מכיל את הלוגיקה הבסיסית של ההסתרה (המסננים של השאילתה והתוצאה). שם המשאב (המזהה) משמש לפעולות הבאות על ההחרגה
גישה להחרגה
אפשר להשתמש בנקודת הקצה GET כדי לבצע את הפעולות הבאות:
קבלת הפרטים של הגדרת החרגה יחידה לפי המזהה הייחודי שלה.
כשרוצים לבדוק שאילתה ספציפית
refinement-idאו מסננים של תוצאות שהיא מכילה.
Method: GET
נקודת קצה:
https://REGION-chronicle.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION/instances/INSTANCE_ID/findingsRefinements
מחליפים את מה שכתוב בשדות הבאים:
REGION: האזור Google Cloud של מופע Google SecOps.
PROJECT_ID: מזהה הפרויקט ב- Google Cloud .
LOCATION: המיקום של מופע Google SecOps (לרוב זהה לאזור).
INSTANCE_ID: המזהה של מופע Google SecOps.
דוגמה:
GET https://us-chronicle.googleapis.com/v1/projects/0123456789/locations/us/instances/01234567-89ab-cdef-fedc-ba9876543210/findingsRefinements/fr_00001111-2222-3333-4444-555566667777
החלת החרגה על כלל או על קבוצת כללים
צריך להחיל את ההחרגה על כללים ספציפיים או על קבוצות כללים שנבחרו בקפידה.
כשמחילים את ההחרגה על כלל או על קבוצת כללים, נוצר משאב FindingsRefinementDeployment. אתם יכולים להשתמש במשאב הזה כדי לקבוע את הכללים המותאמים אישית, הכללים שנבחרו או קבוצות הכללים שנבחרו שחלים על משאב FindingsRefinement. לאחר מכן, תוכלו לציין את הפרמטר update_mask בבקשת ה-API כדי לציין אילו שדות באובייקט FindingsRefinementDeployment צריך לעדכן.
Method: PATCH
נקודת קצה:
https://REGION-chronicle.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION/instances/INSTANCE_ID/findingsRefinements/REFINEMENT_ID
מחליפים את מה שכתוב בשדות הבאים:
REGION: האזור Google Cloud של מופע Google SecOps.
PROJECT_ID: מזהה הפרויקט ב- Google Cloud .
LOCATION: המיקום של מופע Google SecOps (לרוב זהה לאזור).
INSTANCE_ID: המזהה של מופע Google SecOps.
REFINEMENT_ID: המזהה הייחודי של שיפור הממצאים.
דוגמה:
PATCH https://us-chronicle.googleapis.com/v1/projects/0123456789/locations/us/instances/01234567-89ab-cdef-fedc-ba9876543210/findingsRefinements/fr_00001111-2222-3333-4444-555566667777?update_mask=enabled,detectionExclusionApplication
גוף הבקשה:
{
"name": "projects/0123456789/locations/us/instances/01234567-89ab-cdef-fedc-ba9876543210/findingsRefinements/fr_00001111-2222-3333-4444-555566667777"
"enabled": true,
"detectionExclusionApplication": {
"curatedRuleSets": [
...list curated rule set resource names
],
"curatedRules": [
...list curated rule resource names
],
"rules": [
...list rule resource names
],
}
}
כשמחילים את ההחרגה על כלל או על קבוצת כללים, המערכת יוצרת משאב FindingsRefinementDeployment. המשאב הזה קובע אילו כללים מותאמים אישית, כללים שנבחרו בקפידה וקבוצות כללים שנבחרו בקפידה חלים על משאב FindingsRefinement. אפשר גם לכלול את הפרמטר update_mask בבקשת ה-API כדי לציין אילו שדות ב-FindingsRefinementDeployment צריך לעדכן.
גישה לפריסה של ההחרגה
אחרי שיוצרים או מעדכנים החרגה, אפשר להשתמש בנקודת הקצה הזו כדי לוודא באילו כללים או קבוצות כללים ההחרגה הספציפית הזו מופעלת.
Method: GET
נקודת קצה:
https://REGION-chronicle.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION/instances/INSTANCE_ID/findingsRefinements/REFINEMENT_ID
מחליפים את מה שכתוב בשדות הבאים:
REGION: האזור Google Cloud של מופע Google SecOps.
PROJECT_ID: מזהה הפרויקט ב- Google Cloud .
LOCATION: המיקום של מופע Google SecOps (לרוב זהה לאזור).
INSTANCE_ID: המזהה של מופע Google SecOps.
REFINEMENT_ID: המזהה הייחודי של שיפור הממצאים.
דוגמה:
GET https://us-chronicle.googleapis.com/v1/projects/0123456789/locations/us/instances/01234567-89ab-cdef-fedc-ba9876543210/findingsRefinements/fr_00001111-2222-3333-4444-555566667777/deployment
הצגת כל ההחרגות
אפשר להשתמש בנקודת הקצה הזו כדי לאחזר את רשימת משאבי findingsRefinements.
Method: GET
נקודת קצה:
https://REGION-chronicle.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION/instances/INSTANCE_ID/findingsRefinements
מחליפים את מה שכתוב בשדות הבאים:
REGION: האזור Google Cloud של מופע Google SecOps.
PROJECT_ID: מזהה הפרויקט ב- Google Cloud .
LOCATION: המיקום של מופע Google SecOps (לרוב זהה לאזור).
INSTANCE_ID: המזהה של מופע Google SecOps.
דוגמה:
GET https://us-chronicle.googleapis.com/v1/projects/0123456789/locations/us/instances/01234567-89ab-cdef-fedc-ba9876543210/findingsRefinements
פרמטרים אופציונליים של שאילתה: pageSize, pageToken
אפשר להשתמש בפרמטרים האופציונליים כדי להציג רשימה של תוצאות נוספות, בדומה לנקודות קצה אחרות של רשימות ב-API.
הצגת רשימה של כל פריסות ההחרגות
אפשר להשתמש בנקודת הקצה הזו כדי לקבל את רשימת משאבי FindingsRefinement שנוצרו במופע שלכם.
Method: GET
נקודת קצה:
https://REGION-chronicle.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION/instances/INSTANCE_ID/findingsRefinements
מחליפים את מה שכתוב בשדות הבאים:
REGION: האזור Google Cloud של מופע Google SecOps.
PROJECT_ID: מזהה הפרויקט ב- Google Cloud .
LOCATION: המיקום של מופע Google SecOps (לרוב זהה לאזור).
INSTANCE_ID: המזהה של מופע Google SecOps.
דוגמה:
GET https://us-chronicle.googleapis.com/v1/projects/0123456789/locations/us/instances/01234567-89ab-cdef-fedc-ba9876543210:listAllFindingsRefinementDeployments
פרמטרים אופציונליים של שאילתה:
כדי להציג עוד תוצאות שדומות לנקודות קצה אחרות של רשימות ב-API, משתמשים בפרמטרים
pageSizeו-pageToken.משתמשים בפרמטר
filterכדי לסנן את הכללים או את קבוצות הכללים שהוחלו עליהם החרגות.
בדיקת החרגה באמצעות ה-API
נקודת הקצה הזו בודקת את ההחרגה מול זיהויים מכללים ומערכות כללים שצוינו, ואז מאמתת את האפקטיביות של ההחרגה בדיכוי זיהויים לא רצויים. בממשק המשתמש נעשה שימוש בנתונים מ-30 הימים האחרונים לצורך בדיקה.
Method: POST
נקודת קצה:
https://REGION-chronicle.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION/instances/INSTANCE_ID:testFindingsRefinement
מחליפים את מה שכתוב בשדות הבאים:
REGION: האזור Google Cloud של מופע Google SecOps.
PROJECT_ID: מזהה הפרויקט ב- Google Cloud .
LOCATION: המיקום של מופע Google SecOps (לרוב זהה לאזור).
INSTANCE_ID: המזהה של מופע Google SecOps.
דוגמה:
POST https://us-chronicle.googleapis.com/v1/projects/0123456789/locations/us/instances/01234567-89ab-cdef-fedc-ba9876543210:testFindingsRefinement
גוף הבקשה:
{
"type": "DETECTION_EXCLUSION",
"query": "principal.hostname = \"altostrat.com\"",
"outcomeFilters": [
{
"outcome_variable": "ip",
"outcome_value": "127.0.01",
"outcome_filter_operator": "EQUAL",
},
{
"outcome_variable": "hostnames",
"outcome_value": "altostrat.com",
"outcome_filter_operator": "CONTAINS",
},
]
"interval": {
"start_time": {
"seconds": 1756684800, // Sep. 1 2025 00:00 UTC
},
"end_time": {
"seconds": 1759276800, // Oct. 1 2025 00:00 UTC
},
},
"detectionExclusionApplication": {
"curatedRuleSets": [
...curated rule set resource names
],
"curatedRules": [
...curated rule resource names
],
"rules": [
...rule resource names
],
}
}
נקודת הקצה הזו בודקת את ההחרגה לגבי זיהויים שנוצרו בכללים ובקבוצות הכללים שצוינו בבקשה. המדד הזה עוזר לקבוע את מידת היעילות של ההחרגה בדיכוי של זיהויים שלא אמורים להתרחש. המערכת משתמשת בנתונים מ-30 הימים האחרונים של זיהויים כטווח הזמן לבדיקת ההחרגות.
מגבלות
בכל ההחרגות (עם או בלי מסנני תוצאות) צריך לציין שדה
query. כדי ליצור החרגה רק עםoutcomeFilters, מציינים ביטוי רגולריmatch-all....other fields in FindingsRefinement query: "principal.hostname = /.*/" outcomeFilters: [ your outcome filters ]הביטוי הרגולרי תואם לכל שם מארח. לכן, השאילתה הזו תתאים לכל הזיהויים. לכן, הסינון האפקטיבי נקבע רק על ידי מסנני התוצאות.
החרגות לא תומכות בהגדרת אורך חיים (TTL). עם זאת, אפשר ליצור TTL חד-פעמי על ידי חישוב מועד התפוגה הספציפי והוספת תנאי של חותמת זמן בהגדרת ההחרגה. לדוגמה, כדי להגדיר החרגה שתפוג בסוף השנה, מציינים את השאילתה באופן הבא:
...other fields in FindingsRefinement query: "metadata.event_timestamp.seconds < 1767225600" // Jan 1 2026 00:00 UTC outcomeFilters: [your outcome filters]בדוגמה הזו אפשר לראות שרק זיהויים שנוצרו על ידי אירועים עם חותמת זמן לפני סוף השנה מושעים.
הערה: יכול להיות שההגדרה הזו לא תוצג בצורה תקינה בחלון עריכת החרגות בממשק המשתמש, כי הוא תומך רק בשדות
string.
הבעיה עדיין לא נפתרה? קבלת תשובות מחברי הקהילה וממומחי Google SecOps.