סגירת התראות בכמות גדולה
במאמר הזה מוסבר איך לסגור באופן פרוגרמטי מספר גדול של התראות באמצעות Google Security Operations API בארכיטקטורת REST. Google ממליצה להשתמש בשיטה הזו במקרים שבהם סגירת ההתראות בפלטפורמה תדרוש יותר מדי זמן.
דרישות מוקדמות
לפני שמתחילים, חשוב לוודא שהתנאים הבאים מתקיימים:
- סביבת Python: צריך להתקין את Python כדי להריץ את הסקריפטים לדוגמה.
- דוגמאות ל-API: גישה ל
api-samples-pythonמאגר ב-GitHub. - פרטי כניסה: קובץ פרטי כניסה תקין (לדוגמה,
.chronicle_credentials.json). - jq: מעבד JSON של שורת פקודה שמשמש לניתוח הפלט של ה-API.
חיפוש של זיהויים
קודם כול צריך לזהות את ההתראות (זיהויים של התראות) שרוצים לסגור. משתמשים בסקריפט list_detections.py כדי למצוא זיהויים שמשויכים למזהה כלל ספציפי.
- מאתרים את מזהה הכלל ואת פרטי הפרויקט.
- מריצים את הסקריפט כדי להוציא את הזיהויים לקובץ 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, ועכשיו אתם צריכים להמיר אותו לקובץ טקסט.
- משתמשים ב-
jqכדי לחלץ את מזהי הזיהוי (שמתחילים ב-de_) ממערך ה-JSON. - שומרים את הפלט בקובץ טקסט.
פקודה:
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.