איסוף יומני פעילות ב-Duo

גרסת כלי הניתוח: 1.0

נתמך ב:

במאמר הזה מוסבר איך לייצא יומני פעילות של Duo ולהטמיע אותם ב-Google Security Operations באמצעות פריסת סקריפט ההטמעה שנכתב ב-Python כפונקציית Cloud Run, ואיך שדות היומן ממופים לשדות של Unified Data Model‏ (UDM) ב-Google SecOps.

מידע נוסף זמין במאמר סקירה כללית על הטמעת נתונים ב-Google SecOps.

פריסה טיפוסית מורכבת מ-Duo Activity וסקריפט ההטמעה שנפרס כפונקציות Cloud Run לשליחת יומנים אל Google SecOps. הפריסה של כל לקוח יכולה להיות שונה ומורכבת יותר.

הפריסה כוללת את הרכיבים הבאים:

  • פעילות ב-Duo: הפלטפורמה שממנה אוספים את היומנים.

  • פונקציות Cloud Run: סקריפט ההטמעה שנפרס כפונקציות Cloud Run כדי לאחזר יומנים מ-Duo Activity ולהטמיע אותם ב-Google SecOps.

  • ‫Google SecOps: שומר ומנתח את היומנים.

הערה: תווית הטמעה מזהה את מנתח הנתונים שמנרמל נתוני יומן גולמיים לפורמט UDM מובנה. המידע במסמך הזה רלוונטי למנתח התוכן עם תווית ההטמעה DUO_ACTIVITY.

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

  • ודאו שיש לכם גישה למרכז האדמין של Duo.
  • ודאו שאתם משתמשים ב-Duo Admin API מגרסה 2 ואילך.

הגדרת פעילות ב-Duo

  1. נכנסים לחלונית הניהול של Duo כאדמינים. מידע נוסף זמין במאמר סקירה כללית על לוח האדמין של Duo Administration.
  2. לוחצים על Applications (אפליקציות) > Protect an Application (הגנה על אפליקציה).
  3. ברשימת האפליקציות, לוחצים על Admin API > Protect כדי לקבל את מפתח השילוב, המפתח הסודי ושם המארח של ה-API.
  4. בוחרים את ההרשאות הנדרשות שרוצים להעניק לאפליקציית Admin API. מידע נוסף על ההרשאות הנדרשות לפעולות השונות זמין במאמר בנושא Duo Admin API.

הגדרה של העברת יומנים ל-Google SecOps

  1. יוצרים ספריית פריסה לאחסון הקבצים של פונקציות Cloud Run. הספרייה הזו תכיל את כל הקבצים שנדרשים לפריסה.
  2. מעתיקים את כל הקבצים מספריית המשנה של GitHub של Duo Activity שנמצאת במאגר GitHub של Google SecOps לספריית הפריסה הזו.
  3. מעתיקים את התיקייה המשותפת ואת כל התוכן שלה לספריית הפריסה.
  4. עורכים את הקובץ .env.yml כדי להוסיף את כל משתני הסביבה הנדרשים.
  5. מגדירים את משתני הסביבה שמסומנים כסוד ב-Secret Manager. מידע נוסף על יצירת סודות זמין במאמר בנושא יצירה וגישה לסודות.
  6. משתמשים בשם המשאב של הסוד כערך של משתני הסביבה.
  7. מזינים את הערך DUO_ACTIVITY במשתנה הסביבה CHRONICLE_NAMESPACE.
  8. בשדה קוד מקור, בוחרים באפשרות העלאת ZIP.
  9. בשדה Destination bucket, לוחצים על Browse כדי לבחור קטגוריה של Cloud Storage להעלאת קוד המקור כחלק מהפריסה.
  10. בשדה קובץ ZIP, לוחצים על עיון כדי לבחור קובץ ZIP להעלאה ממערכת הקבצים המקומית. קבצי המקור של הפונקציה צריכים להיות בתיקיית השורש של קובץ ה-ZIP.
  11. לוחצים על פריסה.

מידע נוסף זמין במאמר שימוש בסקריפטים להעברה שנפרסו כפונקציות של Cloud Run.

פורמטים נתמכים של יומן הפעילות ב-Duo

כלי הניתוח של פעילות ב-Duo תומך ביומנים בפורמט JSON.

