איסוף יומנים של VMware Tanzu

נתמך ב:

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

‫VMware Tanzu היא פלטפורמת Kubernetes שיוצרת יומני ביקורת בפורמט JSON ו-syslog לאירועים בשרת ה-API של Kubernetes, גישה למשאבים, החלטות אימות ושינויים בהגדרות. המנתח מחלץ שדות מיומני ביקורת בפורמט JSON וממפה אותם למודל הנתונים המאוחד (UDM).

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

חשוב לוודא שיש לכם את הדברים הבאים:

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

קבלת פרטי כניסה ל-Google SecOps בשביל סוכן Bindplane

כדי לאמת את סוכן Bindplane ב-Google SecOps, בוחרים אחת מהשיטות הבאות:

  • פריסות חדשות: משתמשים ב-Chronicle API (אפשרות 1).
  • פריסות מדור קודם: אפשר להמשיך להשתמש בקובץ האימות של ה-API להעברת נתונים (אפשרות 2) עד שה-API להעברת נתונים יפסיק לפעול ב-20 ביולי 2027.
  1. נכנסים אל Google Cloud המסוף ובוחרים את Google Cloud הפרויקט שמקושר למופע של Google SecOps.
  2. נכנסים אל IAM & Admin > Service Accounts (ניהול הרשאות גישה (IAM) & אדמין > חשבונות שירות).
  3. לוחצים על Create service account.
  4. מזינים את פרטי ההגדרה הבאים:
    • שם חשבון השירות: מזינים שם לחשבון (לדוגמה, bindplane-ingest).
    • תיאור חשבון השירות: מזינים תיאור (לדוגמה, Bindplane agent log ingestion).
  5. לוחצים על Create and continue.
  6. בקטע Grant this service account access to project, לוחצים על Select a role ובוחרים באפשרות Chronicle Editor.
  7. לוחצים על המשך ואז על סיום.
  8. לוחצים על חשבון השירות שיצרתם ואז עוברים לכרטיסייה Keys.
  9. לוחצים על Add key > Create new key.
  10. בוחרים באפשרות JSON ולוחצים על Create. קובץ המפתח יורד למחשב.
  11. שומרים את קובץ המפתח בשם 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 כך שיתאים לנתיב שבו שומרים את הקובץ.
  12. עוברים אל IAM & Admin > Settings (ניהול הרשאות גישה ואדמין > הגדרות) ומעתיקים את מספר הפרויקט. תצטרכו אותו כדי להגדיר את הייצוא.

אפשרות 2: הורדה של קובץ האימות להטמעת נתונים (מדור קודם)

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

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

  1. נכנסים למסוף Google SecOps.
  2. עוברים אל SIEM Settings > Profile.
  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 /opt/observiq-otel-collector/config.yaml
    
  • Windows:

    notepad "C:\Program Files\observIQ OpenTelemetry Collector\config.yaml"
    

עריכת קובץ התצורה

  • מחליפים את כל התוכן של config.yaml בהגדרה הבאה:

    receivers:
      udplog:
        listen_address: "0.0.0.0:514"
    
    exporters:
      chronicle/vmware_tanzu:
        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: VMWARE_TANZU
        raw_log_field: body
    
    service:
      pipelines:
        logs/vmware_tanzu_to_chronicle:
          receivers:
            - udplog
          exporters:
            - chronicle/vmware_tanzu
    

פרמטרים להגדרה

מחליפים את ה-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
    • ‫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/vmware_tanzu:
        compression: gzip
        creds_file_path: '/opt/observiq-otel-collector/ingestion-auth.json'
        customer_id: '<customer_id>'
        endpoint: malachiteingestion-pa.googleapis.com
        log_type: VMWARE_TANZU
        raw_log_field: body
    

שמירת קובץ התצורה

  • אחרי שמסיימים לערוך, שומרים את הקובץ:
    • Linux: מקישים על Ctrl+O, אחר כך על Enter ואז על Ctrl+X
    • Windows: לוחצים על קובץ > שמירה

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

  • כדי להפעיל מחדש את הסוכן של Bindplane ב-Linux, מריצים את הפקודה הבאה:

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

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

      sudo journalctl -u observiq-otel-collector -f
      
  • כדי להפעיל מחדש את הסוכן של Bindplane ב-Windows, בוחרים באחת מהאפשרויות הבאות:

    • שורת פקודה או PowerShell כאדמין:

      net stop observiq-otel-collector && net start observiq-otel-collector
      
    • מסוף השירותים:

      1. מקישים על Win+R, מקלידים services.msc ומקישים על Enter.
      2. מאתרים את observIQ OpenTelemetry Collector.
      3. לוחצים לחיצה ימנית ובוחרים באפשרות הפעלה מחדש.
      4. מוודאים שהשירות פועל:

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

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

