שילוב קובץ CSV עם Google SecOps
במאמר הזה מוסבר איך לשלב CSV עם Google Security Operations.
במאמר הזה מוסבר איך לשלב קובץ CSV עם Google Security Operations.
תרחישים לדוגמה
ב-Google SecOps, השילוב של CSV תומך בתרחישי השימוש הבאים:
איתור איומים מבוסס-קובץ: חיפוש מהיר בקובצי יומן CSV מקומיים או מרוחקים של מחרוזות ספציפיות או ישויות זדוניות, כדי לזהות איומים שתועדו בעבר.
יצירת התראות אוטומטית: המערכת קולטת באופן אוטומטי רשומות ממערכות מדור קודם שמפיקות נתונים בפורמט CSV, וממירה אותן להתראות שניתן לפעול לפיהן עם מיפוי חומרת התראות בהתאמה אישית.
ניוד נתונים ודיווח: אפשר להמיר באופן אוטומטי תוצאות JSON מפעולות אחרות ב-Playbook לפורמט CSV, כדי לייצא אותן בקלות לכלי דיווח חיצוניים או לאחסון מקומי.
העשרה אוטומטית של ישויות: אפשר להשתמש בקובצי CSV כמקור מקומי למודיעין איומים כדי להעשיר ישויות באופן אוטומטי ולסמן אותן כחשודות במהלך הפעלת פלייבוק.
סנכרון נתונים בין מערכות שונות: עיבוד יעיל של קבצים עם קידודים שונים של תווים, כמו פורמטים מדור קודם של Excel, כדי להבטיח עקביות של הנתונים בכלים שונים לאבטחה.
לפני שמתחילים
לפני שמגדירים את השילוב ב-Google SecOps, צריך לוודא שיש לכם את הדברים הבאים:
יכולות פלטפורמה פנימיות: השילוב הזה מספק יכולות מובנות לעיבוד קבצים, ולא דורש מפתחות API או פרטי כניסה חיצוניים של צד שלישי לצורך אימות.
הרשאות למערכת הקבצים: אם נעשה שימוש בסוכן מרחוק, השילוב דורש הרשאות ספציפיות כדי לגשת לקבצים במערכת המארחת ולנהל אותם. מריצים את הפקודה הבאה במכונת הסוכן כדי להעניק את ההרשאות הנדרשות לספריית היעד:
chown scripting:scripting "directory_path"
פרמטרים של שילוב
השילוב של CSV מחייב את הפרמטרים הבאים:
| השם המוצג של הפרמטר | סוג | ערך ברירת המחדל | חובה | תיאור |
|---|---|---|---|---|
| שם המכונה | String | לא רלוונטי | לא | שם המופע שרוצים להגדיר עבורו שילוב. |
| תיאור | String | לא רלוונטי | לא | תיאור המופע. |
| הרצה מרחוק | תיבת סימון | התיבה לא מסומנת | לא | מסמנים את התיבה כדי להריץ את השילוב שהוגדר מרחוק. אחרי שמסמנים את התיבה, מופיעה האפשרות לבחור את המשתמש (הסוכן) מרחוק. |
הוראות להגדרת שילוב ב-Google SecOps מופיעות במאמר הגדרת שילובים.
במקרה הצורך, אפשר לבצע שינויים בשלב מאוחר יותר. אחרי שמגדירים מופע של שילוב, אפשר להשתמש בו ב-playbooks. מידע נוסף על הגדרה ותמיכה במספר מופעים זמין במאמר תמיכה במספר מופעים.
פעולות
מידע נוסף על פעולות זמין במאמרים איך מגיבים לפעולות שממתינות לאישור ב-Your Workdesk ואיך מבצעים פעולה ידנית.
שמירת JSON כ-CSV
שמירה של אובייקט JSON כקובץ CSV.
פרמטרים
| שם הפרמטר | סוג | ערך ברירת המחדל | חובה | תיאור |
|---|---|---|---|---|
| אובייקט JSON | JSON | לא רלוונטי | כן | מציינים את אובייקט ה-JSON שרוצים לשמור כקובץ CSV. |
| החלפה | בוליאני | לא נכון | לא | אם האפשרות הזו מופעלת, הפעולה מחליפה את הקובץ הקיים. |
| נתיב הקובץ | String | לא רלוונטי | כן | מציינת את הנתיב המוחלט לקובץ ה-CSV שנוצר. אם מספקים רק את שם הקובץ, הפעולה שומרת את הקובץ בתיקייה /tmp/. |
ריצה
לא רלוונטי
תוצאות הפעולה
תוצאת סקריפט
| שם התוצאה של הסקריפט | ערך |
|---|---|
| is_success | נכון/לא נכון |
תוצאה בפורמט JSON
{"filepath": "{file name}"}
Case Wall
הפעולה מספקת את הודעות הפלט הבאות:
| הודעת פלט | תיאור ההודעה |
|---|---|
| אובייקט ה-JSON הומר ונשמר בנתיב הקובץ שצוין. | הפעולה הושלמה בהצלחה. |
| הקובץ לא נמצא בנתיב שצוין. | הקובץ לא קיים. |
| לא נמצאה פעילות בחשבונות השירות שצוינו ב- Google Cloud כלים לבקרת מדיניות | הפעולה לא הצליחה למצוא נתונים לגבי אף אחד מחשבונות השירות שמופיעים ברשימה. |
| Error executing action "Save JSON To CSV". | הפעולה החזירה שגיאה. צריך לבדוק את החיבור לשרת, את פרמטרי הקלט או את פרטי הכניסה. |
חיפוש לפי מחרוזת
חיפוש מחרוזות בקובצי CSV.
פרמטרים
| שם הפרמטר | סוג | ערך ברירת המחדל | חובה | תיאור |
|---|---|---|---|---|
| נתיב CSV | String | לא רלוונטי | כן | מציינים את נתיב הקובץ של קובץ ה-CSV או את נתיב התיקייה שמכילה את כל קובצי ה-CSV. אם מציינים תיקייה, הפעולה תתבצע על כל קובצי ה-CSV בתיקייה. |
| עמודה בקובץ CSV | String | לא רלוונטי | לא | מציינים רשימה מופרדת בפסיקים של עמודות שיכולות להכיל פרטי ישות. אם לא מציינים עמודה, הפעולה תחפש בכל העמודות. |
| ימים אחורה | String | 10 | לא | מציינים כמה ימים אחורה לעבד את קובצי ה-CSV. |
| ערך החיפוש | String | לא רלוונטי | לא | מציינים מחרוזת שצריך לחפש. אם האפשרות 'חיפוש של כמה מחרוזות' מופעלת, הפרמטר הזה מטופל כרשימה של מחרוזות שמופרדות באמצעות פסיקים, שצריך לחפש. |
| החזרת השורה הראשונה בלבד. | תיבת סימון | התיבה לא מסומנת | לא | אם האפשרות הזו מופעלת, הפעולה תחזיר רק שורה אחת בקובץ הראשון שתואם לישות. |
| סוגי קידוד של קבצים | String | utf-8, latin-1, iso-8859-1 | כן | רשימה של סוגי קידוד CSV מופרדים בפסיקים שמשמשים לפענוח קובצי ה-CSV, למשל: utf-8, latin-1, iso-8859-1, utf-16... הסדר שבו מציינים את סוגי הקידוד קובע את הסדר שבו הם ישמשו לפענוח קבצים, למשל (מהדוגמה שלמעלה): ל-utf-8 יש את העדיפות הכי גבוהה והוא ישמש בעיקר לפענוח כל הקבצים. אם יש קובץ CSV שמשתמש בקידוד אחר, אז ישמש הקידוד הבא בסדר: latin-1, וכן הלאה, עד שימוש בקידוד האחרון. |
| חיפוש של כמה מחרוזות | תיבת סימון | התיבה לא מסומנת | לא | אם האפשרות הזו מופעלת, 'ערך החיפוש' יפעל כרשימה של ערכים שמופרדים בפסיקים, במקום כמחרוזת יחידה. |
| שדות להחזרה | CSV | לא רלוונטי | לא | מציינים רשימה של ערכים שמופרדים בפסיקים שצריך להחזיר. |
תרחישים לדוגמה
חיפוש מחרוזות בקובצי CSV.
ריצה
הפעולה הזו מופעלת על כל הישויות.
תוצאות הפעולה
תוצאת סקריפט
| שם תוצאת התסריט | אפשרויות ערך | דוגמה |
|---|---|---|
| count_rows_csv | כל מספר של שורות | count_rows += 1 |
תוצאה בפורמט JSON
[
{
"EntityResult": {
"Field2": "Value2",
"Field3": "Value3",
"Field1": "Value1",
"Field4": "Value4",
"Field5": "Value5"
},
"Entity": "host"
}, {
"EntityResult": {
"Field2": "Value2",
"Field3": "Value3",
"Field1": "Value1",
"Field4": "Value4",
"Field5": "Value5"
}, "Entity": "1.1.1.1"
}
]
Case Wall
| סוג התוצאה | ערך / תיאור | סוג |
|---|---|---|
| הודעת פלט* | לרשומות שנמצאו: "Successfully found information about the following strings: \n (search_string)" אם לא נמצאו רשומות עבור חלק מהמחרוזות: "לא נמצא מידע על המחרוזות הבאות:" אם אין הצלחה לכל הרשומות:לא נמצא מידע על הפריטים שצוינו. אם כל הקידודים לא תקינים: "שגיאה בהפעלת הפעולה 'חיפוש CSV לפי מחרוזת'. הקידודים שצוינו לא תקינים. כדאי לבדוק את האיות". |
כללי |
חיפוש לפי ישות
חיפוש ישויות בקובצי CSV והוספת מידע עליהן.
פרמטרים
| שם הפרמטר | סוג | ערך ברירת המחדל | חובה | תיאור |
|---|---|---|---|---|
| נתיב CSV | String | לא רלוונטי | כן | מציינים את נתיב הקובץ של קובץ ה-CSV או את נתיב התיקייה שמכילה את כל קובצי ה-CSV. אם מציינים תיקייה, הפעולה תתבצע על כל קובצי ה-CSV בתיקייה. |
| עמודה בקובץ CSV | String | לא רלוונטי | כן | מציינים רשימה מופרדת בפסיקים של עמודות שיכולות להכיל פרטי ישות. אם לא מציינים עמודה, הפעולה תחפש בכל העמודות. |
| ימים אחורה | String | 10 | כן | מציינים כמה ימים אחורה לעבד את קובצי ה-CSV. |
| סימון כ'חשוד' | תיבת סימון | התיבה לא מסומנת | לא | אם האפשרות הזו מופעלת, הפעולה תסמן את הישות כחשודה אם היא נמצאה בקובץ. |
| החזרת השורה הראשונה בלבד. | תיבת סימון | התיבה לא מסומנת | לא | אם האפשרות הזו מופעלת, הפעולה תחזיר רק שורה אחת בקובץ הראשון שתואם לישות. |
| סוגי קידוד של קבצים | String | utf-8, latin-1, iso-8859-1 | כן | רשימה של סוגי קידוד CSV מופרדים בפסיקים שמשמשים לפענוח קובצי ה-CSV, למשל: utf-8, latin-1, iso-8859-1, utf-16... הסדר שבו מציינים את סוגי הקידוד קובע את הסדר שבו הם ישמשו לפענוח קבצים, למשל (מהדוגמה שלמעלה): ל-utf-8 יש את העדיפות הכי גבוהה והוא ישמש בעיקר לפענוח כל הקבצים. אם יש קובץ CSV שמשתמש בקידוד אחר, אז ישמש הקידוד הבא בסדר: latin-1, וכן הלאה, עד שימוש בקידוד האחרון. |
| העשרת ישויות | תיבת סימון | סימן אישור | לא | אם האפשרות הזו מופעלת, הפעולה תוסיף מידע מקובץ ה-CSV לטבלת ההעשרה של הישות. |
| יצירת תובנה | תיבת סימון | סימן אישור | לא | אם האפשרות הזו מופעלת, תובנה תיווצר אם הישות נמצאה בקובץ. |
| שדות להחזרה | CSV | לא רלוונטי | לא | מציינים רשימה של ערכים שמופרדים בפסיקים שצריך להחזיר. |
ריצה
הפעולה הזו מופעלת על כל הישויות.
תוצאות הפעולה
תוצאת סקריפט
| שם תוצאת התסריט | אפשרויות ערך | דוגמה |
|---|---|---|
| count_rows_csv | כל מספר של שורות | count_rows += 1 |
תוצאה בפורמט JSON
[
{
"EntityResult": [{
"domain": "example.dom",
"fileHash": "cbbc5aea3d4c7ec193aa2ff3b52df36ebb12338b18c9bb53fc4896115efaf78d",
"reporter": "Symantec Antivirus",
"app": "Arcsight",
"id": "1011",
"eventTime": "9/4/2017 10:00",
"antivirusAction": "blocked",
"virusName": "ECAT",
"rule": "malicious",
"eventName": "Virus detected",
"User": "Ziv",
"eventHostName": "WS-ZivDevComp",
"File Source Path": "C:\\\\Users\\\\Default\\\\Desktop\\\\stringTimeRaw.csv",
"machineAddress": "192.168.11.11"
}, {
"domain": "SmartCompany.dom",
"fileHash": "cbbc5aea3d4c7ec193aa2ff3b52df36ebb12338b18c9bb53fc4896115efaf78d",
"reporter": "Symantec Antivirus",
"app": "ESM",
"id": "1012",
"eventTime": "9/4/2017 10:00",
"antivirusAction": "allowed",
"virusName": "ECAT",
"rule": "malicious",
"eventName": "Virus detected",
"User": "GG",
"eventHostName": "WS-GGDevComp",
"File Source Path": "C:\\\\Users\\\\Default\\\\Desktop\\\\stringTimeRaw.csv",
"machineAddress": "192.168.11.11"
}],
"Entity": "192.168.11.11"
}
]
Case Wall
| סוג התוצאה | ערך / תיאור | סוג |
|---|---|---|
| הודעת פלט* | לגבי ישויות שנמצאו: "נמצאו פרטים על הישויות הבאות: \n (entity.identifier)" לגבי ישויות שלא נמצאו: "לא נמצא מידע על הישויות הבאות: \n (entity.identifier)" אם אין הצלחה לגבי אף אחת מהישויות: "לא נמצא מידע לגבי הישויות שצוינו". אם כל הקידודים לא תקינים: "שגיאה בהפעלת הפעולה 'חיפוש CSV לפי מחרוזת'. הקידודים שצוינו לא תקינים. כדאי לבדוק את האיות". |
כללי |
פינג
בדיקת הקישוריות.
פרמטרים
לא רלוונטי
ריצה
הפעולה הזו מופעלת על כל הישויות.
תוצאות הפעולה
תוצאת סקריפט
לא רלוונטי
תוצאה בפורמט JSON
N/A
מחברים
מחבר CSV
תמשוך נתונים מקובצי CSV שנמצאים בתיקייה ספציפית, ותמיר את הנתונים האלה להתראות במערכת Google SecOps.
בנושא הזה מוסבר על המנגנון וההגדרה שבאמצעותם Google SecOps יוצר קובצי CSV, וגם על תהליכי העבודה הנתמכים ועל הפעולות שמתבצעות בפלטפורמה.
תרחישים לדוגמה
ללקוח יש קובצי CSV שמגיעים ממערכת, והקובצים יכולים להיות בקידודים שונים.
* Add support for comma-separated encodings in the Encoding field in the
connector.
* The connector should try the different encodings by their order in
the field (first encoding - highest priority, last - lowest
priority) with try/except. If no matching encoding was found -
consider the file as an error and notify.
* Put a default value for the fields - a list of most common CSV
encodings by priority (utf8, latin1, and iso...)
גישה לקובצי CSV
גישת Google SecOps לקובצי CSV: מגדירים תיקייה לקובצי ה-CSV.
העברת רשומות CSV אל Google SecOps
עבודה עם רשומות בקובצי CSV
כשמגדירים את Google SecOps לעבודה עם קובצי CSV כמקור התראות, תתבקשו לציין תיקייה ספציפית שממנה יאוחזרו קובצי ה-CSV. Google SecOps יאחזר כל רשומה בקובץ CSV ויעביר אותה לתרגום, ויספק הקשר כהתראות למקרים.
איך ממפים את רמת החומרה במחבר
כדי למפות את חומרת הבעיה, צריך לציין באיזה שדה להשתמש כדי לקבל את הערך של חומרת הבעיה בפרמטר Severity Field Name (שם השדה של חומרת הבעיה). בתגובה אפשר לקבל 3 סוגים של ערכים: מספרים שלמים, מספרים עשרוניים ומחרוזות. למספרים שלמים ולמספרים עשרוניים, לא צריך לבצע הגדרה נוספת. המחבר יקרא את הערכים האלה וימפה אותם בהתאם לתקנים של Google SecOps. תזכורת קצרה לגבי המיפוי של ערכים מספריים שלמים:
- 100 – קריטית
- 100 > x >= 80 גבוה
- 80 > x >=60 בינוני
- 60 > x >=40 נמוך
- 40 > x לצורך מידע
אם בתגובה אנחנו עובדים עם מחרוזות, נדרשת הגדרה נוספת. בתיקייה שבה נמצאים סקריפטים של מחברים, יהיה קובץ הגדרה בשם severity_map_config.json. הקובץ הזה מגדיר כללי מיפוי לחומרה.
בתחילה, הקובץ ייראה כך: 1 2 3 { "Default": 50 }
נניח שהערכים הנדרשים נמצאים ב-event.severity. הערכים האפשריים של event.severity הם: Malicious, Benign ו-Unknown.
קודם צריך לציין בפרמטר 'שם שדה חומרת האירוע' שנשתמש ב-event.severity. בשלב השני, צריך לעדכן את קובץ ההגדרות. אחרי השינויים, קובץ severity_map_config.json צריך להיראות כך: 1 2 3 4 5 6 7 8 {
"event.severity": { "Malicious": 100, "Unknown": 60, "Benign": -1 }, "Default":
50 }
עכשיו, כשהמחבר יקבל אירוע עם event.severity = "Malicious", הוא יקצה לו חומרה קריטית.
הגדרת מחבר CSV ב-Google SecOps
הוראות מפורטות להגדרת מחבר ב-Google SecOps מופיעות במאמר בנושא הגדרת המחבר.
פרמטרים של מחברים
משתמשים בפרמטרים הבאים כדי להגדיר את המחבר:
| שם הפרמטר | סוג | ערך ברירת המחדל | חובה | תיאור |
|---|---|---|---|---|
| שם שדה המוצר | String | device_product | כן | שם השדה שמשמש לקביעת מוצר המכשיר. |
| שם השדה של האירוע | String | name | לא | שם השדה שמשמש לקביעת שם האירוע (סוג משנה). |
| זמן קצוב לסקריפט (בשניות) | String | 60 | כן | מגבלת הזמן הקצוב לתפוגה (בשניות) לתהליך Python שמריץ את הסקריפט הנוכחי. |
| נתיב תיקיית CSV | String | לא רלוונטי | כן | נתיב התיקייה שמכילה את כל קובצי ה-CSV שצריך להטמיע. |
| מגבלת CSV | String | לא רלוונטי | לא | כמה קובצי CSV לעבד בכל איטרציה. |
| שם השדה במחולל הכללים | String | לא רלוונטי | לא | שם השדה שמכיל מידע על יוצר הכלל. |
| שם שדה הזמן | String | לא רלוונטי | לא | שם השדה שמכיל מידע על זמן האירוע. |
| לקובץ ה-CSV יש כותרת | תיבת סימון | סימן אישור | כן | מציין אם קובץ ה-CSV כולל כותרת. |
| סוג קידוד הקובץ | String | utf-8 | כן | מגדירים את סוג הקידוד של קובץ ה-CSV, למשל iso-8859-1, latin1, utf-8, utf-16. |
| שם שדה ההתראה | String | לא רלוונטי | לא | שם השדה שמכיל מידע על שם ההתראה. |
| שם שדה החומרה | String | לא רלוונטי | לא | שם השדה שמכיל מידע על חומרת הבעיה. |
כללים של מחברים
תמיכה בשרת proxy
המחבר לא תומך ב-Proxy.
הבעיה עדיין לא נפתרה? קבלת תשובות מחברי הקהילה וממומחי Google SecOps.