דוגמאות נתמכות ליומני פעילות ב-Duo

  1. JSON

      {
        "access_device": {
          "browser": "Chrome",
          "browser_version": "127.0.0.0",
          "ip": {
            "address": "198.51.100.0"
          },
          "location": {
            "city": "Riverside",
            "country": "United States",
            "state": "California"
          },
          "os": "Windows",
          "os_version": "10"
        },
        "action": {
          "details": null,
          "name": "bypass_create"
        },
        "activity_id": "188c068b-1ef4-4c0a-80cc-700ee9a08612",
        "actor": {
          "details": "{\\"created\\": \\"2022-09-15T17: 27: 31.000000+00: 00\\", \\"last_login\\": \\"2024-08-26T22: 48: 50.000000+00: 00\\", \\"email\\": \\"test@gmail.com\\", \\"status\\": null, \\"groups\\": null}",
          "key": "dummyuserid",
          "name": "test",
          "type": "admin"
        },
        "akey": "DA06L58ASEO0DOKNXGXZ",
        "application": null,
        "old_target": null,
        "outcome": null,
        "target": {
          "details": "{\\"bkeys\\": [\\"DB8VPGAF6674GKS43FS9\\"], \\"count\\": 1, \\"valid_secs\\": 3600, \\"remaining_uses\\": 1, \\"auto_generated\\": true}",
          "key": "DU3H7GRU6UIENBKX5HRA",
          "name": "test",
          "type": "user_bypass"
        },
        "ts": "2024-08-26T22:49:21.975784+00:00"
      }
    
    

הפניה למיפוי שדות

הפניה למיפוי שדות: מזהה אירוע לסוג אירוע

בטבלה הבאה מפורטים סוגי היומנים של DUO_ACTIVITY וסוגי האירועים התואמים ב-UDM.
Event Identifier Event Type Security Category
admin_activate_duo_push DEVICE_PROGRAM_DOWNLOAD
admin_factor_restrictions RESOURCE_PERMISSIONS_CHANGE
admin_login USER_UNCATEGORIZED
admin_rectivates_duo_push DEVICE_PROGRAM_DOWNLOAD
admin_reset_password USER_CHANGE_PASSWORD
admin_send_reset_password_email EMAIL_TRANSACTION
bypass_create RESOURCE_CREATION
bypass_delete RESOURCE_DELETION
bypass_view RESOURCE_READ
deregister_devices USER_RESOURCE_DELETION
device_change_enrollment_summary_notification_answered USER_COMMUNICATION
device_change_enrollment_summary_notification_answered_notify_admin USER_COMMUNICATION
device_change_enrollment_summary_notification_send USER_COMMUNICATION
device_change_notification_answered USER_COMMUNICATION
device_change_notification_answered_notify_admin USER_COMMUNICATION
device_change_notification_create RESOURCE_CREATION
device_change_notification_send USER_COMMUNICATION
group_create GROUP_CREATION
group_delete GROUP_DELETION
group_update GROUP_MODIFICATION
hardtoken_create RESOURCE_CREATION
hardtoken_delete RESOURCE_DELETION
hardtoken_resync RESOURCE_WRITTEN
hardtoken_update RESOURCE_WRITTEN
integration_create RESOURCE_CREATION
integration_delete RESOURCE_DELETION
integration_group_policy_add GROUP_UNCATEGORIZED
integration_group_policy_remove GROUP_UNCATEGORIZED
integration_policy_assign USER_UNCATEGORIZED
integration_policy_unassign USER_UNCATEGORIZED
integration_skey_bulk_view RESOURCE_READ
integration_skey_view RESOURCE_READ
integration_update RESOURCE_WRITTEN
log_export_start USER_UNCATEGORIZED
log_export_complete USER_UNCATEGORIZED
log_export_failure USER_UNCATEGORIZED
management_system_activate_device_cache DEVICE_CONFIG_UPDATE
management_system_active_device_cache_add_devices RESOURCE_CREATION
management_system_active_device_cache_delete_devices RESOURCE_DELETION
management_system_active_device_cache_edit_devices RESOURCE_WRITTEN
management_system_add_devices RESOURCE_CREATION
management_system_create RESOURCE_CREATION
management_system_delete RESOURCE_DELETION
management_system_delete_devices RESOURCE_DELETION
management_system_device_cache_add_devices RESOURCE_CREATION
management_system_device_cache_create RESOURCE_CREATION
management_system_device_cache_delete RESOURCE_DELETION
management_system_device_cache_delete_devices RESOURCE_DELETION
management_system_download_device_api_script DEVICE_PROGRAM_DOWNLOAD
management_system_pkcs12_enrollment RESOURCE_CREATION
management_system_sync_failure USER_UNCATEGORIZED
management_system_sync_success USER_UNCATEGORIZED
management_system_update USER_UNCATEGORIZED
management_system_view_password RESOURCE_READ
management_system_view_token RESOURCE_READ
phone_activation_code_regenerated RESOURCE_CREATION
phone_associate RESOURCE_CREATION
phone_create RESOURCE_CREATION
phone_delete RESOURCE_DELETION
phone_disassociate RESOURCE_DELETION
phone_new_sms_passcode RESOURCE_CREATION
phone_update RESOURCE_WRITTEN
policy_create RESOURCE_CREATION
policy_delete RESOURCE_DELETION
policy_update RESOURCE_WRITTEN
u2ftoken_create RESOURCE_CREATION
u2ftoken_delete RESOURCE_DELETION
user_not_enrolled_lockout USER_CHANGE_PERMISSIONS
user_adminapi_lockout USER_CHANGE_PERMISSIONS
user_lockout_cleared USER_CHANGE_PERMISSIONS
webauthncredential_create RESOURCE_CREATION
webauthncredential_delete RESOURCE_DELETION
webauthncredential_rename RESOURCE_WRITTEN

