איסוף יומנים מ-Akeyless Vault
גרסת המנתח: 2.0
במאמר הזה מוסבר איך להטמיע יומנים של Akeyless Vault ב-Google Security Operations באמצעות Bindplane.
Akeyless Vault היא פלטפורמה מבוססת-ענן לניהול סודות, שמספקת גישה מרכזית לפרטי כניסה, לאישורים ולמפתחות הצפנה. הוא משתמש בטכנולוגיית Distributed Fragments Cryptography (DFC) שמוגנת בפטנט, שמבטיחה שהסודות אף פעם לא מאוחסנים במיקום אחד, ומספקת אבטחה ללא ידיעה מוקדמת בסביבות היברידיות ובסביבות מרובות עננים.
לפני שמתחילים
חשוב לוודא שיש לכם את הדברים הבאים:
- מכונה של Google SecOps
- Windows Server 2016 ואילך, או מארח Linux עם
systemd - קישוריות רשת בין סוכן Bindplane לבין שער Akeyless
- אם השרת פועל מאחורי שרת proxy, צריך לוודא שהיציאות של חומת האש פתוחות בהתאם לדרישות של סוכן Bindplane.
- גישה מיוחדת לממשק המשתמש של Akeyless Gateway באינטרנט עם הרשאות אדמין
קבלת פרטי כניסה ל-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בספריית ה-collector של Bindplane (/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 (ניהול הרשאות גישה ואדמין > הגדרות) ומעתיקים את מספר הפרויקט. תצטרכו אותו כדי להגדיר את הייצוא.
אפשרות 2: הורדה של קובץ האימות להטמעת נתונים (מדור קודם)
- נכנסים למסוף Google SecOps.
- עוברים אל הגדרות SIEM > סוכני איסוף.
- מורידים את קובץ האימות להטמעת נתונים.
- שומרים את הקובץ בצורה מאובטחת במערכת שבה יותקן הסוכן של 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 /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/akeyless_vault: 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: '<PLACEHOLDER_CREDS_FILE_PATH>' customer_id: '<PLACEHOLDER_CUSTOMER_ID>' endpoint: chronicle.googleapis.com log_type: AKEYLESS_VAULT raw_log_field: body ingestion_labels: env: production service: pipelines: logs/akeyless_to_chronicle: receivers: - udplog exporters: - chronicle/akeyless_vault
פרמטרים להגדרה
מחליפים את ה-placeholders הבאים:
הגדרת המקלט:
-
udplog: מקלט UDP syslog להעברת יומנים של Akeyless Gateway -
0.0.0.0:514: כתובת ה-IP והיציאה להאזנה. מחליפים את היציאה לפי הצורך בתשתית שלכם
-
הגדרת הייצוא:
-
<PLACEHOLDER_CREDS_FILE_PATH>: הנתיב המלא לקובץ המפתח של חשבון השירות בפורמט JSON (אפשרות 1):- Linux:
/opt/observiq-otel-collector/ingestion-auth.json - Windows:
C:\Program Files\observIQ OpenTelemetry Collector\ingestion-auth.json
- Linux:
-
<PLACEHOLDER_CUSTOMER_ID>: מספר הלקוח ב-Google SecOps -
location: מחליפים את<LOCATION>באזור של המכונה של Google SecOps (לדוגמה,us,europeאוasia-southeast1). המייצא מוסיף את הערך הזה בתחילתchronicle.googleapis.com. רשימה מלאה של נקודות הקצה האזוריות מופיעה במאמר Regional Endpoints. -
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/akeyless_vault: compression: gzip creds_file_path: '<PLACEHOLDER_CREDS_FILE_PATH>' customer_id: '<PLACEHOLDER_CUSTOMER_ID>' endpoint: malachiteingestion-pa.googleapis.com log_type: AKEYLESS_VAULT raw_log_field: body ingestion_labels: env: production
שמירת קובץ התצורה
- אחרי שמסיימים לערוך, שומרים את הקובץ:
- 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 ב-Akeyless Vault
- נכנסים לממשק המשתמש באינטרנט של Akeyless Gateway.
- עוברים אל Log Forwarding.
- מסמנים את תיבת הסימון הפעלה.
- בוחרים את פורמט היומן – בוחרים באפשרות JSON.
- בשדה Audit Log Server, מזינים את הערך
https://audit.akeyless.io/. - בתפריט הנפתח Log Service (שירות יומן), בוחרים באפשרות Syslog.
- מזינים את פרטי ההגדרה הבאים:
- Syslog Network: בוחרים את פרוטוקול הרשת שבו משתמש סוכן Bindplane (לדוגמה, UDP).
- מארח Syslog: מזינים את שם המארח או את כתובת ה-IP של המארח של סוכן Bindplane (לדוגמה,
192.168.1.100:514). - Syslog Tag: (אופציונלי) מזינים את התג ליומני ביקורת. ערך ברירת המחדל הוא
audit-export. - כלי לעיצוב Syslog: בוחרים באפשרות טקסט או CEF.
- TLS: (אופציונלי) מסמנים את התיבה TLS ומעלים את אישור ה-TLS של שרת היומנים אם נדרשת הצפנת TLS.
- לוחצים על שמירת השינויים.
טבלת מיפוי UDM
| שדה ביומן | מיפוי UDM | היגיון |
|---|---|---|
access_id |
metadata.product_log_id |
ממופה ישירות מהשדה access_id. אם הוא לא מופיע, הוא יחולץ משדה ההודעה באמצעות ביטוי רגולרי. |
account_id |
target.user.userid |
ממופה ישירות מהשדה account_id. |
action |
security_result.action_details |
ממופה ישירות מהשדה action. |
component |
target.resource.name |
ממופה ישירות מהשדה component. |
duration |
network.session_duration.seconds |
מופה ישירות מהשדה duration והומר למספר שלם. |
remote_addr |
principal.ip |
חולץ מהשדה remote_addr, פוצל באמצעות פסיק ונוסף למערך principal.ip. |
request_parameters.access_type |
target.resource.attribute.labels (מפתח: access_type) |
ממופה ישירות מהשדה request_parameters.access_type. אם הוא לא קיים, הוא נשלף משדה ההודעה באמצעות ביטוי רגולרי. |
request_parameters.comment |
target.resource.attribute.labels (מפתח: comment) |
ממופה ישירות מהשדה request_parameters.comment. |
request_parameters.operation |
target.resource.attribute.labels (מפתח: operation) |
ממופה ישירות מהשדה request_parameters.operation. |
request_parameters.product |
target.resource.attribute.labels (מפתח: product) |
ממופה ישירות מהשדה request_parameters.product. אם הוא לא מופיע, הוא יחולץ משדה ההודעה באמצעות ביטוי רגולרי. |
request_parameters.token_id |
target.resource.attribute.labels (מפתח: token_id) |
ממופה ישירות מהשדה request_parameters.token_id. |
request_parameters.transaction_type |
target.resource.attribute.labels (מפתח: transaction_type) |
ממופה ישירות מהשדה request_parameters.transaction_type ומומר למחרוזת. אם הוא לא מופיע, הוא יחולץ משדה ההודעה באמצעות ביטוי רגולרי. |
request_parameters.unique_id |
target.resource.attribute.labels (מפתח: unique_id) |
ממופה ישירות מהשדה request_parameters.unique_id. אם הוא לא קיים, הוא נשלף משדה ההודעה באמצעות ביטוי רגולרי. |
request_parameters.universal_identity_rotate_type |
target.resource.attribute.labels (מפתח: universal_identity_rotate_type) |
ממופה ישירות מהשדה request_parameters.universal_identity_rotate_type. |
request_parameters.user_agent |
target.resource.attribute.labels (מפתח: user_agent) |
ממופה ישירות מהשדה request_parameters.user_agent. |
severity |
security_result.severity |
מופה מהשדה severity: Info אל INFORMATIONAL, Error אל ERROR, Warning אל MEDIUM, אחרת UNKNOWN_SEVERITY. |
status |
network.http.response_code |
ממופה ישירות מהשדה status ומומר למספר שלם. |
timestamp |
metadata.event_timestamp |
ממופה ישירות מהשדה של חותמת הזמן ברשומת היומן. |
| לא רלוונטי | metadata.log_type |
הוזן קוד קשיח ל-AKEYLESS_VAULT. |
| לא רלוונטי | metadata.event_type |
אם יש כתובת IP, הערך מוגדר כ-STATUS_UPDATE. אחרת, ערך ברירת המחדל הוא GENERIC_EVENT. |
| לא רלוונטי | metadata.vendor_name |
חולץ משדה ההודעה באמצעות תבנית ביטוי רגולרי של CEF. |
| לא רלוונטי | metadata.product_name |
חולץ משדה ההודעה באמצעות תבנית ביטוי רגולרי של CEF. |
| לא רלוונטי | metadata.product_version |
חולץ משדה ההודעה באמצעות תבנית ביטוי רגולרי של CEF. |
| לא רלוונטי | metadata.product_event_type |
חולץ משדה ההודעה באמצעות תבנית ביטוי רגולרי של כותרת syslog. |
| לא רלוונטי | target.namespace |
חילוץ משדה ההודעה באמצעות ביטוי רגולרי. |
action |
network.http.method |
מופה מהשדה action: get אל GET, put ו-Authentication אל PUT, post אל POST, delete אל DELETE. |
remote_addr |
event.idm.read_only_udm.intermediary.ip |
מופה מיומן השינויים |
syslog_hostname |
event.idm.read_only_udm.observer.hostname |
מופה מיומן השינויים |
process_name |
event.idm.read_only_udm.observer.application |
מופה מיומן השינויים |
pid |
event.idm.read_only_udm.observer.process.pid |
מופה מיומן השינויים |
severity |
event.idm.read_only_udm.security_result.severity |
מופה מיומן השינויים |
request_parameters.unique_id |
event.idm.read_only_udm.principal.user.email_addresses |
מופה מיומן השינויים |
item_type |
event.idm.read_only_udm.target.resource.resource_subtype |
מופה מיומן השינויים |
request_parameters.session_id |
event.idm.read_only_udm.network.session_id |
מופה מיומן השינויים |
duration_in_ms |
event.idm.read_only_udm.target.resource.attribute.labels |
מופה מיומן השינויים |
request_parameters.source |
event.idm.read_only_udm.target.resource.attribute.labels |
מופה מיומן השינויים |
request_parameters.item_accessibility |
event.idm.read_only_udm.target.resource.attribute.labels |
מופה מיומן השינויים |
remote_addr array |
principal.ip |
מופה מיומן השינויים |
יומן שינויים
צפייה ביומן השינויים של כלי הניתוח הזה
הבעיה עדיין לא נפתרה? קבלת תשובות מחברי הקהילה וממומחי Google SecOps.