שילוב של Pub/Sub עם Google SecOps
במסמך הזה מוסבר איך לשלב את Pub/Sub עם Google Security Operations (Google SecOps).
לפני שמתחילים
כדי להשתמש בשילוב של Pub/Sub, צריך:
Google Cloud חשבון שירות – אפשר להשתמש בחשבון שירות קיים או ליצור חשבון חדש.
הוראות ליצירת חשבון שירות זמינות במאמר יצירת חשבונות שירות.
אם אתם משתמשים בחשבון שירות כדי לבצע אימות ל- Google Cloud, אתם יכולים ליצור מפתח של חשבון שירות בפורמט JSON ולספק את התוכן של קובץ ה-JSON שהורדתם כשאתם מגדירים את פרמטרי השילוב.
הערה: מטעמי אבטחה, מומלץ להשתמש בכתובת אימייל של זהות עומס עבודה במקום במפתח של חשבון שירות. למידע נוסף על זהויות עומסי עבודה, אפשר לעיין במאמר זהויות לעומסי עבודה.
מגדירים את תפקיד ה-IAM של החשבון הראשי.
ב-Pub/Sub נעשה שימוש בניהול זהויות והרשאות גישה (IAM) לבקרת גישה, וצריך להקצות לגורם המרכזי את התפקיד
Pub/Sub Viewer.
פרמטרים של שילוב
השילוב עם Pub/Sub דורש את הפרמטרים הבאים:
| פרמטרים | תיאור |
|---|---|
Workload Identity Email |
אופציונלי כתובת האימייל של הלקוח ב-איחוד זהויות של עומסי עבודה. אפשר להגדיר את הפרמטר הזה או את הפרמטר כדי להתחזות לחשבונות שירות באמצעות איחוד שירותי אימות הזהות של עומסי עבודה, צריך להקצות לחשבון השירות את התפקיד |
Service Account JSON File Content |
אופציונלי התוכן של קובץ ה-JSON של מפתח חשבון השירות. אפשר להגדיר את הפרמטר הזה או את הפרמטר כדי להגדיר את הפרמטר הזה, צריך לספק את התוכן המלא של קובץ ה-JSON של מפתח חשבון השירות שהורדתם כשייצרתם חשבון שירות. מידע נוסף על שימוש בחשבונות שירות כשיטת אימות זמין במאמר סקירה כללית על חשבונות שירות. |
Quota Project ID |
אופציונלי Google Cloud מזהה הפרויקט שבו אתם משתמשים עבור Google Cloud ממשקי API וחיוב. כדי להשתמש בפרמטר הזה, צריך להקצות לחשבון השירות את התפקיד השילוב מצרף את ערך הפרמטר הזה לכל בקשות ה-API. אם לא מגדירים ערך לפרמטר הזה, השילוב מאחזר את מזהה פרויקט המכסה מחשבון השירות Google Cloud . |
Project ID |
אופציונלי מזהה הפרויקט שבו רוצים להשתמש בשילוב. אם לא מגדירים ערך לפרמטר הזה, השילוב מאחזר את מזהה הפרויקט מחשבון השירות Google Cloud . |
Verify SSL |
חובה אם בוחרים באפשרות הזו, השילוב בודק שאישור ה-SSL לחיבור ל-Pub/Sub תקף. האפשרות הזו מסומנת כברירת מחדל. |
הוראות להגדרת שילוב ב-Google SecOps מופיעות במאמר הגדרת שילובים.
במקרה הצורך, אפשר לבצע שינויים בשלב מאוחר יותר. אחרי שמגדירים מופע של שילוב, אפשר להשתמש בו ב-playbooks. מידע נוסף על הגדרת מופעים מרובים ותמיכה בהם זמין במאמר בנושא תמיכה במופעים מרובים.
פעולות
מידע נוסף על פעולות זמין במאמרים איך מגיבים לפעולות שממתינות לאישור ב'מרכז העבודה שלך' ואיך מבצעים פעולה ידנית.
פינג
משתמשים בפעולת הפינג כדי לבדוק את הקישוריות ל-Pub/Sub.
הפעולה הזו לא מופעלת על ישויות ב-Google SecOps.
הוספת נתונים לפעולה
אין.
פלט של פעולות
הפעולה Ping מספקת את הפלטים הבאים:
| סוג הפלט של הפעולה | זמינות |
|---|---|
| קיר המארז | לא זמין |
| קישור לקיר של הפנייה | לא זמין |
| טבלת קיר עם תושבת | לא זמין |
| טבלת העשרה | לא זמין |
| תוצאה בפורמט JSON | לא זמין |
| הודעות פלט | יש גישה |
| תוצאת סקריפט | יש גישה |
הודעות פלט
הפעולה Ping יכולה להחזיר את הודעות הפלט הבאות:
| הודעת פלט | תיאור ההודעה |
|---|---|
Successfully connected to the Pub/Sub server with the
provided connection parameters! |
הפעולה הסתיימה בהצלחה. |
Failed to connect to the Pub/Sub server! Error is
ERROR_REASON |
הפעולה נכשלה. צריך לבדוק את החיבור לשרת, את פרמטרי הקלט או את פרטי הכניסה. |
תוצאת סקריפט
בטבלה הבאה מפורט הערך של פלט תוצאת הסקריפט כשמשתמשים בפעולה Ping:
| שם התוצאה של הסקריפט | ערך |
|---|---|
is_success |
True או False |
מחברים
הוראות מפורטות להגדרת מחבר ב-Google SecOps מופיעות במאמר העברת נתונים (מחברים).
Pub/Sub – Messages Connector
בפלטפורמת Google SecOps, Pub/Sub – Messages Connector נקרא PubSub – Messages Connector.
משתמשים במחבר ההודעות של Pub/Sub כדי לאחזר הודעות מ-Pub/Sub.
מיפוי חומרת ה-JSON
כדי למפות את רמת החומרה של ההתראה, צריך לציין באיזה שדה המחבר Pub/Sub – Messages משתמש כדי לקבל את הערך של רמת החומרה בפרמטר Severity Mapping JSON. תגובת המחבר יכולה להכיל סוגי ערכים, כמו integer, float ו-string.
Pub/Sub – Messages Connector קורא את הערכים integer ו-float וממפה אותם בהתאם להגדרות של Google SecOps. בטבלה הבאה מוצג המיפוי של הערכים integer לחומרה ב-Google SecOps:
| ערך מספרי שלם | מידת החומרה הממופה |
|---|---|
100 |
Critical |
גווני אפור מ-80 עד 100 |
High |
גווני אפור מ-60 עד 80 |
Medium |
גווני אפור מ-40 עד 60 |
Low |
פחות מ-40 |
Informational |
אם התשובה מכילה את הערך string, Pub/Sub – Messages Connector דורש הגדרה נוספת.
בתחילה, ערך ברירת המחדל יופיע כך:
{
"Default": 60
}
אם הערכים שנדרשים למיפוי נמצאים במפתח ה-JSON event_severity, הערכים יכולים להיות:
"Malicious""Benign""Unknown"
כדי לנתח את ערכי המפתח של JSON event_severity ולוודא שאובייקט ה-JSON הוא בפורמט הנכון, מגדירים את הפרמטר Severity Mapping JSON באופן הבא:
{
"event_severity": {
"Malicious": 100,
"Unknown": 60,
"Benign": -1
},
"Default": 50
}
חובה לציין את הערך "Default".
במקרה שבו יש כמה התאמות לאותו אובייקט JSON, Pub/Sub – Messages Connector נותן עדיפות למפתח הראשון של אובייקט JSON.
כדי לעבוד עם שדות שמכילים ערכים של integer או float, צריך להגדיר את המפתח ואת המחרוזת הריקה בפרמטר Severity Mapping JSON:
{
"Default":"60",
"integer_field": "",
"float_field": ""
}
כניסות קלט של מחברים
מחבר ההודעות של Pub/Sub דורש את הפרמטרים הבאים:
| פרמטר | תיאור |
|---|---|
Product Field Name |
חובה שם השדה שבו מאוחסן שם המוצר. ערך ברירת המחדל הוא |
Event Field Name |
חובה שם השדה שמשמש לקביעת שם האירוע (סוג משנה). ערך ברירת המחדל הוא |
Environment Field Name |
אופציונלי
שם השדה שבו מאוחסן שם הסביבה. אם השדה environment לא נמצא, הסביבה מוגדרת לסביבת ברירת המחדל. ערך ברירת המחדל הוא |
Environment Regex Pattern |
אופציונלי
תבנית של ביטוי רגולרי להפעלה על הערך שנמצא בשדה משתמשים בערך ברירת המחדל אם תבנית הביטוי הרגולרי היא null או ריקה, או אם ערך הסביבה הוא null, התוצאה הסופית של הסביבה היא סביבת ברירת המחדל. |
Script Timeout (Seconds) |
חובה מגבלת הזמן הקצוב בשניות לתהליך Python שמריץ את הסקריפט הנוכחי. ערך ברירת המחדל הוא |
Service Account JSON File Content |
אופציונלי התוכן של קובץ ה-JSON של מפתח חשבון השירות. אפשר להגדיר את הפרמטר הזה או את הפרמטר כדי להגדיר את הפרמטר הזה, צריך לספק את התוכן המלא של קובץ ה-JSON של מפתח חשבון השירות שהורדתם כשייצרתם חשבון שירות. במחבר Pub/Sub – Messages, אימות באמצעות קובץ JSON של מפתח חשבון השירות מקבל עדיפות על פני איחוד שירותי אימות הזהות של עומסי עבודה. |
Workload Identity Email |
אופציונלי כתובת האימייל של הלקוח בחשבון השירות. אפשר להגדיר את הפרמטר הזה או את הפרמטר כדי להתחזות לחשבונות שירות באמצעות איחוד שירותי אימות הזהות של עומסי עבודה, צריך להקצות לחשבון השירות את התפקיד |
Project ID |
אופציונלי מזהה הפרויקט שבו יש להשתמש במחבר. |
Quota Project ID |
אופציונלי Google Cloud מזהה הפרויקט שבו אתם משתמשים עבור Google Cloud ממשקי API וחיוב. כדי להשתמש בפרמטר הזה, צריך להקצות לחשבון השירות את התפקיד השילוב מצרף את ערך הפרמטר הזה לכל בקשות ה-API. |
Subscription ID |
חובה מזהה המינוי ל-Pub/Sub. |
Case Name Template |
אופציונלי שם מותאם אישית של בקשת התמיכה. כשמגדירים את הפרמטר הזה, המחבר מוסיף מפתח חדש בשם אפשר לספק את משתני המיקום בפורמט הבא:
לדוגמה: במקרה של placeholders, המחבר משתמש באירוע הראשון של Google SecOps. המחבר מטפל רק במפתחות שמכילים את ערך המחרוזת. כדי להגדיר את הפרמטר הזה, מציינים שדות של אירועים ללא קידומות. |
Alert Name Template |
חובה שם של התראה מותאמת אישית. אפשר לספק את משתני המיקום בפורמט הבא:
דוגמה: במקרה של placeholders, המחבר משתמש באירוע הראשון של Google SecOps. המחבר מטפל רק במפתחות שמכילים את ערך המחרוזת. אם לא מספקים ערך או משתמשים בתבנית לא תקינה, המחבר משתמש בערך גיבוי בפורמט הבא: |
Rule Generator Template |
חובה כלי ליצירת כללים בהתאמה אישית. אפשר לספק את משתני המיקום בפורמט הבא:
דוגמה: במקרה של placeholders, המחבר משתמש באירוע הראשון של Google SecOps. המחבר מטפל רק במפתחות שמכילים את ערך המחרוזת. אם לא מספקים ערך או משתמשים בתבנית לא תקינה, המחבר משתמש בערך גיבוי בפורמט הבא: |
Timestamp Field |
חובה שם השדה להגדרת חותמת הזמן של ההתראה ב-Google SecOps. אם חותמת הזמן לא בפורמט של תקופת הזמן של מערכת Unix, צריך להגדיר את פורמט חותמת הזמן בפרמטר ערך ברירת המחדל הוא
|
Timestamp Format |
אופציונלי הפורמט של חותמת הזמן של ההודעה. המחבר צריך את חותמת הזמן כדי לעבד את ההודעה בצורה נכונה. אם חותמת הזמן לא כתובה בפורמט של זמן יוניקס ולא הגדרתם פורמט חותמת זמן, המחבר ייכשל. ערך ברירת המחדל הוא
|
Severity Mapping JSON |
חובה אובייקט ה-JSON שמגדיר איך המחבר מחילוץ את רמת החומרה מההודעה. ערך ברירת המחדל הוא: { "Default": "60" } מידע נוסף על מיפוי חומרת הבעיה זמין במאמר בנושא מיפוי חומרת הבעיה ב-JSON. |
Unique ID Field |
אופציונלי שם השדה שמאשר שההודעה ייחודית. אם לא מגדירים ערך, המחבר יוצר גיבוב (hash) SHA-256 ומשתמש בו כמזהה של ההודעה. |
Max Messages To Fetch |
אופציונלי מספר ההודעות המקסימלי לעיבוד בכל איטרציה של המחבר. המספר המקסימלי הוא 100. |
Disable Overflow |
אופציונלי אם בוחרים באפשרות הזו, המחבר מתעלם ממנגנון הגלישה של Google SecOps במהלך יצירת ההתראה. האפשרות הזו מסומנת כברירת מחדל. |
Verify SSL |
חובה אם האפשרות הזו נבחרה, האינטגרציה בודקת שאישור ה-SSL לחיבור ל-Pub/Sub תקף. האפשרות הזו מסומנת כברירת מחדל. |
Proxy Server Address |
אופציונלי הכתובת של שרת ה-Proxy שבו רוצים להשתמש. |
Proxy Username |
אופציונלי שם המשתמש ב-proxy לאימות. |
Proxy Password |
אופציונלי סיסמת ה-proxy לאימות. |
כללים של Connectors
מחבר ההודעות של Pub/Sub תומך בשרתי proxy.
אירועים של מחברים
בדוגמה הבאה מוצג פלט ה-JSON של אירוע ב-Google SecOps שנוצר על ידי Pub/Sub – Messages Connector:
{
"notificationConfigName": "organizations/ORGANIZATION_ID/notificationConfigs/soar_connector_toxic_notifications_config",
"finding": {
"name": "organizations/ORGANIZATION_ID/sources/SOURCE_ID/findings/FINDING_ID",
"parent": "organizations/ORGANIZATION_ID/sources/SOURCE_ID",
"resourceName": "//compute.googleapis.com/projects/PROJECT_ID/global/firewalls/FIREWALL_ID",
"state": "ACTIVE",
"category": "OPEN_NETBIOS_PORT",
"externalUri": "https://console.cloud.google.com/networking/firewalls/details/default-allow-rdp?project\u003dPROJECT_ID",
"sourceProperties": {
"Recommendation": "Restrict the firewall rules at: https://console.cloud.google.com/networking/firewalls/details/default-allow-rdp?project\u003dPROJECT_ID",
"ExceptionInstructions": "Add the security mark \"allow_open_netbios_port\" to the asset with a value of \"true\" to prevent this finding from being activated again.",
"Explanation": "Firewall rules that allow connections from all IP addresses on TCP ports 137-139 or UDP ports 137-139 may expose NetBIOS services to attackers.",
"ScannerName": "FIREWALL_SCANNER",
"ResourcePath": [
"projects/PROJECT_ID/",
"folders/FOLDER_ID/",
"folders/FOLDER_ID/",
"organizations/ORGANIZATION_ID/"
],
"ExposedService": "NetBIOS",
"OpenPorts": {
"TCP": [
137.0,
138.0,
139.0
],
"UDP": [
137.0,
138.0,
139.0
]
},
"compliance_standards": {
"iso": [
{
"ids": [
"A.13.1.1"
]
}
],
"pci": [
{
"ids": [
"1.2.1"
]
}
],
"nist": [
{
"ids": [
"SC-7"
]
}
]
},
"ReactivationCount": 4.0
},
"securityMarks": {
"name": "organizations/ORGANIZATION_ID/sources/SOURCE_ID/findings/FINDING_ID/securityMarks",
"marks": {
"peter": "e2e1"
}
},
"eventTime": "2024-08-30T14:44:37.973090Z",
"createTime": "2024-06-24T07:08:54.777Z",
"propertyDataTypes": {
"ResourcePath": {
"listValues": {
"propertyDataTypes": [
{
"primitiveDataType": "STRING"
}
]
}
},
"ReactivationCount": {
"primitiveDataType": "NUMBER"
},
"Explanation": {
"primitiveDataType": "STRING"
},
"ExposedService": {
"primitiveDataType": "STRING"
},
"ScannerName": {
"primitiveDataType": "STRING"
}
}
}
}
הבעיה עדיין לא נפתרה? קבלת תשובות מחברי הקהילה וממומחי Google SecOps.