איסוף יומנים של מסד נתונים ב-Teradata
במאמר הזה מוסבר איך להטמיע יומנים של Teradata Database ב-Google Security Operations באמצעות Bindplane.
Teradata Database היא פלטפורמת מחסן נתונים ארגוני שמייצרת יומנים של שאילתות, גישה, ביקורת אבטחה ואירועים במערכת. הוא מספק ניתוח נתונים וניהול נתונים ברמה גבוהה לפריסות גדולות במקום.
לפני שמתחילים
חשוב לוודא שמתקיימות הדרישות המוקדמות הבאות:
- מופע של Google SecOps
- Windows Server 2016 ואילך, או מארח Linux עם
systemd - קישוריות לרשת בין סוכן Bindplane לבין שרת מסד הנתונים של Teradata
- אם מריצים מאחורי שרת proxy, מוודאים שיציאות חומת האש פתוחות בהתאם לדרישות של סוכן Bindplane
- גישת אדמין למערכת Teradata Database
קבלת קובץ אימות להטמעת נתונים ב-Google SecOps
- נכנסים למסוף Google SecOps.
- עוברים אל SIEM Settings > Collection Agents.
מורידים את קובץ האימות להטמעת נתונים. שומרים את הקובץ בצורה מאובטחת במערכת שבה תותקן Bindplane.
איך מוצאים את מספר הלקוח ב-Google SecOps
- נכנסים למסוף Google SecOps.
- עוברים אל SIEM Settings > Profile (הגדרות SIEM > פרופיל).
מעתיקים את מזהה הלקוח מהקטע פרטי הארגון ושומרים אותו.
התקנת סוכן 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
השירות צריך להופיע כפעיל (פועל).
מקורות מידע נוספים להתקנה
אפשרויות התקנה נוספות ופתרון בעיות מפורטים במדריך להתקנת סוכן Bindplane.
הגדרה של סוכן Bindplane להטמעה של syslog ושליחה אל Google SecOps
איתור קובץ ההגדרות
Linux:
sudo nano /etc/bindplane-agent/config.yamlWindows:
notepad "C:\Program Files\observIQ OpenTelemetry Collector\config.yaml"
עריכת קובץ ההגדרות
מחליפים את כל התוכן של
config.yamlבהגדרה הבאה:receivers: tcplog: listen_address: "0.0.0.0:514" exporters: chronicle/teradata_db: compression: gzip creds_file_path: '/etc/bindplane-agent/ingestion-auth.json' customer_id: '<customer_id>' endpoint: malachiteingestion-pa.googleapis.com log_type: TERADATA_DB raw_log_field: body service: pipelines: logs/teradata_db_to_chronicle: receivers: - tcplog exporters: - chronicle/teradata_db
פרמטרים להגדרה
מחליפים את ה-placeholders הבאים:
הגדרת מקלט:
-
listen_address: כתובת ה-IP והיציאה להאזנה:-
0.0.0.0כדי להאזין בכל הממשקים (מומלץ) - יציאה
514היא יציאת syslog רגילה (נדרשת הרשאת root ב-Linux; אפשר להשתמש ב-1514ללא הרשאת root)
-
-
הגדרת כלי הייצוא:
-
creds_file_path: הנתיב המלא לקובץ האימות להטמעת נתונים:- Linux:
/etc/bindplane-agent/ingestion-auth.json - Windows:
C:\Program Files\observIQ OpenTelemetry Collector\ingestion-auth.json
- Linux:
-
customer_id: מספר הלקוח שהועתק ממסוף Google SecOps -
endpoint: כתובת ה-URL של נקודת הקצה האזורית:- ארה"ב:
malachiteingestion-pa.googleapis.com - אירופה:
europe-malachiteingestion-pa.googleapis.com - אסיה:
asia-southeast1-malachiteingestion-pa.googleapis.com - רשימה מלאה מופיעה במאמר בנושא נקודות קצה אזוריות.
- ארה"ב:
-
שמירת קובץ ההגדרות
- אחרי שמסיימים לערוך, שומרים את הקובץ:
- 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"
הגדרת העברה של syslog מ-Teradata Database
- נכנסים לשרת Teradata Database כאדמינים.
מגדירים העברה של syslog באמצעות כלי הרישום של Teradata Database Gateway. עורכים את קובץ ההגדרות של rsyslog:
sudo nano /etc/rsyslog.d/teradata.confמוסיפים את השורות הבאות כדי להעביר את יומני Teradata לסוכן Bindplane:
# Forward Teradata Database logs to Bindplane agent if $programname == 'teradata' then @@<bindplane-ip>:514- מחליפים את
<bindplane-ip>בכתובת ה-IP של המארח של סוכן Bindplane.
- מחליפים את
מפעילים מחדש את שירות rsyslog:
sudo systemctl restart rsyslogכדי לוודא שהיומנים נשלחים, בודקים את היומנים של סוכן Bindplane.
טבלת מיפוי UDM
| שדה ביומן | מיפוי UDM | היגיון |
|---|---|---|
| additional.fields | המיזוג מתבצע מתוויות שונות כמו collect_timestamp_label, logon_date_time_label, logon_source_label, protocol_label, remote_hostname_label, logon_details_label, port_label, connection_id_label, cid_label, jdbc_driver_info_label, request_mode_label, statement_group_label, statement_type_label | |
| app_id | target.asset.product_object_id | הערך הועתק ישירות |
| client_addr | principal.asset.hostname, principal.asset.ip, principal.hostname, principal.ip | הערך הועתק ישירות לכל |
| client_id | target.asset.asset_id | הערך המשורשר הוא CLIENT_ID:%{client_id} |
| collect_timestamp | metadata.collected_timestamp | ההמרה מתבצעת באמצעות התאמה לתאריך עם הפורמטים RFC 3339, UNIX_MS, UNIX, ISO8601, yyyy-MM-dd HH:mm:ss |
| default_database | target.resource.name, target.resource.resource_type | הערך מועתק ישירות לשם; הערך הוא DATABASE עבור resource_type |
| error_code | network.http.response_code, additional.fields | הומר למספר שלם עבור response_code; הועתק ל-error_code_label, מוזג ל-additional.fields |
| error_text | security_result.summary | הערך הועתק ישירות |
| host_name | principal.asset.hostname, principal.hostname | הערך הועתק ישירות לשניהם |
| logon_date_time | metadata.event_timestamp | ההמרה מתבצעת באמצעות התאמה לפורמט התאריך ISO8601, yyyy-MM-dd HH:mm:ss |
| logon_source | target.resource.parent | הערך הועתק ישירות |
| logon_source | additional.fields | המידע על מקור הכניסה חולץ באמצעות grok, ואז הוגדר כ- %{logonSource}LSS ב-logon_source_label שמוזג ל-additional.fields |
| logon_source | additional.fields | הפרוטוקול, remote_hostname, היציאה, פרטי הכניסה, connection_id, cid ו-jdbc_driver_info חולצו באמצעות grok, ואז הוגדרו בתוויות המתאימות שמוזגו ל-additional.fields |
| proc_id | target.resource.id | הערך הועתק ישירות |
| profile_name | target.resource.attribute.labels | מוגדר ב-profile_name_label שמוזג לתוך attribute.labels |
| query_text | target.process.command_line | הערך הועתק ישירות |
| request_mode | target.resource.resource_subtype, additional.fields | הערך הועתק ישירות אל resource_subtype; הערך שהוגדר ב-request_mode_label מוזג אל additional.fields |
| session_id | network.session_id | הערך הועתק ישירות |
| statement_group | principal.user.groupid, additional.fields | הערך הועתק ישירות אל groupid; הערך שהוגדר ב-statement_group_label מוזג אל additional.fields |
| statement_type | security_result.about.labels, additional.fields | המאפיין הזה מוגדר בתווית statementtype_value_label שמוזגה לתוך about.labels; המאפיין הזה מוגדר בתווית statement_type_label שמוזגה לתוך additional.fields |
| ts | metadata.event_timestamp | ההמרה מתבצעת באמצעות התאמה לתאריך עם הפורמטים MMM d HH:mm:ss, MMM dd HH:mm:ss, SYSLOGTIMESTAMP, RFC 3339, UNIX, ISO8601, UNIX_MS |
| tt_granularity | target.resource.product_object_id | הערך הועתק ישירות |
| user_id | principal.user.userid | הערך הועתק ישירות |
| user_name | principal.user.user_display_name | הערך הועתק ישירות |
| metadata.event_type | הערך הוא USER_RESOURCE_ACCESS אם has_principal, has_principal_user, has_target_resource הם true; אחרת הערך הוא STATUS_UPDATE אם has_principal הוא true; אחרת הערך הוא GENERIC_EVENT | |
| metadata.product_name | ההגדרה היא TERADATA_DB | |
| metadata.vendor_name | ההגדרה היא TERADATA | |
profile_name |
event.idm.read_only_udm.target.resource.attribute.labels |
מופה מיומן השינויים |
proc_id |
event.idm.read_only_udm.target.resource.id |
מופה מיומן השינויים |
user_id |
event.idm.read_only_udm.principal.user.userid |
מופה מיומן השינויים |
collect_timestamp |
event.idm.read_only_udm.metadata.collected_timestamp |
מופה מיומן השינויים |
logon_date_time |
event.idm.read_only_udm.metadata.event_timestamp |
מופה מיומן השינויים |
user_name |
event.idm.read_only_udm.principal.user.user_display_name |
מופה מיומן השינויים |
logon_source |
event.idm.read_only_udm.target.resource.parent |
מופה מיומן השינויים |
app_id |
event.idm.read_only_udm.target.asset.product_object_id |
מופה מיומן השינויים |
client_id |
event.idm.read_only_udm.target.asset.asset_id |
מופה מיומן השינויים |
error_code |
event.idm.read_only_udm.network.http.response_code |
מופה מיומן השינויים |
statement_type |
event.idm.read_only_udm.security_result.about.labels |
מופה מיומן השינויים |
statement_group |
event.idm.read_only_udm.principal.user.groupid |
מופה מיומן השינויים |
request_mode |
event.idm.read_only_udm.target.resource.resource_subtype |
מופה מיומן השינויים |
tt_granularity |
event.idm.read_only_udm.target.resource.product_object_id |
מופה מיומן השינויים |
protocol |
event.idm.read_only_udm.additional.fields |
מופה מיומן השינויים |
remote_hostname |
event.idm.read_only_udm.additional.fields |
מופה מיומן השינויים |
logon_details |
event.idm.read_only_udm.additional.fields |
מופה מיומן השינויים |
connection_id |
event.idm.read_only_udm.additional.fields |
מופה מיומן השינויים |
port |
event.idm.read_only_udm.additional.fields |
מופה מיומן השינויים |
cid |
event.idm.read_only_udm.additional.fields |
מופה מיומן השינויים |
jdbc_driver_info |
event.idm.read_only_udm.additional.fields |
מופה מיומן השינויים |
app_id |
principal.application |
מופה מיומן השינויים |
collect_timestamp |
event.idm.read_only_udm.additional.fields |
מופה מיומן השינויים |
error_code |
security_result.detection_fields |
מופה מיומן השינויים |
logon_date_time |
event.idm.read_only_udm.additional.fields |
מופה מיומן השינויים |
logon_source |
event.idm.read_only_udm.additional.fields |
מופה מיומן השינויים |
proc_id |
principal.process.pid |
מופה מיומן השינויים |
request_mode |
event.idm.read_only_udm.additional.fields |
מופה מיומן השינויים |
statement_group |
event.idm.read_only_udm.additional.fields |
מופה מיומן השינויים |
statement_type |
event.idm.read_only_udm.additional.fields |
מופה מיומן השינויים |
user_id |
target.user.userid |
מופה מיומן השינויים |
user_name |
target.user.user_display_name |
מופה מיומן השינויים |
יומן שינויים
צפייה ביומן השינויים של מנתח התוכן הזה
הבעיה עדיין לא נפתרה? קבלת תשובות מחברי הקהילה וממומחי Google SecOps.