איסוף יומנים של Auth0

גרסת המנתח: 16.0

נתמך ב:

מנתח הנתונים הזה מחלץ אירועים ביומן של Auth0 מהודעות בפורמט JSON. הוא מאתחל את שדות ה-UDM, מנתח את המטען הייעודי (payload) של ה-JSON, ממפה את השדות הרלוונטיים לסכימת ה-UDM ומסווג את האירועים על סמך השדה type, תוך הגדרת פעולות אבטחה וסוגי אירועים מתאימים.

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

ודאו שאתם עומדים בדרישות המוקדמות הבאות:

  • מופע של Google SecOps.
  • חשבון Auth0 עם ההרשאות הנדרשות.

הגדרת פידים

כדי להגדיר פיד:

  1. עוברים אל הגדרות > ניהול נתונים > פידים. אם אתם משתמשים בפלטפורמה של SIEM בלבד, עוברים אל הגדרות > פידים.
  2. לוחצים על הוספת פיד חדש.
  3. בדף הבא, לוחצים על הגדרת פיד יחיד.
  4. בשדה Feed name, מזינים שם לפיד (לדוגמה, Auth0 Logs).
  5. בוחרים באפשרות Webhook בתור סוג המקור.
  6. בוחרים באפשרות AUTH_ZERO בתור Log type.
  7. לוחצים על הבא.
  8. אופציונלי: מציינים ערכים לפרמטרים הבאים של הקלט:
    • Split delimiter: התו המשמש להפרדה בין שורות ביומן, כמו \n.
    • מרחב השמות של הנכס: מרחב השמות של הנכס.
    • תוויות הטמעה: התווית שנוספה לאירועים מהפיד הזה.
  9. לוחצים על הבא.
  10. בודקים את הגדרות הפיד במסך סיום ולוחצים על שליחה.
  11. לוחצים על יצירת מפתח סודי כדי ליצור מפתח סודי לאימות הפיד הזה.
  12. מעתיקים את המפתח הסודי ושומרים אותו. לא תוכלו לראות שוב את המפתח הסודי הזה. במקרה הצורך, אפשר ליצור מחדש מפתח סודי, אבל הפעולה הזו מבטלת את המפתח הסודי הקודם.
  13. בכרטיסייה פרטים, מעתיקים את כתובת ה-URL של נקודת הקצה של הפיד מהשדה פרטי נקודת הקצה. צריך לציין את כתובת ה-URL של נקודת הקצה הזו באפליקציית הלקוח.
  14. לוחצים על סיום.

יצירת מפתח API לפיד ה-Webhook

  1. עוברים אל מסוףGoogle Cloud > Credentials.

    כניסה לדף Credentials

  2. לוחצים על Create credentials ואז על מפתח API.

  3. מגבילים את הגישה של מפתח ה-API ל-Chronicle API.

מציינים את כתובת ה-URL של נקודת הקצה

  1. באפליקציית הלקוח, מציינים את כתובת ה-URL של נקודת הקצה (endpoint) ב-HTTPS שסופקה בפיד ה-webhook.
  2. כדי להפעיל את האימות, צריך לציין את מפתח ה-API ואת המפתח הסודי כחלק מהכותרת בהתאמה אישית, בפורמט הבא:

    X-goog-api-key = API_KEY
    X-Webhook-Access-Key = SECRET
    

    המלצה: ציינו את מפתח ה-API ככותרת במקום לציין אותו בכתובת ה-URL. אם לקוח ה-webhook שלכם לא תומך בכותרות בהתאמה אישית, אתם יכולים לציין את מפתח ה-API ואת המפתח הסודי באמצעות פרמטרים של שאילתה בפורמט הבא:

    ENDPOINT_URL?key=API_KEY&secret=SECRET
    

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

  • ‫ENDPOINT_URL: כתובת ה-URL של נקודת הקצה של הפיד.
  • ‫API_KEY: מפתח ה-API לאימות ב-Google Security Operations.
  • ‫SECRET: המפתח הסודי שיצרתם כדי לאמת את הפיד.

