שילוב של OpenSearch עם Google SecOps
במאמר הזה מוסבר איך לשלב את OpenSearch עם Google Security Operations.
תרחישים לדוגמה
השילוב של OpenSearch נותן מענה לתרחישים הבאים של תזמור אבטחה וחקירה:
איתור אוטומטי של איומים: חיפוש תקופתי בכל האינדקסים של OpenSearch לאיתור סימנים מחשידים (IoC) ספציפיים או דפוסים חשודים באמצעות שאילתות Lucene ו-DSL.
הטמעת התראות מרוכזת: הטמעת מסמכים מ-OpenSearch כהתראות שניתן לפעול לפיהן ב-Google SecOps, כדי לוודא שאירועי אבטחה ממאגר הנתונים שלכם מקבלים עדיפות ונחקרים.
אחזור נתונים לפי הקשר: העשרת אירועי אבטחה קיימים על ידי שליפה אוטומטית של יומנים קשורים או נתונים היסטוריים מ-OpenSearch, כדי לספק למנתחים הקשר מעמיק יותר במהלך חקירה.
מיפוי נתונים גמיש: מיפוי דינמי של רמות החומרה ותגי הסביבה ממסמכי OpenSearch לתקנים של Google SecOps כדי לשמור על עקביות בין מקורות שונים של יומנים.
לפני שמתחילים
לפני שמגדירים את השילוב בפלטפורמת Google SecOps, צריך לוודא שיש לכם את הפרטים הבאים:
קובץ אישור CA: קובץ תקין של רשות אישורים לאבטחת החיבור.
הגרסה העדכנית של השילוב: ודאו שאתם משתמשים בגרסה העדכנית ביותר של השילוב עם OpenSearch.
אישור בקידוד Base64: לפני ההגדרה, צריך להמיר את התוכן של קובץ אישור ה-CA למחרוזת Base64.
כדי להגדיר את השילוב עם אישור CA, מבצעים את השלבים הבאים:
- פותחים את דף הפרמטרים של הגדרות השילוב.
- מדביקים את המחרוזת בקידוד Base64 בשדה קובץ אישור CA.
- מסמנים את התיבה אימות SSL.
- לוחצים על בדיקה כדי לוודא שהשילוב הוגדר בהצלחה.
פרמטרים של שילוב
השילוב של OpenSearch דורש את הפרמטרים הבאים:
| פרמטר | תיאור |
|---|---|
Server Address |
חובה. כתובת ה-URL של נקודת הקצה של המכונה של OpenSearch, כולל הפרוטוקול והיציאה (לדוגמה, |
Username |
זה שינוי אופציונלי. שם המשתמש שמשמש לאימות במכונה של OpenSearch. |
Password |
זה שינוי אופציונלי. הסיסמה שמשויכת לשם המשתמש שצוין. |
API Token |
זה שינוי אופציונלי. אסימון ה-API שמשמש לאימות כחלופה לשם משתמש וסיסמה. |
Authenticate |
זה שינוי אופציונלי. אם בוחרים באפשרות הזו, השילוב מאמת את החיבור לשרת OpenSearch באמצעות פרטי הכניסה שסופקו. |
Verify SSL |
זה שינוי אופציונלי. אם האפשרות הזו נבחרת, השילוב מאמת את אישור ה-SSL כשמתחברים לשרת OpenSearch. |
CA Certificate File |
זה שינוי אופציונלי. התוכן של קובץ האישור של רשות האישורים (CA) בפורמט PEM, שמשמש לאימות אישור ה-SSL של השרת. |
איך מגדירים שילובים ב-Google SecOps
אם צריך, אפשר לבצע שינויים בשלב מאוחר יותר. אחרי שמגדירים מופע של אינטגרציה, אפשר להשתמש בו בפלייבוקים. במאמר תמיכה במספר מופעים מוסבר איך להגדיר מספר מופעים ולתמוך בהם.
פעולות
מידע נוסף על פעולות זמין במאמרים מענה לפעולות בהמתנה משולחן העבודה והפעלה ידנית של פעולה בבקשת התמיכה.
חיפוש מתקדם ב-ES
משתמשים בפעולה Advanced ES Search כדי להריץ שאילתת חיפוש שהוגדרה מראש בשרת OpenSearch ולאחזר את התוצאות בפורמט של מילון.
הפעולה הזו לא פועלת על ישויות של Google SecOps.
קלט של הפעולה
הפעולה חיפוש מתקדם ב-ES דורשת את הפרמטרים הבאים:
| פרמטר | תיאור |
|---|---|
Index |
זה שינוי אופציונלי. תבנית החיפוש של אינדקס OpenSearch (לדוגמה, ערך ברירת המחדל הוא |
Query |
זה שינוי אופציונלי. שאילתת החיפוש שרוצים לבצע באמצעות תחביר Lucene (לדוגמה, ערך ברירת המחדל הוא |
Limit |
זה שינוי אופציונלי. המספר המקסימלי של מסמכים שיוחזרו. כדי לא להגביל את המספר, צריך להזין את הערך ערך ברירת המחדל הוא |
Display Field |
זה שינוי אופציונלי. רשימה מופרדת בפסיקים של שדות ספציפיים שרוצים להחזיר. ערך ברירת המחדל הוא |
Search Field |
זה שינוי אופציונלי. השדה הספציפי לחיפוש כש- ערך ברירת המחדל הוא |
Timestamp Field |
זה שינוי אופציונלי. שם השדה שמשמש לסינון לפי זמן. אם גם ערך ברירת המחדל הוא |
Oldest Date |
זה שינוי אופציונלי. תאריך ההתחלה של החיפוש. הפעולה מחזירה רשומות שהתרחשו בחותמת הזמן הזו או אחריה. אפשר לציין חותמת זמן מדויקת לפי שעון UTC ( ערך ברירת המחדל הוא |
Earliest Date |
זה שינוי אופציונלי. תאריך הסיום של החיפוש. הפעולה מחזירה רשומות שהתרחשו בחותמת הזמן הזו או לפניה. אפשר לציין חותמת זמן מדויקת לפי שעון UTC ( ערך ברירת המחדל הוא |
ערכי פלט של פעולות
הפעולה חיפוש מתקדם ב-ES מספקת את הפלטים הבאים:
| סוג הפלט של הפעולה | זמינות |
|---|---|
| חיבור לקיר של המארז | לא זמין |
| קישור ללוח הפניות | לא זמין |
| שולחן קונסולה צמוד לקיר | לא זמין |
| טבלת העשרה | לא זמין |
| תוצאת JSON | לא זמין |
| הודעות פלט | יש גישה |
| תוצאת הסקריפט | יש גישה |
תוצאת הסקריפט
בטבלה הבאה מפורטים הערכים של פלט תוצאות הסקריפט כשמשתמשים בפעולה Advanced ES Search:
| שם תוצאת הסקריפט | ערך |
|---|---|
results |
RESULTS |
חיפוש DSL
משתמשים בפעולה DSL Search כדי לבצע חיפוש מקיף בכל האינדקסים של OpenSearch ולקבל תוצאות בפורמט של מילון.
הפעולה הזו לא פועלת על ישויות של Google SecOps.
קלט של הפעולה
הפעולה DSL Search דורשת את הפרמטרים הבאים:
| פרמטר | תיאור |
|---|---|
Index |
זה שינוי אופציונלי. תבנית החיפוש של אינדקס OpenSearch (לדוגמה, ערך ברירת המחדל הוא |
Query |
זה שינוי אופציונלי. שאילתת החיפוש שרוצים לבצע באמצעות תחביר Lucene (לדוגמה, ערך ברירת המחדל הוא |
Limit |
זה שינוי אופציונלי. המספר המקסימלי של מסמכים שיוחזרו. כדי לא להגביל את המספר, צריך להזין את הערך ערך ברירת המחדל הוא |
ערכי פלט של פעולות
הפעולה DSL Search מספקת את הפלטים הבאים:
| סוג הפלט של הפעולה | זמינות |
|---|---|
| חיבור לקיר של המארז | לא זמין |
| קישור ללוח הפניות | לא זמין |
| שולחן קונסולה צמוד לקיר | לא זמין |
| טבלת העשרה | לא זמין |
| תוצאת JSON | יש גישה |
| הודעות פלט | יש גישה |
| תוצאת הסקריפט | יש גישה |
תוצאת JSON
הדוגמה הבאה מראה את פלט התוצאה בפורמט JSON שמתקבל כשמשתמשים בפעולה DSL Search:
[
{
"_score": 0.2876821,
"_type": "person",
"_id": "2",
"_source": {
"lastname": "Smith",
"name": "John",
"job_description": "Systems administrator"
},
"_index": "accounts"
}, {
"_score": 0.28582606,
"_type": "person",
"_id": "1",
"_source":
{
"lastname": "Doe",
"name": "John",
"job_description": "Systems administrator and Linux specialist"
},
"_index": "accounts"
}
]
תוצאת הסקריפט
בטבלה הבאה מפורטים הערכים של פלט תוצאת הסקריפט כשמשתמשים בפעולה DSL Search:
| שם תוצאת הסקריפט | ערך |
|---|---|
results |
RESULTS |
פינג
משתמשים בפעולה פינג כדי לבדוק את הקישוריות ל-OpenSearch.
הפעולה הזו לא פועלת על ישויות של Google SecOps.
קלט של הפעולה
אין.
ערכי פלט של פעולות
הפעולה פינג מספקת את הפלטים הבאים:
| סוג הפלט של הפעולה | זמינות |
|---|---|
| חיבור לקיר של המארז | לא זמין |
| קישור ללוח הפניות | לא זמין |
| שולחן קונסולה צמוד לקיר | לא זמין |
| טבלת העשרה | לא זמין |
| תוצאת JSON | לא זמין |
| הודעות פלט | יש גישה |
| תוצאת הסקריפט | יש גישה |
תוצאת הסקריפט
בטבלה הבאה מפורטים הערכים של פלט הסקריפט כשמשתמשים בפעולה פינג:
| שם תוצאת הסקריפט | ערך |
|---|---|
| is_success | true או false |
חיפוש פשוט ב-ES
הפעולה Simple ES Search משמשת לביצוע חיפוש בסיסי בכל השדות שנוספו לאינדקס ב-OpenSearch, ולאחזור התוצאות בפורמט של מילון.
הפעולה הזו לא פועלת על ישויות של Google SecOps.
קלט של הפעולה
הפעולה Simple ES Search דורשת את הפרמטרים הבאים:
| פרמטר | תיאור |
|---|---|
Index |
זה שינוי אופציונלי. תבנית החיפוש של אינדקס OpenSearch (לדוגמה, ערך ברירת המחדל הוא |
Query |
זה שינוי אופציונלי. שאילתת החיפוש שרוצים לבצע באמצעות תחביר Lucene (לדוגמה, ערך ברירת המחדל הוא |
Limit |
זה שינוי אופציונלי. המספר המקסימלי של מסמכים שיוחזרו. כדי לא להגביל את המספר, צריך להזין את הערך ערך ברירת המחדל הוא |
ערכי פלט של פעולות
הפעולה Simple ES Search מספקת את הפלטים הבאים:
| סוג הפלט של הפעולה | זמינות |
|---|---|
| חיבור לקיר של המארז | לא זמין |
| קישור ללוח הפניות | לא זמין |
| שולחן קונסולה צמוד לקיר | לא זמין |
| טבלת העשרה | לא זמין |
| תוצאת JSON | יש גישה |
| הודעות פלט | יש גישה |
| תוצאת הסקריפט | יש גישה |
תוצאת JSON
בדוגמה הבאה מוצג פלט התוצאה בפורמט JSON שמתקבל כשמשתמשים בפעולה Simple ES Search:
[{
"_score": 0.2876821,
"_type": "person",
"_id": "2",
"_source":
{
"lastname": "Smith",
"name": "John",
"job_description": "Systems administrator"
},
"_index": "accounts"
},
{
"_score": 0.28582606,
"_type": "person",
"_id": "1",
"_source":
{
"lastname": "Doe",
"name": "John",
"job_description": "Systems administrator and Linux specialist"
},
"_index": "accounts"
}
]
תוצאת הסקריפט
בטבלה הבאה מפורטים הערכים של פלט תוצאות הסקריפט כשמשתמשים בפעולה Simple ES Search:
| שם תוצאת הסקריפט | ערך |
|---|---|
results |
RESULTS |
מחברים
איך מגדירים מחברים ב-Google SecOps?
מחבר OpenSearch
אתם יכולים להשתמש במחבר OpenSearch כדי לחפש באינדקסים ספציפיים של OpenSearch באמצעות שאילתת Lucene שסופקה, ולהטמיע מסמכים כהתראות ב-Google SecOps.
כניסות קלט של מחברים
כדי להשתמש במחבר של OpenSearch, צריך להגדיר את הפרמטרים הבאים:
| פרמטר | תיאור |
|---|---|
Product Field Name |
חובה. שם השדה שבו מאוחסן שם המוצר. שם המוצר משפיע בעיקר על המיפוי. כדי לייעל ולשפר את תהליך המיפוי של המחבר, ערך ברירת המחדל הופך לערך חלופי שאליו מתייחס הקוד. כל קלט לא חוקי בפרמטר הזה יוחלף בערך חלופי כברירת מחדל. ערך ברירת המחדל הוא |
Event Field Name |
חובה. שם השדה שקובע את שם האירוע (סוג משנה). ערך ברירת המחדל הוא
|
Script Timeout (Seconds) |
חובה. מגבלת הזמן הקצוב לתפוגה, בשניות, של תהליך Python שמריץ את הסקריפט הנוכחי. ערך ברירת המחדל הוא |
Server Address |
חובה. כתובת ה-URL של נקודת הקצה של המכונה של OpenSearch, כולל הפרוטוקול והיציאה (לדוגמה, |
Username |
זה שינוי אופציונלי. שם המשתמש שמשמש לאימות במכונה של OpenSearch. |
Password |
זה שינוי אופציונלי. הסיסמה שמשויכת לשם המשתמש שצוין. |
Authenticate |
זה שינוי אופציונלי. אם בוחרים באפשרות הזו, השילוב מאמת את החיבור לשרת OpenSearch באמצעות פרטי הכניסה שסופקו. |
API Token |
זה שינוי אופציונלי. אסימון ה-API שמשמש לאימות כחלופה לשם משתמש וסיסמה. |
Verify SSL |
זה שינוי אופציונלי. אם האפשרות הזו נבחרת, השילוב מאמת את אישור ה-SSL כשמתחברים לשרת OpenSearch. |
Alert Name Field |
חובה. שם השדה שמכיל את שם ההתראה (לדוגמה, |
Timestamp Field |
חובה. שם השדה שמכיל את חותמת הזמן (לדוגמה, |
Environment Field Name |
זה שינוי אופציונלי. שם השדה שבו מאוחסן שם הסביבה. אם שדה הסביבה חסר, המחבר משתמש בערך ברירת המחדל. ערך ברירת המחדל הוא |
Indexes |
זה שינוי אופציונלי. תבנית האינדקס לחיפוש. אפשר להשתמש ב- |
Query |
זה שינוי אופציונלי. שאילתת החיפוש שצריך לבצע באמצעות תחביר Lucene. |
Alerts Count Limit |
חובה. המספר המקסימלי של התראות שאפשר לשלוף במחזור אחד. ערך ברירת המחדל הוא |
Max Days Backwards |
חובה. מספר הימים לפני הזמן הנוכחי שבהם רוצים לאחזר התראות. הפרמטר הזה יכול לחול על האיטרציה הראשונית של המחבר אחרי שמפעילים את המחבר בפעם הראשונה, או על ערך ברירת המחדל של חותמת זמן שפג התוקף שלה. ערך ברירת המחדל הוא |
Severity Field Name |
זה שינוי אופציונלי. שם השדה שמשמש לחילוץ ערך החומרה של ההתראה. אם השדה מכיל ערכים מספריים (מספרים שלמים או מספרים עם נקודה צפה), המחבר ממפה אותם באופן אוטומטי לרמות החומרה של Google SecOps (לדוגמה, |
Proxy Server Address |
זה שינוי אופציונלי. כתובת שרת ה-Proxy שבו רוצים להשתמש. |
Proxy Username |
זה שינוי אופציונלי. שם המשתמש שמשמש לאימות מול שרת ה-proxy. |
Proxy Password |
זה שינוי אופציונלי. הסיסמה שמשמשת לאימות בשרת ה-proxy. |
Environment Regex Pattern |
זה שינוי אופציונלי. תבנית של ביטוי רגולרי להפעלה על הערך שנמצא בשדה משתמשים בערך ברירת המחדל אם התבנית של הביטוי הרגולרי היא null או ריקה, או אם ערך הסביבה הוא null, התוצאה הסופית של הסביבה היא סביבת ברירת המחדל. |
מחבר OpenSearch DSL
אתם יכולים להשתמש ב-OpenSearch DSL Connector כדי להטמיע מסמכים כהתראות ב-Google SecOps, על ידי ביצוע קריאות ל-API בארכיטקטורת REST באמצעות שאילתות Domain Specific Language (DSL).
כניסות קלט של מחברים
כדי להשתמש במחבר OpenSearch DSL, צריך להגדיר את הפרמטרים הבאים:
| פרמטר | תיאור |
|---|---|
Product Field Name |
חובה. שם השדה שבו מאוחסן שם המוצר. שם המוצר משפיע בעיקר על המיפוי. כדי לייעל ולשפר את תהליך המיפוי של המחבר, ערך ברירת המחדל הופך לערך חלופי שאליו מתייחס הקוד. כל קלט לא חוקי בפרמטר הזה יוחלף בערך חלופי כברירת מחדל. ערך ברירת המחדל הוא ערך ברירת המחדל הוא |
Event Field Name |
חובה. שם השדה שקובע את שם האירוע (סוג משנה). ערך ברירת המחדל הוא |
Script Timeout (Seconds) |
חובה. מגבלת הזמן הקצוב לתפוגה, בשניות, של תהליך Python שמריץ את הסקריפט הנוכחי. ערך ברירת המחדל הוא |
Server Address |
חובה. כתובת ה-URL של נקודת הקצה של המכונה של OpenSearch, כולל הפרוטוקול (לדוגמה, |
Port |
חובה. היציאה שמשמשת לחיבור לשרת API של OpenSearch. |
Query |
חובה. שאילתת ה-DSL ששימשה לחיפוש בפורמט JSON. כדי לשפר את היציבות של המחבר, מומלץ לכלול בשאילתה מפתח של חותמת זמן למיון בסדר עולה. |
Index |
חובה. האינדקס שמשמש לחיפוש. אפשר להשתמש ב- |
Timestamp Field |
חובה. שם השדה שמכיל את חותמת הזמן (לדוגמה, |
Alert Field Name |
חובה. שם השדה שמכיל את שם ההתראה (לדוגמה, |
Description Field |
זה שינוי אופציונלי. שם השדה שמכיל את תיאור ההתראה (לדוגמה, |
Severity |
חובה. רמת החומרה הסטטית שצריך להקצות לכל ההתראות שנקלטו. הפרמטר הזה משמש אם הפרמטרים ערך ברירת המחדל הוא |
Alert Severity |
זה שינוי אופציונלי. רמת החומרה שצריך להקצות להתראות. לפרמטר הזה יש עדיפות על פני אם רוצים להשתמש במיפוי דינמי באמצעות |
Severity Field Name |
זה שינוי אופציונלי. שם השדה שמשמש לחילוץ ערך החומרה של ההתראה. אם השדה מכיל ערכים מספריים (מספרים שלמים או מספרים עם נקודה צפה), המחבר ממפה אותם באופן אוטומטי לרמות החומרה של Google SecOps (לדוגמה, |
Alerts Count Limit |
זה שינוי אופציונלי. המספר המקסימלי של התראות שאפשר לשלוף במחזור אחד. ערך ברירת המחדל הוא |
Authenticate |
זה שינוי אופציונלי. אם בוחרים באפשרות הזו, המחבר מאמת את החיבור באמצעות פרטי הכניסה שסופקו. |
Username |
זה שינוי אופציונלי. שם המשתמש שמשמש לאימות במכונה של OpenSearch. |
Password |
זה שינוי אופציונלי. הסיסמה שמשמשת לאימות מול המכונה של OpenSearch. |
Use SSL |
זה שינוי אופציונלי. אם בוחרים באפשרות הזו, המחבר מפעיל חיבור SSL/TLS לשרת. |
Proxy Server Address |
זה שינוי אופציונלי. הכתובת של שרת ה-proxy שמשמש לחיבור. |
Proxy Username |
זה שינוי אופציונלי. שם המשתמש שמשמש לאימות מול שרת ה-proxy. |
Proxy Password |
זה שינוי אופציונלי. הסיסמה שמשמשת לאימות בשרת ה-proxy. |
Environment Field Name |
זה שינוי אופציונלי. שם השדה שבו מאוחסן שם הסביבה. אם שדה הסביבה חסר, המחבר משתמש בערך ברירת המחדל. ערך ברירת המחדל הוא |
Environment Regex Pattern |
זה שינוי אופציונלי. תבנית של ביטוי רגולרי להפעלה על הערך שנמצא בשדה משתמשים בערך ברירת המחדל אם התבנית של הביטוי הרגולרי היא null או ריקה, או אם ערך הסביבה הוא null, התוצאה הסופית של הסביבה היא סביבת ברירת המחדל. ערך ברירת המחדל הוא |
תמיכה בסימון
המחבר תומך בשלושה סימונים שונים למיפוי שדות. לדוגמה, כדי למפות את event.type, אפשר לספק את _source_event_type, event_type או event.type.
ההגדרה הזו חלה על הפרמטרים הבאים:
Product Field NameEvent Field NameSeverity Field NameEnvironment Field NameTimestamp FieldAlert Field Name-
Description Field(מחבר DSL בלבד)
איך ממפים את רמת החומרה במחבר
אם Severity Field Name מכיל ערכים מספריים (מספרים שלמים או מספרים עם נקודה צפה), המחבר ממפה אותם באופן הבא:
- קריטי: 100
- גבוה: 80 ≤ x < 100
- בינוני: 60 ≤ x < 80
- נמוכה: 40 ≤ x < 60
- מידע: x < 40
כדי להגדיר ערכי מחרוזת, צריך לעדכן את הקובץ severity_map_config.json בתיקיית הסקריפטים של המחבר.
הגדרה לדוגמה
כדי למפות שדה של event.severity שמכיל את הערכים "Malicious", "Unknown" או "Benign":
- מזינים
event.severityבפרמטר Severity Field Name. - עדכון של
severity_map_config.json:
{
"event.severity": {
"Malicious": 100,
"Unknown": 60,
"Benign": -1
},
"Default": 50
}
הבעיה עדיין לא נפתרה? קבלת תשובות מחברי הקהילה וממומחי Google SecOps.