Coletar registros de atividades do Duo
Este documento descreve como exportar os registros de atividade do Duo e fazer a ingestão deles no Google Security Operations implantando o script de ingestão escrito em Python como uma função do Cloud Run e como os campos de registro são mapeados para os campos do modelo de dados unificado (UDM, na sigla em inglês) do Google Security Operations.
Para mais informações, consulte Visão geral da transferência de dados para as operações de segurança do Google.
Uma implantação típica consiste na atividade do Duo e no script de transferência implantado como funções do Cloud Run para enviar registros ao Google Security Operations. Cada implantação do cliente pode ser diferente e mais complexa.
A implantação contém os seguintes componentes:
Atividade do Duo: a plataforma de onde você coleta registros.
Cloud Run functions: o script de transferência implantado como funções do Cloud Run para buscar registros da atividade do Duo e transferi-los para o Google Security Operations.
Operações de segurança do Google: retém e analisa os registros.
Um rótulo de transferência identifica o analisador que normaliza os dados de registro brutos para o formato estruturado do UDM. As informações neste documento se aplicam ao analisador com o rótulo de transferência DUO_ACTIVITY
.
Antes de começar
- Verifique se você tem acesso ao painel de administrador do Duo.
- Verifique se você está usando a versão 2 ou mais recente da API Duo Admin.
Configurar a Atividade do Duo
- Faça login no painel do administrador do Duo como administrador.
- Clique em Aplicativos > Proteger um aplicativo.
- Na lista "Aplicativos", clique em API Admin > Proteger para receber a chave de integração, a chave secreta e o nome de host da API.
Configurar a ingestão de registros para o Google Security Operations
- Crie um diretório de implantação para armazenar os arquivos das funções do Cloud Run. Ele vai conter todos os arquivos necessários para a implantação.
- Copie todos os arquivos do subdiretório do GitHub da Atividade do Duo localizado no repositório do GitHub do Google Security Operations para este diretório de implantação.
- Copie a pasta comum e todo o conteúdo para o diretório de implantação.
- Edite o arquivo
.env.yml
para adicionar todas as variáveis de ambiente necessárias. - Configure as variáveis de ambiente marcadas como Secret no Secret Manager. Para mais informações sobre como criar secrets, consulte Criar e acessar secrets.
- Use o nome do recurso do segredo como o valor das variáveis de ambiente.
- Insira o valor
DUO_ACTIVITY
na variável de ambiente CHRONICLE_NAMESPACE. - No campo Código-fonte, selecione Upload do ZIP.
- No campo Bucket de destino, clique em Procurar para selecionar um bucket do Cloud Storage para fazer upload do código-fonte como parte da implantação.
- No campo Arquivo ZIP, clique em Procurar para selecionar um arquivo ZIP para fazer upload do seu sistema de arquivos local. Os arquivos de origem da função precisam estar localizados na raiz do arquivo ZIP.
- Clique em Implantar.
Para mais informações, consulte Usar scripts de transferência implantados como funções do Cloud Run.
Referência do mapeamento de campo
Referência de mapeamento de campo: identificador de evento para tipo de evento
A tabela a seguir lista os tipos de registroDUO_ACTIVITY
e os tipos de evento do UDM correspondentes.
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 |
|
Referência de mapeamento de campo: DUO_ACTIVITY
A tabela a seguir lista os campos de registro do tipo DUO_ACTIVITY
e os campos correspondentes do 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] |