איסוף יומנים של מסד נתונים ב-Teradata

נתמך ב:

במאמר הזה מוסבר איך להטמיע יומנים של Teradata Database ב-Google Security Operations באמצעות Bindplane.

Teradata Database היא פלטפורמת מחסן נתונים ארגוני שמייצרת יומנים של שאילתות, גישה, ביקורת אבטחה ואירועים במערכת. הוא מספק ניתוח נתונים וניהול נתונים ברמה גבוהה לפריסות גדולות במקום.

לפני שמתחילים

חשוב לוודא שמתקיימות הדרישות המוקדמות הבאות:

  • מופע של Google SecOps
  • ‫Windows Server 2016 ואילך, או מארח Linux עם systemd
  • קישוריות לרשת בין סוכן Bindplane לבין שרת מסד הנתונים של Teradata
  • אם מריצים מאחורי שרת proxy, מוודאים שיציאות חומת האש פתוחות בהתאם לדרישות של סוכן Bindplane
  • גישת אדמין למערכת Teradata Database

קבלת קובץ אימות להטמעת נתונים ב-Google SecOps

  1. נכנסים למסוף Google SecOps.
  2. עוברים אל SIEM Settings > Collection Agents.
  3. מורידים את קובץ האימות להטמעת נתונים. שומרים את הקובץ בצורה מאובטחת במערכת שבה תותקן Bindplane.

איך מוצאים את מספר הלקוח ב-Google SecOps

  1. נכנסים למסוף Google SecOps.
  2. עוברים אל SIEM Settings > Profile (הגדרות SIEM > פרופיל).
  3. מעתיקים את מזהה הלקוח מהקטע פרטי הארגון ושומרים אותו.

התקנת סוכן Bindplane

מתקינים את סוכן Bindplane במערכת ההפעלה Windows או Linux לפי ההוראות הבאות.

התקנה ב-Windows

  1. פותחים את שורת הפקודה או את PowerShell כאדמין.
  2. מריצים את הפקודה הבאה:

    msiexec /i "https://github.com/observIQ/bindplane-agent/releases/latest/download/observiq-otel-collector.msi" /quiet
    
  3. מחכים שההתקנה תסתיים.

  4. כדי לוודא שההתקנה בוצעה, מריצים את הפקודה:

    sc query observiq-otel-collector
    

השירות צריך להופיע עם הערך RUNNING.

התקנה ב-Linux

  1. פותחים טרמינל עם הרשאות root או sudo.
  2. מריצים את הפקודה הבאה:

    sudo sh -c "$(curl -fsSlL https://github.com/observiq/bindplane-agent/releases/latest/download/install_unix.sh)" install_unix.sh
    
  3. מחכים שההתקנה תסתיים.

  4. כדי לוודא שההתקנה בוצעה, מריצים את הפקודה:

    sudo systemctl status observiq-otel-collector
    

השירות צריך להופיע כפעיל (פועל).

מקורות מידע נוספים להתקנה

אפשרויות התקנה נוספות ופתרון בעיות מפורטים במדריך להתקנת סוכן Bindplane.

הגדרה של סוכן Bindplane להטמעה של syslog ושליחה אל Google SecOps

איתור קובץ ההגדרות

  • ‫Linux:

    sudo nano /etc/bindplane-agent/config.yaml
    
  • ‫Windows:

    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
    • ‫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: לוחצים על קובץ > שמירה.

מפעילים מחדש את סוכן Bindplane כדי להחיל את השינויים.

כדי להפעיל מחדש את סוכן Bindplane ב-Linux:

  1. מריצים את הפקודה הבאה:

    sudo systemctl restart observiq-otel-collector
    
  2. מוודאים שהשירות פועל:

    sudo systemctl status observiq-otel-collector
    
  3. בודקים אם יש שגיאות ביומנים:

    sudo journalctl -u observiq-otel-collector -f
    

כדי להפעיל מחדש את סוכן Bindplane ב-Windows:

  1. בוחרים אחת מהאפשרויות האלה:

    • שורת הפקודה או PowerShell כאדמין:
    net stop observiq-otel-collector && net start observiq-otel-collector
    
    • מסוף השירותים:
      1. מקישים על Win+R, מקלידים services.msc ומקישים על Enter.
      2. מחפשים את observIQ OpenTelemetry Collector.
      3. לוחצים לחיצה ימנית ובוחרים באפשרות הפעלה מחדש.
  2. מוודאים שהשירות פועל:

    sc query observiq-otel-collector
    
  3. בודקים אם יש שגיאות ביומנים:

    type "C:\Program Files\observIQ OpenTelemetry Collector\log\collector.log"
    

הגדרת העברה של syslog מ-Teradata Database

  1. נכנסים לשרת Teradata Database כאדמינים.
  2. מגדירים העברה של syslog באמצעות כלי הרישום של Teradata Database Gateway. עורכים את קובץ ההגדרות של rsyslog:

    sudo nano /etc/rsyslog.d/teradata.conf
    
  3. מוסיפים את השורות הבאות כדי להעביר את יומני Teradata לסוכן Bindplane:

    # Forward Teradata Database logs to Bindplane agent
    if $programname == 'teradata' then @@<bindplane-ip>:514
    
    • מחליפים את <bindplane-ip> בכתובת ה-IP של המארח של סוכן Bindplane.
  4. מפעילים מחדש את שירות rsyslog:

    sudo systemctl restart rsyslog
    
  5. כדי לוודא שהיומנים נשלחים, בודקים את היומנים של סוכן 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.