Duo-Aktivitätsprotokolle erfassen
In diesem Dokument wird beschrieben, wie Sie Duo-Aktivitätslogs exportieren und in Google Security Operations aufnehmen, indem Sie das in Python geschriebene Aufnahmeskript als Cloud Run-Funktion bereitstellen. Außerdem wird beschrieben, wie Logfelder UDM-Feldern (Unified Data Model) von Google SecOps zugeordnet werden.
Weitere Informationen finden Sie unter Datenaufnahme in Google SecOps – Übersicht.
Eine typische Bereitstellung besteht aus Duo Activity und dem Erfassungsskript, das als Cloud Run-Funktionen bereitgestellt wird, um Logs an Google SecOps zu senden. Jede Kundenbereitstellung kann unterschiedlich sein und komplexer ausfallen.
Die Bereitstellung enthält die folgenden Komponenten:
Duo-Aktivität: Die Plattform, von der Sie Logs erfassen.
Cloud Run Functions: Das als Cloud Run Functions bereitgestellte Erfassungsskript zum Abrufen von Logs aus Duo-Aktivitäten und zum Erfassen in Google SecOps.
Google SecOps: Behält die Logs bei und analysiert sie.
Hinweis:Mit einem Ingestion-Label wird der Parser identifiziert, der Rohdaten in das strukturierte UDM-Format normalisiert. Die Informationen in diesem Dokument beziehen sich auf den Parser mit dem Label DUO_ACTIVITY
.
Hinweise
- Sie benötigen Zugriff auf das Duo-Admin-Dashboard.
- Achten Sie darauf, dass Sie die Duo Admin API Version 2 oder höher verwenden.
Duo-Aktivitäten konfigurieren
- Melden Sie sich als Administrator im Duo-Admin-Steuerfeld an. Weitere Informationen finden Sie unter Übersicht über die Duo-Verwaltung.
- Klicken Sie auf Anwendungen > Anwendung schützen.
- Klicken Sie in der Liste „Applications“ (Anwendungen) auf „Admin API“ > Protect (Schützen), um Ihren Integrationsschlüssel, Ihren geheimen Schlüssel und den API-Hostname zu erhalten.
- Wählen Sie die erforderlichen Berechtigungen aus, die Sie der Admin API-Anwendung gewähren möchten. Weitere Informationen zu den erforderlichen Berechtigungen für die jeweiligen Vorgänge finden Sie unter Duo Admin API.
Logaufnahme für Google SecOps konfigurieren
- Erstellen Sie ein Bereitstellungsverzeichnis zum Speichern der Dateien für die Cloud Run-Funktionen. Dieses Verzeichnis enthält alle für die Bereitstellung erforderlichen Dateien.
- Kopieren Sie alle Dateien aus dem GitHub-Unterverzeichnis von Duo Activity im GitHub-Repository von Google SecOps in dieses Bereitstellungsverzeichnis.
- Kopieren Sie den gemeinsamen Ordner und seinen gesamten Inhalt in das Bereitstellungsverzeichnis.
- Bearbeiten Sie die Datei
.env.yml
, um alle erforderlichen Umgebungsvariablen hinzuzufügen. - Konfigurieren Sie die Umgebungsvariablen, die in Secret Manager als Secret gekennzeichnet sind. Weitere Informationen zum Erstellen von Secrets finden Sie unter Secrets erstellen und aufrufen.
- Verwenden Sie den Ressourcennamen des Secrets als Wert für die Umgebungsvariablen.
- Geben Sie den Wert
DUO_ACTIVITY
in die Umgebungsvariable CHRONICLE_NAMESPACE ein. - Wählen Sie im Feld Quellcode die Option ZIP-Datei hochladen aus.
- Klicken Sie im Feld Ziel-Bucket auf Durchsuchen, um einen Cloud Storage-Bucket auszuwählen, in dem der Quellcode als Teil der Bereitstellung hochgeladen werden soll.
- Klicken Sie im Feld ZIP-Datei auf Durchsuchen, um eine ZIP-Datei zum Hochladen aus Ihrem lokalen Dateisystem auszuwählen. Die Quelldateien Ihrer Funktion müssen sich im Stammverzeichnis der ZIP-Datei befinden.
- Klicken Sie auf Bereitstellen.
Weitere Informationen finden Sie unter Aufnahmeskripts verwenden, die als Cloud Run Functions bereitgestellt werden.
Unterstützte Formate für Duo-Aktivitätsprotokolle
Der Duo-Aktivitätsparser unterstützt Logs im JSON-Format.
Beispiel-Logs für unterstützte Duo-Aktivitäten
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" }
Referenz zur Feldzuordnung
Feldzuordnung: Ereignis-ID zu Ereignistyp
In der folgenden Tabelle sind dieDUO_ACTIVITY
-Logtypen und die entsprechenden UDM-Ereignistypen aufgeführt.
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 |
|
Referenz zur Feldzuordnung: DUO_ACTIVITY
In der folgenden Tabelle sind die Logfelder des Logtyps DUO_ACTIVITY
und die entsprechenden UDM-Felder aufgeführt.
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] |
Nächste Schritte
Benötigen Sie weitere Hilfe? Antworten von Community-Mitgliedern und Google SecOps-Experten erhalten