סגירת התראות בכמות גדולה

נתמך ב:

במאמר הזה מוסבר איך לסגור באופן פרוגרמטי מספר גדול של התראות באמצעות Google Security Operations API בארכיטקטורת REST. ‫Google ממליצה להשתמש בשיטה הזו במקרים שבהם סגירת ההתראות בפלטפורמה תדרוש יותר מדי זמן.

דרישות מוקדמות

לפני שמתחילים, חשוב לוודא שהתנאים הבאים מתקיימים:

  • סביבת Python: צריך להתקין את Python כדי להריץ את הסקריפטים לדוגמה.
  • דוגמאות ל-API: גישה לapi-samples-python מאגר ב-GitHub.
  • פרטי כניסה: קובץ פרטי כניסה תקין (לדוגמה, .chronicle_credentials.json).
  • ‫jq: מעבד JSON של שורת פקודה שמשמש לניתוח הפלט של ה-API.

חיפוש של זיהויים

קודם כול צריך לזהות את ההתראות (זיהויים של התראות) שרוצים לסגור. משתמשים בסקריפט list_detections.py כדי למצוא זיהויים שמשויכים למזהה כלל ספציפי.

  1. מאתרים את מזהה הכלל ואת פרטי הפרויקט.
  2. מריצים את הסקריפט כדי להוציא את הזיהויים לקובץ JSON. שם קובץ ה-JSON יכול להיות detections.json או temp.json.

פקודה:

python -m detect.v1alpha.list_detections \
  --project_id=$PROJECT_ID \
  --project_instance=$PROJECT_INSTANCE \
  --credentials_file=$CREDENTIALS_FILE \
  --rule_id=$RULE_ID \
  > ip_in_abuseipdb_out.json

חילוץ מזהי זיהוי

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

  1. משתמשים ב-jq כדי לחלץ את מזהי הזיהוי (שמתחילים ב-de_) ממערך ה-JSON.
  2. שומרים את הפלט בקובץ טקסט.

פקודה:

cat ip_in_abuseipdb_out.json | jq -r '.detections[].id' \
  > ip_in_abuseipdb_out.txt

הפעולה הזו יוצרת קובץ עם רשימה של מזהים, לדוגמה de_ad9d2771-a567.....

הגדרת משוב (הפעולה 'סגירה')

כשסוגרים התראה, הסטטוס של המשוב מוגדר ל-CLOSED.

  • התנהגות ברירת מחדל: סקריפט bulk_update_alerts.py משתמש במטען ייעודי (payload) של משוב שמוגדר כברירת מחדל:
    • סטטוס: CLOSED
    • הסיבה: REASON_MAINTENANCE
    • תגובה: automated cleanup.
  • התאמה אישית: אם אתם צריכים לשנות את פסק הדין (למשל ל-FALSE_POSITIVE) או את התגובה, אתם יכולים:
    • עורכים ישירות את המילון DEFAULT_FEEDBACK בקובץ Python.
    • מעבירים פרמטרים של CLI (למשל, --verdict="FALSE_POSITIVE") כדי לשנות ערכים ספציפיים.

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

מריצים את סקריפט העדכון בכמות גדולה באמצעות קובץ הטקסט שיצרתם קודם (ראו שליפת מזהי זיהוי). הסקריפט הזה קורא לשיטה UpdateAlertלכל מזהה ברשימה.

פקודה:

python -m detect.v1alpha.bulk_update_alerts \
  --project_id=$PROJECT_ID \
  --project_instance=$PROJECT_INSTANCE \
  --credentials_file=$CREDENTIALS_FILE \
  --alert_ids_file="$(pwd)/ip_in_abuseipdb_out.txt"

אימות הסגירה (אופציונלי)

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

פקודה:

python -m detect.v1alpha.get_alert \
  --project_id=$PROJECT_ID \
  --project_instance=$PROJECT_INSTANCE \
  --credentials_file=$CREDENTIALS_FILE \
  --alert_id=$ALERT_ID

התוצאה הצפויה: פלט ה-JSON מכיל אובייקט feedbackSummary שכולל את "status": "CLOSED" ואת התגובה שציינתם (לדוגמה, automated cleanup).

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