איסוף יומנים של ForgeRock OpenAM
גרסת המנתח: 4.0
במסמך הזה מוסבר איך להטמיע יומני ForgeRock OpenAM ב-Google Security Operations באמצעות סוכן Bindplane.
ForgeRock OpenAM הוא פתרון לניהול הרשאות גישה שיוצר הודעות syslog לאירועי אימות, החלטות של בקרת גישה, פעילות בסשן ושינויים בהגדרות. הכלי לניתוח מחלץ שדות מיומני ביקורת בפורמט JSON וממפה אותם למודל הנתונים המאוחד (UDM).
לפני שמתחילים
חשוב לוודא שיש לכם את הדברים הבאים:
- מופע של Google SecOps
- Windows Server 2016 ואילך, או מארח Linux עם
systemd - קישוריות רשת בין סוכן Bindplane לבין שרת ForgeRock OpenAM
- אם השרת פועל מאחורי שרת proxy, צריך לוודא שהיציאות של חומת האש פתוחות בהתאם לדרישות של סוכן Bindplane.
- גישת אדמין למסוף AM (לדוגמה,
amAdmin)
קבלת פרטי כניסה ל-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 (ניהול הרשאות גישה (IAM) & אדמין > חשבונות שירות).
- לוחצים על 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.
מעתיקים את מספר הלקוח מהקטע פרטי הארגון ושומרים אותו.
התקנת הסוכן של Bindplane
מתקינים את סוכן Bindplane במערכת ההפעלה Windows או Linux לפי ההוראות הבאות.
התקנה ב-Windows
- פותחים את שורת הפקודה או את 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השירות אמור להופיע כ-active (running).
מקורות מידע נוספים להתקנה
אפשרויות התקנה נוספות ופתרון בעיות מפורטים במדריך להתקנת סוכן Bindplane.
הגדרת סוכן 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/openam: 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: OPENAM raw_log_field: body service: pipelines: logs/openam_to_chronicle: receivers: - udplog exporters: - chronicle/openam
פרמטרים להגדרה
מחליפים את ה-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.
-
מייצא API להטמעה מדור קודם
אם אתם משתמשים בקובץ האימות להטמעת נתונים מאפשרות 2, החליפו את הבלוק
exportersבקוד הבא. מגדירים אתcreds_file_pathלנתיב לקובץ האימות של ההעברה, ואם המופע שלכם נמצא מחוץ לארה"ב, מחליפים אתmalachiteingestion-pa.googleapis.comבנקודת הקצה האזורית (לדוגמה,europe-malachiteingestion-pa.googleapis.com).exporters: chronicle/openam: compression: gzip creds_file_path: '/opt/observiq-otel-collector/ingestion-auth.json' customer_id: '<customer_id>' endpoint: malachiteingestion-pa.googleapis.com log_type: OPENAM 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"
- לוחצים על
הגדרת רכיבי handler של syslog ל-ForgeRock OpenAM
- נכנסים למסוף AM כאדמינים (לדוגמה, amAdmin).
- כדי ליצור את ה-גורם מטפל באירועים בהגדרה הגלובלית, עוברים אל הגדרה > שירותים גלובליים > יומן ביקורת.
- כדי ליצור את הגורם המטפל באירועים בתחום, עוברים אל Realms > Realm Name > Services > Audit Logging.
- לוחצים על Add a Secondary Configuration > Syslog (הוספת הגדרה משנית > Syslog).
- מספקים את פרטי ההגדרה הבאים:
- שם: מזינים שם לגורם המטפל באירועים (לדוגמה,
Syslog Event Handler). - שם המארח של השרת: מזינים את כתובת ה-IP של סוכן Bindplane.
- יציאת השרת: מזינים את מספר היציאה של סוכן Bindplane (לדוגמה,
514ל-UDP). - פרוטוקול תעבורה: בוחרים באפשרות UDP.
- זמן קצוב לתפוגת החיבור: מזינים את מספר השניות לחיבור (לדוגמה,
120). - אופציונלי: מפעילים את האפשרות אגירת נתונים.
- שם: מזינים שם לגורם המטפל באירועים (לדוגמה,
- לוחצים על יצירה.
- בכרטיסייה General Handler Configuration, בוחרים באפשרות Enabled כדי להפעיל את הגורם המטפל באירועים.
- בוחרים את הנושאים של יומני הביקורת:
- גישה
- פעילות
- אימות
- הגדרות אישיות
- לוחצים על Save.
- בכרטיסייה Syslog Configuration (הגדרת Syslog), מזינים את פרטי ההגדרה הבאים:
- שם המארח של השרת: מזינים את כתובת ה-IP של Bindplane.
- יציאת השרת: מזינים את מספר היציאה של Bindplane.
- זמן קצוב לתפוגת החיבור: מזינים את מספר השניות לחיבור (לדוגמה,
120). - פרוטוקול העברה: בוחרים באפשרות UDP.
- Facility: בוחרים באפשרות Local0.
- כל הנושאים מוגדרים ברמת חומרה INFORMATIONAL.
- לוחצים על Save.
- בכרטיסייה Buffering (אגירת נתונים), בוחרים באפשרות Buffering Enabled (אגירת נתונים מופעלת) כדי להפעיל אותה.
- לוחצים על Save.
טבלת מיפוי UDM
| שדה ביומן | מיפוי UDM | היגיון |
|---|---|---|
client.ip |
principal.ip |
כתובת ה-IP של הלקוח ששולח את הבקשה. |
client.ip |
principal.asset.ip |
כתובת ה-IP של נכס הלקוח ששולח את הבקשה. |
client.port |
principal.port |
היציאה שמשמשת את הלקוח ששולח את הבקשה. |
entries[0].info.authLevel |
principal.resource.resource_subtype |
רמת האימות שמשויכת לאירוע. עם הקידומת "authLevel:". |
entries[0].info.displayName |
security_result.description |
שם תיאורי לצומת בעץ האימות. |
entries[0].info.ipAddress |
principal.asset.ip |
כתובת ה-IP שמשויכת לחשבון המשתמש באירוע. |
entries[0].info.ipAddress |
principal.ip |
כתובת ה-IP שמשויכת לחשבון המשתמש באירוע. |
entries[0].info.nodeId |
principal.resource.id |
המזהה הייחודי של הצומת בעץ האימות. הערך מתחיל ב-nodeId:. |
entries[0].info.nodeOutcome |
principal.resource.attribute.labels.value |
התוצאה של הצומת בעץ האימות. |
entries[0].info.nodeType |
principal.resource.type |
סוג הצומת בעץ האימות. עם הקידומת "nodeType:". |
entries[0].info.treeName |
principal.resource.name |
השם של עץ האימות. עם הקידומת "treeName:". |
eventName |
metadata.product_event_type |
שם האירוע הגולמי מיומני OpenAM. |
http.request.headers.host[0] |
target.asset.hostname |
שם המארח של שרת היעד, שחולץ מהכותרת host. |
http.request.headers.host[0] |
target.hostname |
שם המארח של שרת היעד, שחולץ מהכותרת host. |
http.request.headers.user-agent[0] |
network.http.user_agent |
סוכן המשתמש של בקשת ה-HTTP. |
http.request.method |
network.http.method |
ה-method של ה-HTTP שמשמשת בבקשה. |
http.request.path |
target.url |
הנתיב של כתובת ה-URL של בקשת ה-HTTP. |
info.failureReason |
security_result.summary |
הסיבה לכשל באימות. מקודד בתוך הקוד ל-"SSO". נקבע לפי לוגיקה שמבוססת על eventName ושדות אחרים. הערכים האפשריים: GENERIC_EVENT, USER_LOGIN, USER_LOGOUT, NETWORK_HTTP או STATUS_UPDATE. הערך מוטמע בקוד כ-"OPENAM". מקודד באופן קשיח ל-"OpenAM". הערך מוטמע בקוד כ-ForgeRock. |
principal |
target.user.userid |
מזהה המשתמש שמעורב באירוע, שחולץ מהשדות userId, principal או runAs. |
result |
security_result.action_details |
תוצאת האירוע (למשל, "SUCCESSFUL", "FAILED"). |
response.detail.reason |
security_result.summary |
הסיבה לכשל באירוע של תוצאת גישה. |
response.status |
security_result.action_details |
סטטוס התגובה באירוע של תוצאת גישה. |
runAs |
target.user.userid |
מזהה המשתמש שמשויך לאירוע, שחולץ מהשדות userId, principal או runAs. |
security_result.action |
security_result.action |
הפעולה שבוצעה כתוצאה מאירוע האבטחה (למשל, "ALLOW", "BLOCK"). |
server.ip |
target.asset.ip |
כתובת ה-IP של שרת היעד. |
server.ip |
target.ip |
כתובת ה-IP של שרת היעד. |
server.port |
target.port |
היציאה של שרת היעד. |
timestamp |
metadata.event_timestamp |
חותמת הזמן של האירוע. |
trackingIds |
metadata.product_log_id |
מזהה לצורכי מעקב שמשויך לאירוע. |
transactionId |
metadata.product_deployment_id |
מזהה העסקה שמשויך לאירוע. |
userId |
target.user.userid |
מזהה המשתמש שמעורב באירוע, שחולץ מהשדות userId, principal או runAs. |
userId |
target.user.group_identifiers |
מזהי הקבוצות שמשויכים למשתמש. |
am_group |
target.user.group_identifiers |
מזהי הקבוצות שמשויכים למשתמש. |
am_user |
target.user.email_addresses |
כתובת האימייל של המשתמש, אם היא מופיעה בשדה am_user. |
loginID[0] |
target.user.userid |
מזהה ההתחברות ששימש באירוע. |
loginID[0] |
target.user.email_addresses |
כתובת האימייל ששימשה לכניסה, אם היא מופיעה בשדה loginID. |
hostip |
intermediary.hostname |
שם המארח של מכשיר מתווך. |
hostip |
intermediary.ip |
כתובת ה-IP של מכשיר ביניים. |
src_ip |
principal.asset.ip |
כתובת ה-IP של המקור. |
src_ip |
principal.ip |
כתובת ה-IP של המקור. |
desc |
metadata.description |
תיאור האירוע. |
payload |
metadata.description |
המטען הייעודי של האירוע. |
http.request.headers.host.0 |
tatget.hostname |
מופה מיומן השינויים |
http.request.headers.user-agent.0 |
network.http.user_agent |
מופה מיומן השינויים |
extensions.auth.type |
SSO |
מופה מיומן השינויים |
יומן שינויים
צפייה ביומן השינויים של כלי הניתוח הזה
הבעיה עדיין לא נפתרה? קבלת תשובות מחברי הקהילה וממומחי Google SecOps.