הגדרת התראת Webhook של Auth0 ל-Google SecOps

  1. נכנסים למרכז הבקרה של Auth0.
  2. עוברים אל Monitoring > Streams.
  3. לוחצים על Create Log Stream.
  4. לוחצים על הכפתור Custom Webhook (תגובה לפעולה מאתר אחר בהתאמה אישית) ונותנים לה שם לבחירתכם. לדוגמה: Google SecOps Webhook.
  5. קובעים את ההגדרות הבאות:
    • ‫Payload URL: מזינים את כתובת ה-URL של נקודת הקצה של Google SecOps API.
    • Content-Type: מגדירים את הכותרת Content-Type ל-application/json. כך Google SecOps יודע מה הפורמט של הנתונים שנשלחים.
    • אופציונלי: טוקן הרשאה: מגדירים סוד לאבטחה נוספת. הוא ישמש לאימות האותנטיות של בקשות ה-webhook.

התאמה אישית של המטען הייעודי (payload): אתם יכולים להתאים אישית את המטען הייעודי שנשלח ל-Google SecOps על ידי שינוי קטגוריית האירוע. כך אתם יכולים לבחור נקודות ספציפיות על הגרף מהאירוע ב-Auth0 ולעצב אותן לפי הצורך ב-Google SecOps. במסמכי התיעוד של Auth0 מפורט מידע על משתני ההקשר הזמינים ועל אפשרויות הסקריפטים. מוודאים שהמטען הייעודי (payload) הסופי תואם לפורמט ה-UDM הצפוי של Google SecOps.

  1. לוחצים על שמירה כדי ליצור את ה-webhook.
  2. מפעילים את האירוע שמשויך ל-hook (לדוגמה, רושמים משתמש חדש, מתחברים).
  3. כדי לוודא שהיומנים נשלחים אל Google SecOps, בודקים את הפיד במסוף Google SecOps.

טבלת מיפוי UDM