הפניה למיפוי שדות: DUO_ACTIVITY

בטבלה הבאה מפורטים שדות היומן של סוג היומן DUO_ACTIVITY והשדות התואמים ב-UDM.

Log field UDM mapping Logic
principal.platform If the access_device.os log field value matches the regular expression pattern (?i)Win, then the principal.platform UDM field is set to WINDOWS.

Else, if the access_device.os log field value matches the regular expression pattern (?i)Lin, then the principal.platform UDM field is set to LINUX.

Else, if the access_device.os log field value matches the regular expression pattern (?i)Mac, then the principal.platform UDM field is set to MAC.

Else, if the access_device.os log field value matches the regular expression pattern (?i)ios, then the principal.platform UDM field is set to IOS.

Else, if the access_device.os log field value matches the regular expression pattern (?i)Chrome, then the principal.platform UDM field is set to CHROME_OS.

Else, if the access_device.os log field value matches the regular expression pattern (?i)Android, then the principal.platform UDM field is set to ANDROID.

Else, the principal.platform UDM field is set to UNKNOWN_PLATFORM.
access_device.os_version principal.platform_version
access_device.ip.address principal.ip
access_device.location.country principal.location.country_or_region
access_device.location.state principal.location.state
access_device.location.city principal.location.city
access_device.browser principal.asset.attribute.labels[access_device_browser]
access_device.browser_version principal.asset.attribute.labels[access_device_browser_version]
ts metadata.event_timestamp
activity_id metadata.product_log_id
akey principal.asset.product_object_id
outcome.result security_result.action_details
application.key principal.resource.product_object_id
application.name principal.application
application.type principal.resource.resource_subtype
action.details principal.user.attribute.labels[action_details]
action.name metadata.product_event_type
actor.key principal.user.userid
actor.name principal.user.user_display_name
actor.type principal.user.attribute.labels[actor_type]
target.key target.asset.attribute.labels[target_key]
target.name target.asset.hostname
target.type target.asset.category
target.details target.user.attribute.labels[target_details]
old_target.key about.asset.attribute.labels[old_target_key]
old_target.name about.asset.hostname
old_target.type about.asset.category
old_target.details about.user.attribute.labels[old_target_details]
actor.details.created principal.user.first_seen_time
actor.details.last_login principal.user.last_login_time
actor.details.status principal.user.attribute.labels[status]
actor.details.email principal.user.email_addresses
actor.details.group.key principal.user.attribute.labels[actor_details_group_key]
actor.details.group.name principal.user.attribute.labels[actor_details_group_name]

המאמרים הבאים

יומן שינויים

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

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