הגדרת syslog ל-VMware Tanzu

  1. נכנסים לממשק האינטרנט של Tanzu Operations Manager.
  2. בוחרים את שם המשתמש ואז לוחצים על הגדרות.
  3. בוחרים באפשרות Syslog.
  4. לוחצים על כן כדי לשלוח יומני מערכת לשרת מרוחק.
  5. מזינים את פרטי ההגדרה הבאים:
    • Address: מזינים את כתובת ה-IP של סוכן Bindplane.
    • יציאה: מזינים את מספר היציאה של סוכן Bindplane.
    • ‫Transport Protocol: בוחרים באפשרות UDP או TCP, בהתאם להגדרות של סוכן Bindplane.
  6. לוחצים על Save.

טבלת מיפוי UDM

שדה ביומן מיפוי UDM היגיון
annotations.authorization.k8s.io/decision security_result.action אם ההערה authorization.k8s.io/decision קיימת, הערך שלה מומר לאותיות רישיות. אם הערך באותיות רישיות הוא "ALLOW", השדה ב-UDM מוגדר כ-ALLOW. אחרת, הערך הוא BLOCK.
annotations.authorization.k8s.io/reason security_result.description אם ההערה authorization.k8s.io/reason קיימת, המערכת משתמשת בערך שלה (אחרי הסרת המירכאות הכפולות).
apiVersion metadata.product_version ממופים ישירות.
auditID metadata.product_log_id מיפוי ישיר.
kind metadata.product_event_type מיפוי ישיר.
objectRef.name target.resource.name מיפוי ישיר.
objectRef.namespace target.resource.attribute.labels.key, target.resource.attribute.labels.value הערך של key הוא 'מרחב שמות', והערך של value נלקח מ-objectRef.namespace.
objectRef.resource target.resource.resource_subtype מיפוי ישיר.
objectRef.resourceVersion target.resource.attribute.labels.key, target.resource.attribute.labels.value השדה key מוגדר ל-"resourceVersion", והשדה value נלקח מ-objectRef.resourceVersion.
objectRef.uid target.resource.product_object_id ממופים ישירות.
requestReceivedTimestamp / timestamp metadata.event_timestamp המנתח מנסה לנתח קודם את requestReceivedTimestamp. אם הוא לא קיים, המערכת משתמשת בשדה timestamp שחולץ מהקידומת של syslog.
requestURI target.url ממופים ישירות.
responseStatus.code network.http.response_code ממופה ישירות אחרי המרה למספר שלם.
sourceIPs principal.ip כל כתובות ה-IP במערך sourceIPs נוספות למערך principal.ip.
stage metadata.description מיפוי ישיר.
stageTimestamp metadata.collected_timestamp מיפוי ישיר.
user.groups principal.user.group_identifiers כל הקבוצות במערך user.groups מתווספות למערך principal.user.group_identifiers.
user.uid principal.user.userid ממופים ישירות.
user.username principal.user.user_display_name ממופים ישירות.
verb network.http.method ממופה ישירות אחרי המרה לאותיות רישיות. הערך נקבע לפי השדה verb. אם הערך של verb הוא CREATE, סוג האירוע הוא USER_RESOURCE_CREATION. אם הערך של verb הוא PATCH או UPDATE, סוג האירוע הוא USER_RESOURCE_UPDATE_CONTENT. אם verb הוא DELETE, סוג האירוע הוא USER_RESOURCE_DELETION. אחרת, אם verb לא ריק, סוג האירוע הוא USER_RESOURCE_ACCESS. אם אף אחד מהתנאים האלה לא מתקיים, סוג האירוע מוגדר כ-GENERIC_EVENT. הערך מוטמע בקוד כ-VMWARE_TANZU. מקודד באופן קשיח ל-"VMWARE". הערך מוטמע בקוד כ-VMWARE_TANZU. מקודד באופן קשיח ל-"CLUSTER".

יומן שינויים

צפייה ביומן השינויים של כלי הניתוח הזה

הבעיה עדיין לא נפתרה? קבלת תשובות מחברי הקהילה וממומחי Google SecOps.