איסוף יומני פעילות ב-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
- נכנסים לחלונית הניהול של Duo כאדמינים. מידע נוסף זמין במאמר סקירה כללית על לוח האדמין של Duo Administration.
- לוחצים על Applications (אפליקציות) > Protect an Application (הגנה על אפליקציה).
- ברשימת האפליקציות, לוחצים על Admin API > Protect כדי לקבל את מפתח השילוב, המפתח הסודי ושם המארח של ה-API.
- בוחרים את ההרשאות הנדרשות שרוצים להעניק לאפליקציית Admin API. מידע נוסף על ההרשאות הנדרשות לפעולות השונות זמין במאמר בנושא Duo Admin API.
הגדרה של העברת יומנים ל-Google SecOps
- יוצרים ספריית פריסה לאחסון הקבצים של פונקציות Cloud Run. הספרייה הזו תכיל את כל הקבצים שנדרשים לפריסה.
- מעתיקים את כל הקבצים מספריית המשנה של GitHub של Duo Activity שנמצאת במאגר GitHub של Google SecOps לספריית הפריסה הזו.
- מעתיקים את התיקייה המשותפת ואת כל התוכן שלה לספריית הפריסה.
- עורכים את הקובץ
.env.ymlכדי להוסיף את כל משתני הסביבה הנדרשים. - מגדירים את משתני הסביבה שמסומנים כסוד ב-Secret Manager. מידע נוסף על יצירת סודות זמין במאמר בנושא יצירה וגישה לסודות.
- משתמשים בשם המשאב של הסוד כערך של משתני הסביבה.
- מזינים את הערך
DUO_ACTIVITYבמשתנה הסביבה CHRONICLE_NAMESPACE. - בשדה קוד מקור, בוחרים באפשרות העלאת ZIP.
- בשדה Destination bucket, לוחצים על Browse כדי לבחור קטגוריה של Cloud Storage להעלאת קוד המקור כחלק מהפריסה.
- בשדה קובץ ZIP, לוחצים על עיון כדי לבחור קובץ ZIP להעלאה ממערכת הקבצים המקומית. קבצי המקור של הפונקציה צריכים להיות בתיקיית השורש של קובץ ה-ZIP.
- לוחצים על פריסה.
מידע נוסף זמין במאמר שימוש בסקריפטים להעברה שנפרסו כפונקציות של Cloud Run.
פורמטים נתמכים של יומן הפעילות ב-Duo
כלי הניתוח של פעילות ב-Duo תומך ביומנים בפורמט JSON.
דוגמאות נתמכות ליומני פעילות ב-Duo
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.