שדה ביומן מיפוי UDM Logic (פונקציה לוגית)
client_id principal.asset.product_object_id ממופה ישירות מהשדה client_id.
client_name principal.hostname ממופה ישירות מהשדה client_name.
connection security_result.description ממופה ישירות מהשדה connection.
connection_id security_result.rule_id ממופה ישירות מהשדה connection_id.
date metadata.event_timestamp מנותח מהשדה date באמצעות פורמט ISO8601.
description metadata.description ממופה ישירות מהשדה description.
details.error security_result.detection_fields מופה מהשדה details.error. המפתח הוא "שגיאה".
details.error.oauthError security_result.detection_fields מופה מהשדה details.error.oauthError. המפתח הוא "oauthError".
details.error.type security_result.detection_fields מופה מהשדה details.error.type. המפתח הוא "oauth_error_type".
details.ipOnAllowlist security_result.detection_fields מופה מהשדה details.ipOnAllowlist. המפתח הוא "ipOnAllowlist".
details.link target.url ממופה ישירות מהשדה details.link אם הוא קיים, אחרת נגזר משדות אחרים (ראו בהמשך).
details.request.auth.strategy security_result.detection_fields מופה מהשדה details.request.auth.strategy. המפתח הוא "strategy".
details.request.body.app_metadata.blockedReason security_result.detection_fields מופה מהשדה details.request.body.app_metadata.blockedReason. המפתח הוא "blockedReason".
details.request.body.app_metadata.customer_id target.user.product_object_id ממופה ישירות מהשדה details.request.body.app_metadata.customer_id.
details.request.body.app_metadata.migrated security_result.detection_fields מופה מהשדה details.request.body.app_metadata.migrated. המפתח "הועבר".
details.request.channel security_result.detection_fields מופה מהשדה details.request.channel. המפתח הוא "channel".
details.request.method network.http.method ממופה ישירות מהשדה details.request.method אחרי המרה לאותיות רישיות.
details.request.path target.url ממופה ישירות מהשדה details.request.path אם השדה details.link לא קיים, אחרת נגזר משדות אחרים (ראו בהמשך).
details.response.body.email target.user.email_addresses ממופה ישירות מהשדה details.response.body.email.
details.response.body.email_verified security_result.detection_fields מופה מהשדה details.response.body.email_verified. המפתח הוא "email_verified".
details.response.body.nickname target.user.user_display_name ממופה ישירות מהשדה details.response.body.nickname.
details.response.body.user_id target.user.userid ממופה ישירות מהשדה details.response.body.user_id.
details.response.statusCode network.http.response_code ממופה ישירות מהשדה details.response.statusCode אחרי המרה למספר שלם.
details.return_to target.url ממופה ישירות מהשדה details.return_to אם השדות details.link ו-details.request.path לא קיימים, אחרת נגזר משדות אחרים (ראו בהמשך).
details.session_id network.session_id ממופה ישירות מהשדה details.session_id.
details.stats.loginsCount additional.fields מופה מהשדה details.stats.loginsCount. המפתח הוא "loginsCount".
details.requiresVerification security_result.detection_fields מופה מהשדה details.requiresVerification. המפתח הוא "requiresVerification".
details.to target.user.email_addresses ממופה ישירות מהשדה details.to.
hostname target.hostname ממופה ישירות מהשדה hostname.
ip principal.ip ממופה ישירות מהשדה ip.
js_data.audience target.url מיפוי ישיר מהשדה js_data.audience אם השדות details.link,‏ details.request.path ו-details.return_to לא קיימים.
js_data.details.body.email_verified security_result.detection_fields מופה מהשדה js_data.details.body.email_verified. המפתח הוא "email_verified".
js_data.details.body.is_signup security_result.detection_fields מופה מהשדה js_data.details.body.is_signup. המפתח הוא "is_signup".
js_data.details.body.transaction.redirect_uri target.url ממופה ישירות מהשדה js_data.details.body.transaction.redirect_uri אם השדות details.link,‏ details.request.path,‏ details.return_to ו-js_data.audience לא קיימים.
js_data.scope security_result.detection_fields מופה מהשדה js_data.scope. המפתח הוא "scope".
js_data.tracking_id security_result.detection_fields מופה מהשדה js_data.tracking_id. המפתח הוא "tracking_id".
log_id metadata.product_log_id ממופה ישירות מהשדה log_id.
metadata.log_type metadata.log_type ממופה ישירות מהשדה log_type.
metadata.product_name metadata.product_name צריך להגדיר את הערך "AUTH_ZERO".
metadata.vendor_name metadata.vendor_name צריך להגדיר את הערך "AUTH_ZERO".
metadata.product_event_type metadata.product_event_type ממופה ישירות מהשדה type.
network.http.parsed_user_agent network.http.parsed_user_agent מנותח מהשדה user_agent.
network.http.user_agent network.http.user_agent ממופה ישירות מהשדה user_agent.
security_result.action security_result.action נקבע לפי השדה type (ALLOW או BLOCK). אפשר לראות את קוד המנתח למיפויים ספציפיים.
strategy security_result.detection_fields ממופה מהשדה strategy. המפתח הוא "strategy".
strategy_type security_result.detection_fields ממופה מהשדה strategy_type. המפתח הוא "strategy_type".
target.user.email_addresses target.user.email_addresses ממופה ישירות מהשדה user_name אם הוא כתובת אימייל, אחרת נגזר משדות אחרים (ראו למעלה).
target.user.userid target.user.userid ממופה ישירות מהשדה user_id, או מהשדה details.response.body.user_id או user_name אם השדה user_id לא קיים.
user_agent network.http.user_agent ממופה ישירות מהשדה user_agent.
user_id target.user.userid ממופה ישירות מהשדה user_id.
user_name target.user.email_addresses ממופה ישירות מהשדה user_name. צריך להגדיר את הערך "MACHINE" אם הערך של security_result.action הוא "ALLOW" והערך של type הוא "slo",‏ "sapi",‏ "s",‏ "ss" או "ssa". צריך להגדיר את הערך "OTP" אם הערך של extensions.auth.type הוא "MACHINE" והערך של type הוא "slo". נקבע לפי שילוב של שדות, כולל type,‏ client_name,‏ ip,‏ hostname ו-has_user. אפשר לראות את קוד המנתח למיפויים ספציפיים.

יומן שינויים

הצגת יומן השינויים של המנתח הזה

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