איסוף יומנים של SecureAuth Identity Platform
במאמר הזה מוסבר איך להטמיע יומנים של SecureAuth Identity Platform ב-Google Security Operations באמצעות סוכן Bindplane.
SecureAuth Identity Platform הוא פתרון לכניסה יחידה ולניהול זהויות, שיוצר הודעות syslog לאירועי אימות, לפעילות בסשן, להחלטות בנושא בקרת גישה ולנתיבי ביקורת. המנתח מחלץ שדות מיומני syslog ויומנים בפורמט XML באמצעות תבניות grok וממפה אותם למודל הנתונים המאוחד (UDM).
לפני שמתחילים
חשוב לוודא שיש לכם את הדברים הבאים:
- מופע של Google SecOps
- Windows Server 2016 ואילך, או מארח Linux עם
systemd - קישוריות לרשת בין סוכן Bindplane לבין SecureAuth Identity Platform
- אם מריצים את הסוכן מאחורי שרת proxy, מוודאים שיציאות חומת האש פתוחות בהתאם לדרישות של סוכן Bindplane
- גישה מורשית ל-SecureAuth
קבלת פרטי כניסה ל-Google SecOps בשביל סוכן Bindplane
כדי לאמת את סוכן Bindplane ב-Google SecOps, בוחרים אחת מהשיטות הבאות:
- פריסות חדשות: משתמשים ב-Chronicle API (אפשרות 1).
- פריסות קודמות: ממשיכים להשתמש בקובץ האימות להטמעת נתונים (אפשרות 2) עד שה-Ingestion API יופסק ב-20 ביולי 2027.
אפשרות 1: יצירת חשבון שירות עבור Chronicle API (מומלץ)
- נכנסים למסוףGoogle Cloud ובוחרים את הפרויקט ב- Google Cloud שמקושר למכונה של Google SecOps.
- נכנסים לדף IAM & Admin > Service Accounts.
- לוחצים על Create service account.
- מספקים את פרטי ההגדרה הבאים:
- שם חשבון השירות: מזינים שם לחשבון (לדוגמה,
bindplane-ingest). - Service account description: מזינים תיאור (לדוגמה,
Bindplane agent log ingestion).
- שם חשבון השירות: מזינים שם לחשבון (לדוגמה,
- לוחצים על Create and continue.
- בקטע Grant this service account access to project, לוחצים על Select a role ובוחרים באפשרות Chronicle Editor.
- לוחצים על המשך ואז על סיום.
- לוחצים על חשבון השירות שיצרתם ועוברים לכרטיסייה Keys.
- לוחצים על Add key > Create new key.
- בוחרים באפשרות JSON ולוחצים על Create. קובץ המפתח יורד למחשב.
- שומרים את קובץ המפתח בשם
ingestion-auth.jsonבספריית Bindplane Collector (/opt/observiq-otel-collector/ingestion-auth.jsonב-Linux אוC:\Program Files\observIQ OpenTelemetry Collector\ingestion-auth.jsonב-Windows), או מעדכנים אתcreds_file_pathב-config.yamlכך שיתאים לנתיב שבו שומרים את הקובץ. - עוברים אל IAM & Admin > Settings ומעתיקים את הערך של Project number. תצטרכו אותו כדי להגדיר את הייצוא.
אפשרות 2: הורדה של קובץ האימות להטמעת נתונים (מדור קודם)
- נכנסים למסוף Google SecOps.
- עוברים אל SIEM Settings > Collection Agents (הגדרות SIEM > סוכני איסוף).
- מורידים את קובץ האימות להטמעת נתונים.
- שומרים את הקובץ בצורה מאובטחת במערכת שבה יותקן סוכן Bindplane.
איך מוצאים את מספר הלקוח ב-Google SecOps
- נכנסים למסוף Google SecOps.
- עוברים אל SIEM Settings > Profile (הגדרות SIEM > פרופיל).
מעתיקים את מזהה הלקוח מהקטע פרטי הארגון ושומרים אותו.
התקנת סוכן Bindplane
מתקינים את סוכן Bindplane במערכת ההפעלה Windows או Linux לפי ההוראות הבאות.
התקנת חלונות
- פותחים את שורת הפקודה או את PowerShell כאדמין.
מריצים את הפקודה הבאה:
msiexec /i "https://github.com/observIQ/bindplane-agent/releases/latest/download/observiq-otel-collector.msi" /quietמחכים שההתקנה תסתיים.
כדי לוודא שההתקנה בוצעה, מריצים את הפקודה:
sc query observiq-otel-collectorהשירות צריך להופיע עם הערך RUNNING.
התקנה ב-Linux
- פותחים טרמינל עם הרשאות root או sudo.
מריצים את הפקודה הבאה:
sudo sh -c "$(curl -fsSlL https://github.com/observiq/bindplane-agent/releases/latest/download/install_unix.sh)" install_unix.shמחכים שההתקנה תסתיים.
מאמתים את ההתקנה על ידי הרצת:
sudo systemctl status observiq-otel-collectorהשירות צריך להופיע כפעיל (פועל).
מקורות מידע נוספים להתקנה
אפשרויות התקנה נוספות ופתרון בעיות מפורטים במדריך להתקנת סוכן Bindplane.
הגדרת syslog ושליחה ל-Google SecOps
מאתרים את קובץ התצורה
Linux:
sudo nano /opt/observiq-otel-collector/config.yamlWindows:
notepad "C:\Program Files\observIQ OpenTelemetry Collector\config.yaml"
עריכת קובץ תצורה
מחליפים את כל התוכן של
config.yamlבהגדרות הבאות:receivers: udplog: listen_address: "0.0.0.0:514" exporters: chronicle/secureauth_sso: protocol: https # Region of your instance, for example us, europe, asia-southeast1 location: <LOCATION> # Project number of the Google Cloud project linked to the instance project: '<PROJECT_NUMBER>' compression: gzip creds_file_path: '/opt/observiq-otel-collector/ingestion-auth.json' customer_id: '<customer_id>' endpoint: chronicle.googleapis.com log_type: SECUREAUTH_SSO raw_log_field: body service: pipelines: logs/secureauth_sso_to_chronicle: receivers: - udplog exporters: - chronicle/secureauth_sso
פרמטרים להגדרה
מחליפים את ה-placeholders הבאים:
הגדרת המקלט:
-
listen_address: כתובת ה-IP והיציאה להאזנה:-
0.0.0.0כדי להאזין בכל הממשקים (מומלץ) - יציאה
514היא יציאת syslog רגילה (נדרשת הרשאת root ב-Linux; אפשר להשתמש ב-1514ללא הרשאת root)
-
-
הגדרת הייצוא:
-
creds_file_path: הנתיב המלא לקובץ מפתח JSON של חשבון השירות (אפשרות 1):- Linux:
/opt/observiq-otel-collector/ingestion-auth.json - Windows:
C:\Program Files\observIQ OpenTelemetry Collector\ingestion-auth.json
- Linux:
-
customer_id: מספר הלקוח שהועתק ממסוף Google SecOps -
location: מחליפים את<LOCATION>באזור של המכונה של Google SecOps (לדוגמה,us,europeאוasia-southeast1). המייצא מוסיף את הערך הזה בתחילתchronicle.googleapis.com. לרשימה המלאה, ראו נקודות קצה אזוריות. -
project: מחליפים את<PROJECT_NUMBER>במספר הפרויקט שמופיע בקטע IAM & Admin > Settings. -
endpoint: משאירים את הערךchronicle.googleapis.com.
-
כלי לייצוא נתונים מ-Legacy ingestion API
אם משתמשים בקובץ האימות של ההעלאה מאפשרות 2, מחליפים את הבלוק
exportersבבלוק הבא. מגדירים אתcreds_file_pathלנתיב של קובץ האימות להטמעת נתונים. אם המכונה נמצאת מחוץ לארה"ב, מחליפים אתmalachiteingestion-pa.googleapis.comבנקודת הקצה האזורית (לדוגמה,europe-malachiteingestion-pa.googleapis.com).exporters: chronicle/secureauth_sso: compression: gzip creds_file_path: '/opt/observiq-otel-collector/ingestion-auth.json' customer_id: '<customer_id>' endpoint: malachiteingestion-pa.googleapis.com log_type: SECUREAUTH_SSO raw_log_field: body
שמירת קובץ התצורה
- אחרי שמסיימים לערוך, שומרים את הקובץ:
- Linux: מקישים על
Ctrl+O, אחר כך עלEnterואז עלCtrl+X - Windows: לוחצים על קובץ > שמירה
- Linux: מקישים על
מפעילים מחדש את סוכן Bindplane כדי להחיל את השינויים.
כדי להפעיל מחדש את הסוכן של Bindplane ב-Linux, מריצים את הפקודה הבאה:
sudo systemctl restart observiq-otel-collectorמוודאים שהשירות פועל:
sudo systemctl status observiq-otel-collectorבודקים אם יש שגיאות ביומנים:
sudo journalctl -u observiq-otel-collector -f
כדי להפעיל מחדש את סוכן Bindplane ב-Windows, בוחרים באחת מהאפשרויות הבאות:
שורת הפקודה או PowerShell כאדמין:
net stop observiq-otel-collector && net start observiq-otel-collectorמסוף השירותים:
- מקישים על
Win+R, מקלידיםservices.mscומקישים על Enter. - מחפשים את observIQ OpenTelemetry Collector.
- לוחצים לחיצה ימנית ובוחרים באפשרות הפעלה מחדש.
מוודאים שהשירות פועל:
sc query observiq-otel-collectorבודקים אם יש שגיאות ביומנים:
type "C:\Program Files\observIQ OpenTelemetry Collector\log\collector.log"
- מקישים על
הגדרת SecureAuth Identity Platform
- נכנסים למסוף הזהויות של SecureAuth כאדמינים.
- לוחצים על יומנים.
- בקטע Log options, מזינים את פרטי ההגדרה הבאים:
- מזהה מופע של יומן: מזינים את מזהה המופע של היומן, את שם האפליקציה או את שם התחום (לדוגמה,
SecureAuth1). - יומני ביקורת: מסמנים את תיבת הסימון Syslog.
- יומני שגיאות: מסמנים את התיבה Syslog.
- שרת Syslog: מזינים את כתובת ה-IP של סוכן Bindplane.
- Syslog Port: מזינים את מספר היציאה של סוכן Bindplane (לדוגמה,
514). - Syslog RFC spec: בוחרים באפשרות RFC 5424.
- מזהה מופע של יומן: מזינים את מזהה המופע של היומן, את שם האפליקציה או את שם התחום (לדוגמה,
- לוחצים על Save.
טבלת מיפוי UDM
| שדה ביומן | מיפוי UDM | היגיון |
|---|---|---|
| action_msg | read_only_udm.target.process.command_line | הערך של השדה action_msg |
| מכשיר חשמלי | read_only_udm.principal.domain.name | הערך של השדה Appliance |
| מכשיר חשמלי | read_only_udm.target.administrative_domain | הערך של השדה Appliance |
| BrowserSession | read_only_udm.network.session_id | הערך של השדה BrowserSession |
| cat | read_only_udm.metadata.product_event_type | הערך של השדה cat |
| קטגוריה | read_only_udm.metadata.product_event_type | הערך של השדה Category |
| cn1 | security_result.severity | מיפוי על סמך הערך של cn1 כש-cn1Label הוא Priority: 1 – HIGH, 2 – MEDIUM, 3 או 4 – LOW |
| חברה | read_only_udm.additional.fields.value.string_value | הערך של השדה Company |
| cs1 | read_only_udm.network.session_id | הערך של השדה cs1 כשהערך של cs1Label הוא BrowserSession |
| cs3 | read_only_udm.additional.fields.value.string_value | הערך של השדה cs3 כשהערך של cs3Label הוא "CompanyName" |
| dst | read_only_udm.target.ip | הערך של השדה dst |
| דומיין | read_only_udm.principal.domain.name | הערך של השדה domain |
| dvc | read_only_udm.intermediary.ip | הערך של השדה dvc |
| EventID | read_only_udm.metadata.product_log_id | הערך של השדה EventID |
| HostName | read_only_udm.principal.hostname | הערך של השדה HostName אם grok לא מצליח להתאים כתובת IP |
| HostName | read_only_udm.principal.ip | הערך של השדה HostName כש-grok תואם לכתובת IP |
| ip | read_only_udm.principal.ip | הערך של השדה ip |
| הודעה | read_only_udm.metadata.description | הערך של השדה Message |
| הודעה | security_result.description | הערך של השדה Message |
| nat_ip | read_only_udm.principal.nat_ip | הערך של השדה nat_ip |
| עדיפות | security_result.severity | מיפוי על סמך הערך של Priority: 1 – גבוה, 2 – בינוני, 3 או 4 – נמוך |
| SAMLConsumerURL | read_only_udm.target.url | הערך של השדה SAMLConsumerURL |
| sec_msg | security_result.description | הערך של השדה sec_msg |
| SecureAuthIdPAppliance | read_only_udm.target.administrative_domain | הערך של השדה SecureAuthIdPAppliance |
| SecureAuthIdPApplianceMachineName | read_only_udm.target.hostname | הערך של השדה SecureAuthIdPApplianceMachineName |
| SecureAuthIdPDestinationSiteUrl | read_only_udm.target.url | הערך של השדה SecureAuthIdPDestinationSiteUrl |
| SecureAuthIdPProductType | read_only_udm.additional.fields.value.string_value | הערך של השדה SecureAuthIdPProductType |
| סשן | read_only_udm.network.session_id | הערך של השדה session |
| spid | read_only_udm.target.process.pid | הערך של השדה spid |
| src | read_only_udm.principal.ip | הערך של השדה src |
| suser | read_only_udm.target.user.userid | הערך של השדה suser |
| UserAgent | read_only_udm.network.http.user_agent | הערך של השדה UserAgent |
| UserHostAddress | read_only_udm.principal.nat_ip | הערך של השדה UserHostAddress |
| UserHostAddress | read_only_udm.target.ip | הערך של השדה UserHostAddress |
| UserID | read_only_udm.principal.user.userid | הערך של השדה UserID |
| גרסה | read_only_udm.metadata.product_version | הערך של השדה Version |
| read_only_udm.additional.fields.key | ערך שמוגדר בהארדקוד – 'שם_החברה' | |
| read_only_udm.additional.fields.key | ערך בקידוד קשיח – "חברה" | |
| read_only_udm.additional.fields.key | ערך שמוגדר בהארדקוד – SecureAuthIdPProductType | |
| read_only_udm.extensions.auth.type | ערך בקידוד קשיח – "SSO" | |
| read_only_udm.metadata.event_type | 'USER_LOGIN' אם SecureAuthIdPAuthGuiMode == 0 ו-auth_result == Success, 'USER_CHANGE_PERMISSIONS' אם SecureAuthIdPAuthGuiMode == 0 ו-auth_result ==WS-Trust success., 'USER_LOGOUT' אם SecureAuthIdPAuthGuiMode == 0 ו-auth_result == Session Aborted, 'NETWORK_CONNECTION' אם UserHostAddress != and `HostName` !=, 'STATUS_UPDATE' אם ip != or `HostName` !=, 'USER_UNCATEGORIZED' אם UserHostAddress != and `HostName` == ו-UserID != ``, אחרת – 'GENERIC_EVENT' |
|
| read_only_udm.metadata.log_type | ערך בקידוד קשיח – SECUREAUTH_SSO | |
| read_only_udm.metadata.product_name | ערך בקידוד קשיח – SECUREAUTH_SSO | |
| read_only_udm.metadata.vendor_name | ערך בקידוד קשיח – SECUREAUTH_SSO | |
| read_only_udm.target.user.email_addresses | הערך של השדה user_email כשהערך של not_email הוא False |
|
| security_result.severity | 'HIGH' אם cn1Label == Priority ו-cn1 == 1, 'MEDIUM' אם cn1Label == Priority ו-cn1 == 2, 'LOW' אם cn1Label == Priority ו-cn1 in [3, 4], 'HIGH' אם Priority == 1, 'MEDIUM' אם Priority == 2, 'LOW' אם Priority in [3, 4] |
|
_timestamp |
event.idm.read_only_udm.metadata.collected_timestamp |
מופה מיומן השינויים |
i_ip |
event.idm.read_only_udm.intermediary.ip |
מופה מיומן השינויים |
i_port |
event.idm.read_only_udm.intermediary.port |
מופה מיומן השינויים |
parsed.LogChannel |
event.idm.read_only_udm.metadata.product_event_type |
מופה מיומן השינויים |
parsed.FormatVersion |
event.idm.read_only_udm.metadata.product_version |
מופה מיומן השינויים |
parsed.EventID |
event.idm.read_only_udm.metadata.product_log_id |
מופה מיומן השינויים |
parsed.CompanyID |
event.idm.read_only_udm.principal.resource.product_object_id |
מופה מיומן השינויים |
parsed.Realm |
event.idm.read_only_udm.principal.resource.name |
מופה מיומן השינויים |
parsed.UserHostAddress |
event.idm.read_only_udm.principal.ip |
מופה מיומן השינויים |
parsed.UserHostAddress |
event.idm.read_only_udm.principal.asset.ip |
מופה מיומן השינויים |
host.name |
event.idm.read_only_udm.principal.hostname |
מופה מיומן השינויים |
host.name |
event.idm.read_only_udm.principal.asset.hostname |
מופה מיומן השינויים |
parsed.RequestID |
event.idm.read_only_udm.metadata.id |
מופה מיומן השינויים |
meta.cloud.availability_zone |
event.idm.read_only_udm.principal.location.name |
מופה מיומן השינויים |
meta.cloud.region |
event.idm.read_only_udm.principal.location.country_or_region |
מופה מיומן השינויים |
host.id |
event.idm.read_only_udm.principal.resource.id |
מופה מיומן השינויים |
LogstashPod |
event.idm.read_only_udm.observer.hostname |
מופה מיומן השינויים |
fields.ApplianceID |
event.idm.read_only_udm.principal.asset.asset_id |
מופה מיומן השינויים |
LogChannel |
event.idm.read_only_udm.additional.fields |
מופה מיומן השינויים |
FormatVersion |
event.idm.read_only_udm.additional.fields |
מופה מיומן השינויים |
EventID |
event.idm.read_only_udm.additional.fields |
מופה מיומן השינויים |
Version |
event.idm.read_only_udm.additional.fields |
מופה מיומן השינויים |
parsed.UserAgent |
event.idm.read_only_udm.additional.fields |
מופה מיומן השינויים |
parsed.ApplianceID |
event.idm.read_only_udm.additional.fields |
מופה מיומן השינויים |
beat.name |
event.idm.read_only_udm.additional.fields |
מופה מיומן השינויים |
beat.hostname |
event.idm.read_only_udm.additional.fields |
מופה מיומן השינויים |
beat.version |
event.idm.read_only_udm.additional.fields |
מופה מיומן השינויים |
fields.CompanyID |
event.idm.read_only_udm.additional.fields |
מופה מיומן השינויים |
derived.CompanyIndex |
event.idm.read_only_udm.additional.fields |
מופה מיומן השינויים |
_version |
event.idm.read_only_udm.additional.fields |
מופה מיומן השינויים |
derived.EventType |
event.idm.read_only_udm.additional.fields |
מופה מיומן השינויים |
prospector.type |
event.idm.read_only_udm.additional.fields |
מופה מיומן השינויים |
input.type |
event.idm.read_only_udm.additional.fields |
מופה מיומן השינויים |
parsed_Message |
event.idm.read_only_udm.additional.fields |
מופה מיומן השינויים |
meta.cloud.machine_type |
event.idm.read_only_udm.principal.resource.attribute.labels |
מופה מיומן השינויים |
ApplianceType |
event.idm.read_only_udm.principal.resource.attribute.labels |
מופה מיומן השינויים |
parsed.Version |
event.idm.read_only_udm.principal.resource.attribute.labels |
מופה מיומן השינויים |
host.architecture |
event.idm.read_only_udm.principal.resource.attribute.labels |
מופה מיומן השינויים |
host.os.platform |
event.idm.read_only_udm.principal.resource.attribute.labels |
מופה מיומן השינויים |
host.os.version |
event.idm.read_only_udm.principal.resource.attribute.labels |
מופה מיומן השינויים |
host.os.build |
event.idm.read_only_udm.principal.resource.attribute.labels |
מופה מיומן השינויים |
host.os.family |
event.idm.read_only_udm.principal.resource.attribute.labels |
מופה מיומן השינויים |
host.os.name |
event.idm.read_only_udm.principal.resource.attribute.labels |
מופה מיומן השינויים |
meta.cloud.provider |
event.idm.read_only_udm.principal.resource.attribute.labels |
מופה מיומן השינויים |
derived.LogChannelIndex |
event.idm.read_only_udm.principal.resource.attribute.labels |
מופה מיומן השינויים |
document_id |
event.idm.read_only_udm.principal.resource.attribute.labels |
מופה מיומן השינויים |
meta.cloud.instance_id |
event.idm.read_only_udm.principal.resource.attribute.labels |
מופה מיומן השינויים |
tags |
event.idm.read_only_udm.principal.resource.attribute.labels |
מופה מיומן השינויים |
Realm |
event.idm.read_only_udm.target.resource.name |
מופה מיומן השינויים |
CompanyID |
event.idm.read_only_udm.additional.fields |
מופה מיומן השינויים |
PEN |
event.idm.read_only_udm.additional.fields |
מופה מיומן השינויים |
ApplianceID |
event.idm.read_only_udm.additional.fields |
מופה מיומן השינויים |
ApplianceMachineName |
event.idm.read_only_udm.additional.fields |
מופה מיומן השינויים |
RequestID |
event.idm.read_only_udm.additional.fields |
מופה מיומן השינויים |
UseJava |
event.idm.read_only_udm.additional.fields |
מופה מיומן השינויים |
יומן שינויים
צפייה ביומן השינויים של המנתח הזה
הבעיה עדיין לא נפתרה? קבלת תשובות מחברי הקהילה וממומחי Google SecOps.