Recopila registros de Cisco Meraki
En este documento, se explica cómo transferir registros de Cisco Meraki a Google Security Operations con Bindplane.
El analizador extrae campos de los registros con formato JSON y de syslog de Cisco Meraki. Utiliza el análisis de grok o JSON para procesar el mensaje de registro y, luego, asigna estos valores al Modelo de datos unificado (UDM). También establece valores de metadatos predeterminados para el origen y el tipo del evento.
Antes de comenzar
Asegúrate de cumplir con los siguientes requisitos previos:
- Una instancia de Google SecOps
- Windows Server 2016 o versiones posteriores, o host de Linux con
systemd - Si se ejecuta detrás de un proxy, asegúrate de que los puertos de firewall estén abiertos según los requisitos del agente de Bindplane.
- Acceso con privilegios al panel de Cisco Meraki
Obtén el archivo de autenticación de transferencia de Google SecOps
- Accede a la consola de Google SecOps.
- Ve a Configuración de SIEM > Agentes de recopilación.
- Descarga el archivo de autenticación de transferencia. Guarda el archivo de forma segura en el sistema en el que se instalará BindPlane.
Obtén el ID de cliente de Google SecOps
- Accede a la consola de Google SecOps.
- Ve a Configuración de SIEM > Perfil.
- Copia y guarda el ID de cliente de la sección Detalles de la organización.
Instala el agente de BindPlane
Instala el agente de Bindplane en tu sistema operativo Windows o Linux según las siguientes instrucciones.
Instalación en Windows
- Abre el símbolo del sistema o PowerShell como administrador.
Ejecuta el comando siguiente:
msiexec /i "https://github.com/observIQ/bindplane-agent/releases/latest/download/observiq-otel-collector.msi" /quietEspera a que se complete la instalación.
Ejecute el siguiente comando para verificar la instalación:
sc query observiq-otel-collector
El servicio debe mostrarse como RUNNING.
Instalación en Linux
- Abre una terminal con privilegios de administrador o sudo.
Ejecuta el comando siguiente:
sudo sh -c "$(curl -fsSlL https://github.com/observiq/bindplane-agent/releases/latest/download/install_unix.sh)" install_unix.shEspera a que se complete la instalación.
Ejecute el siguiente comando para verificar la instalación:
sudo systemctl status observiq-otel-collector
El servicio debería mostrarse como activo (en ejecución).
Recursos de instalación adicionales
Para obtener más opciones de instalación y solucionar problemas, consulta la guía de instalación del agente de Bindplane.
Configura el agente de BindPlane para transferir Syslog y enviarlo a Google SecOps
Ubica el archivo de configuración
Linux:
sudo nano /etc/bindplane-agent/config.yamlWindows:
notepad "C:\Program Files\observIQ OpenTelemetry Collector\config.yaml"
Edita el archivo de configuración
Reemplaza todo el contenido de
config.yamlcon la siguiente configuración:receivers: udplog: listen_address: "0.0.0.0:514" exporters: chronicle/chronicle_w_labels: compression: gzip creds_file_path: '/path/to/ingestion-authentication-file.json' customer_id: 'YOUR_CUSTOMER_ID' endpoint: malachiteingestion-pa.googleapis.com log_type: 'CISCO_MERAKI' raw_log_field: body ingestion_labels: service: pipelines: logs/source0__chronicle_w_labels-0: receivers: - udplog exporters: - chronicle/chronicle_w_labels
Parámetros de configuración
Reemplaza los marcadores de posición que se indican más abajo:
Configuración del receptor:
udplog: Usaudplogpara el registro del sistema UDP otcplogpara el registro del sistema TCP.0.0.0.0: Dirección IP en la que se realizará la escucha (0.0.0.0para escuchar en todas las interfaces)514: Número de puerto en el que se debe escuchar (puerto syslog estándar)
Configuración del exportador:
creds_file_path: Ruta de acceso completa al archivo de autenticación de la transferencia:- Linux:
/etc/bindplane-agent/ingestion-auth.json - Windows:
C:\Program Files\observIQ OpenTelemetry Collector\ingestion-auth.json
- Linux:
YOUR_CUSTOMER_ID: ID de cliente de la sección Obtén el ID de clienteendpoint: URL del extremo regional:- EE.UU.:
malachiteingestion-pa.googleapis.com - Europa:
europe-malachiteingestion-pa.googleapis.com - Asia:
asia-southeast1-malachiteingestion-pa.googleapis.com - Consulta Extremos regionales para obtener la lista completa.
- EE.UU.:
log_type: Tipo de registro tal como aparece en Chronicle (CISCO_MERAKI)
Guarda el archivo de configuración
- Después de editarlo, guarda el archivo:
- Linux: Presiona
Ctrl+O, luegoEntery, después,Ctrl+X. - Windows: Haz clic en Archivo > Guardar
- Linux: Presiona
Reinicia el agente de Bindplane para aplicar los cambios
Para reiniciar el agente de Bindplane en Linux, ejecuta el siguiente comando:
sudo systemctl restart observiq-otel-collectorVerifica que el servicio esté en ejecución:
sudo systemctl status observiq-otel-collectorRevisa los registros en busca de errores:
sudo journalctl -u observiq-otel-collector -f
Para reiniciar el agente de Bindplane en Windows, elige una de las siguientes opciones:
Símbolo del sistema o PowerShell como administrador:
net stop observiq-otel-collector && net start observiq-otel-collectorConsola de Services:
- Presiona
Win+R, escribeservices.mscy presiona Intro. - Busca observIQ OpenTelemetry Collector.
Haz clic con el botón derecho y selecciona Reiniciar.
Verifica que el servicio esté en ejecución:
sc query observiq-otel-collectorRevisa los registros en busca de errores:
type "C:\Program Files\observIQ OpenTelemetry Collector\log\collector.log"
- Presiona
Configura el reenvío de Syslog en Cisco Meraki
- Accede al panel de Cisco Meraki en
https://dashboard.meraki.com. - Selecciona la red de destino en el menú desplegable de redes.
- Ve a Configuración de la red > General.
- Ve a la sección Informes.
- Ubica Servidores Syslog y haz clic en Agregar un servidor Syslog.
- Proporciona los siguientes detalles de configuración:
- IP del servidor: Ingresa la dirección IP del host del agente de Bindplane.
- Puerto: Ingresa
514. - Roles: Selecciona los tipos de registros que se reenviarán:
- Flujos: Datos de flujo de red
- URLs: Registros de acceso a URLs
- Eventos de seguridad: Alertas de IDS/IPS
- Registro de eventos del dispositivo: Eventos del dispositivo MX
- Eventos de Air Marshal: Detección de amenazas inalámbricas
- Alertas de IDS: Son alertas del sistema de detección de intrusiones.
- Haz clic en Guardar.
- Para verificar que se envíen los mensajes de syslog, consulta los registros del agente de Bindplane.
Tabla de asignación de UDM
| Campo de registro | Asignación de UDM | Lógica |
|---|---|---|
| acción | security_result.action | El valor se convierte en mayúsculas. Si el valor es "deny", se reemplaza por "BLOCK". Si sc_action contiene "allow", el valor se reemplaza por "ALLOW". De lo contrario, si la decisión contiene "block", el valor se reemplaza por "BLOCK". De lo contrario, si la autorización es "success", se establece como "ALLOW", y si es "failure", se establece como "BLOCK". De lo contrario, si el patrón es "1 all", "deny all" o "Group Policy Deny", se establece en "BLOCK". Si el patrón es "permitir todo", "Permitir la política de grupo" o "0 todo", se establece en "ALLOW". De lo contrario, se establece como "UNKNOWN_ACTION". Si la decisión contiene "block", se establece como "BLOCK". |
| id de anuncio | principal.user.user_display_name | Se asigna directamente desde el campo adId en los registros JSON. |
| agente | network.http.user_agent | Se quitan los apóstrofos. Se asigna directamente desde el campo del agente. También se convirtió a network.http.parsed_user_agent con el filtro parseduseragent. |
| ayuda | network.session_id | Se asigna directamente desde el campo de ayuda. |
| appProtocol | network.application_protocol | Se convirtió a mayúsculas. Se asigna directamente desde el campo appProtocol. |
| attr | additional.fields | Se agrega como un par clave-valor al array additional.fields con la clave "attr". |
| autorización | security_result.action_details | Se asigna directamente desde el campo de autorización en los registros JSON. |
| correa | additional.fields | Se agrega como un par clave-valor al array additional.fields con la clave "band". |
| bssids.bssid | principal.mac | Se cambiaron a minúsculas. Se combinó en el array principal.mac. |
| bssids.detectedBy.device | intermediary.asset.asset_id | Tiene el formato "ID del dispositivo: ". |
| bssids.detectedBy.rssi | intermediary.asset.product_object_id | Se convirtió en una cadena. |
| Canal | about.resource.attribute.labels | Se agrega como un par clave-valor al array about.resource.attribute.labels con la clave "Channel". |
| clientDescription | additional.fields | Se agrega como un par clave-valor al array additional.fields con la clave "clientDescription". |
| clientId | additional.fields | Se agrega como un par clave-valor al array additional.fields con la clave "clientId". |
| clientIp | principal.ip, principal.asset.ip | Se asigna directamente desde el campo clientIp. |
| clientMac | principal.mac | Se cambiaron a minúsculas. Se asigna directamente desde el campo clientMac en los registros JSON. |
| client_ip | principal.ip, principal.asset.ip | Se asigna directamente desde el campo client_ip. |
| client_mac | principal.mac | Se cambiaron a minúsculas. Se asigna directamente desde el campo client_mac. |
| código | additional.fields | Se agrega como un par clave-valor al array additional.fields con la clave "code". |
| collection_time | metadata.event_timestamp | Los campos de segundos y nanosegundos se combinan para crear una marca de tiempo. |
| Condiciones | security_result.about.resource.attribute.labels | Los retornos de carro, los saltos de línea y las tabulaciones se reemplazan por espacios, y se sustituyen valores específicos. El valor modificado se agrega como un par clave-valor al array security_result.about.resource.attribute.labels con la clave "Conditions". |
| decisión | security_result.action | Si el valor es "blocked", se establece en "BLOCK". |
| desc | metadata.description | Se asigna directamente desde el campo desc. |
| descripción | security_result.description | Se asigna directamente desde el campo de descripción en los registros JSON. |
| DestAddress | target.ip, target.asset.ip | Se asigna directamente desde el campo DestAddress. |
| DestPort | target.port | Se convierte en un número entero. Se asigna directamente desde el campo DestPort. |
| deviceIp | target.ip | Se asigna directamente desde el campo deviceIp. |
| deviceMac | target.mac | Se cambiaron a minúsculas. Se asigna directamente desde el campo deviceMac. |
| deviceName | target.hostname, target.asset.hostname | Se asigna directamente desde el campo deviceName en los registros JSON. |
| deviceSerial | target.asset.hardware.serial_number | Se asigna directamente desde el campo deviceSerial en los registros JSON. |
| Dirección | network.direction | Se quitan los caracteres especiales y el valor se asigna a network.direction. |
| DisabledPrivilegeList | target.user.attribute | Se reemplazan los retornos de carro, los saltos de línea y las tabulaciones, y el valor modificado se analiza como JSON y se combina en el objeto target.user.attribute. |
| dport | target.port | Se convierte en un número entero. Se asigna directamente desde el campo dport. |
| DST | target.ip, target.asset.ip | Se asigna directamente desde el campo dst. |
| dstIp | target.ip, target.asset.ip | Se asigna directamente desde el campo dstIp. |
| dstPort | target.port | Se convierte en un número entero. Se asigna directamente desde el campo dstPort. |
| dvc | intermediary.hostname | Se asigna directamente desde el campo dvc. |
| EnabledPrivilegeList | target.user.attribute | Se reemplazan los retornos de carro, los saltos de línea y las tabulaciones, y el valor modificado se analiza como JSON y se combina en el objeto target.user.attribute. |
| eventData.aid | principal.asset_id | Se formatea como "ASSET_ID:". |
| eventData.client_ip | principal.ip, principal.asset.ip | Se asigna directamente desde el campo eventData.client_ip en los registros JSON. |
| eventData.client_mac | principal.mac | Se cambiaron a minúsculas. Se asigna directamente desde el campo eventData.client_mac en los registros JSON. |
| eventData.group | principal.group.group_display_name | Se asigna directamente desde el campo eventData.group en los registros JSON. |
| eventData.identity | principal.hostname | Se asigna directamente desde el campo eventData.identity en los registros JSON. |
| eventData.ip | principal.ip, principal.asset.ip | Se asigna directamente desde el campo eventData.ip en los registros JSON. |
| EventID | metadata.product_event_type, security_result.rule_name | Se convirtió en una cadena. Se asigna a metadata.product_event_type. También se usa para crear security_result.rule_name en el formato "EventID: ". Se usa para determinar event_type y sec_action. |
| eventSummary | security_result.summary, metadata.description | Se asigna directamente desde el campo eventSummary. También se usa en security_result.description para algunos eventos. |
| eventType | metadata.product_event_type | Se asigna directamente desde el campo eventType. Se usa para determinar qué lógica de análisis se debe aplicar. |
| filename | principal.process.file.full_path | Se asigna directamente desde el campo de nombre de archivo. |
| FilterId | target.resource.product_object_id | Se asigna directamente desde el campo FilterId para el EventID 5447. |
| FilterName | target.resource.name | Se asigna directamente desde el campo FilterName para EventID 5447. |
| FilterRTID | security_result.detection_fields | Se agrega como un par clave-valor al array security_result.detection_fields con la clave "FilterRTID". |
| firstSeen | security_result.detection_fields | Se convirtió en una cadena. Se agrega como un par clave-valor al array security_result.detection_fields con la clave "firstSeen". |
| gatewayDeviceMac | target.mac | Se cambiaron a minúsculas. Se combinó en el array target.mac. |
| grupo | additional.fields | Se agrega como un par clave-valor al array additional.fields con la clave "group". |
| GroupMembership | target.user | Se quitan los retornos de carro, las nuevas líneas, los tabuladores y los caracteres especiales. El valor modificado se analiza como JSON y se combina con el objeto target.user. |
| Nombre de host | principal.hostname, principal.asset.hostname | Se asigna directamente desde el campo Nombre de host. |
| nivel empresarial | target.user.userid | Se asigna directamente desde el campo de identidad. |
| instigador | additional.fields | Se agrega como un par clave-valor al array additional.fields con la clave "instigator". |
| int_ip | intermediary.ip | Se asigna directamente desde el campo int_ip. |
| ip_msg | principal.resource.attribute.labels | Se agrega como un par clave-valor al array principal.resource.attribute.labels con la clave "IPs". |
| is_8021x | additional.fields | Se agrega como un par clave-valor al array additional.fields con la clave "is_8021x". |
| KeyName | target.resource.name | Se asigna directamente desde el campo KeyName. |
| KeyFilePath | target.file.full_path | Se asigna directamente desde el campo KeyFilePath. |
| lastSeen | security_result.detection_fields | Se convirtió en una cadena. Se agrega como un par clave-valor al array security_result.detection_fields con la clave "lastSeen". |
| last_known_client_ip | principal.ip, principal.asset.ip | Se asigna directamente desde el campo last_known_client_ip. |
| LayerName | security_result.detection_fields | Se agrega como un par clave-valor al array detection_fields de security_result con la clave "Layer Name". |
| LayerRTID | security_result.detection_fields | Se agrega como un par clave-valor al array security_result.detection_fields con la clave "LayerRTID". |
| localIp | principal.ip, principal.asset.ip | Se asigna directamente desde el campo localIp. |
| acceder | principal.user.email_addresses | Se asigna directamente desde el campo de acceso en los registros JSON si coincide con un formato de dirección de correo electrónico. |
| LogonGuid | additional.fields | Se agrega como un par clave-valor al array additional.fields con la clave "LogonGuid". |
| LogonType | extensions.auth.mechanism | Se asigna a un mecanismo de autenticación específico según su valor. Si PreAuthType está presente, anula LogonType. Los valores se asignan de la siguiente manera: 2 -> USERNAME_PASSWORD, 3 -> NETWORK, 4 -> BATCH, 5 -> SERVICE, 7 -> UNLOCK, 8 -> NETWORK_CLEAR_TEXT, 9 -> NEW_CREDENTIALS, 10 -> REMOTE_INTERACTIVE, 11 -> CACHED_INTERACTIVE, 12 -> CACHED_REMOTE_INTERACTIVE, 13 -> CACHED_UNLOCK, other -> MECHANISM_UNSPECIFIED. |
| mac | principal.mac | Se cambiaron a minúsculas. Se combinó en el array principal.mac. |
| MandatoryLabel | additional.fields | Se agrega como un par clave-valor al array additional.fields con la clave "MandatoryLabel". |
| Mensaje | security_result.description, security_result.summary | Si AccessReason está presente, Message se asigna a security_result.summary y AccessReason se asigna a security_result.description. De lo contrario, Message se asigna a security_result.description. |
| método | network.http.method | Se asigna directamente desde el campo del método. |
| msg | security_result.description | Se asigna directamente desde el campo msg. |
| nombre | principal.user.user_display_name | Se asigna directamente desde el campo name en los registros JSON. |
| natsrcIp | principal.nat_ip | Se asigna directamente desde el campo natsrcIp. |
| natsrcport | principal.nat_port | Se convierte en un número entero. Se asigna directamente desde el campo natsrcport. |
| network_id | additional.fields | Se agrega como un par clave-valor al array additional.fields con la clave "ID de red". |
| NewProcessId | target.process.pid | Se asigna directamente desde el campo NewProcessId. |
| NewProcessName | target.process.file.full_path | Se asigna directamente desde el campo NewProcessName. |
| NewSd | target.resource.attribute.labels | Se agrega como un par clave-valor al array target.resource.attribute.labels con la clave "Nuevo descriptor de seguridad". |
| occurredAt | metadata.event_timestamp | Se analiza como una marca de tiempo con el formato ISO8601. |
| ObjectName | target.file.full_path, target.registry.registry_key, target.process.file.full_path, additional.fields | Si EventID es 4663 y ObjectType es "Process", se asigna a target.process.file.full_path. Si ObjectType es "Key", se asigna a target.registry.registry_key. De lo contrario, se asigna a target.file.full_path. Para otros eventos, se agrega como un par clave-valor al array additional.fields con la clave "ObjectName". |
| ObjectType | additional.fields | Se agrega como un par clave-valor al array additional.fields con la clave "ObjectType". Se usa para determinar event_type. |
| OldSd | target.resource.attribute.labels | Se agrega como un par clave-valor al array target.resource.attribute.labels con la clave "Descriptor de seguridad original". |
| organizationId | principal.resource.id | Se asigna directamente desde el campo organizationId en los registros JSON. |
| ParentProcessName | target.process.parent_process.file.full_path | Se asigna directamente desde el campo ParentProcessName. |
| patrón | security_result.description | Se asigna directamente a security_result.description. Se usa para determinar security_result.action. |
| peer_ident | target.user.userid | Se asigna directamente desde el campo peer_ident. |
| PreAuthType | extensions.auth.mechanism | Se usa para determinar el mecanismo de autenticación, si está presente. Anula LogonType. |
| principalIp | principal.ip, principal.asset.ip | Se asigna directamente desde el campo principalIp. |
| principalMac | principal.mac | Se cambiaron a minúsculas. Se combinó en el array principal.mac. |
| principalPort | principal.port | Se convierte en un número entero. Se asigna directamente desde el campo principalPort. |
| prin_ip2 | principal.ip, principal.asset.ip | Se asigna directamente desde el campo prin_ip2. |
| prin_url | principal.url | Se asigna directamente desde el campo prin_url. |
| priority | security_result.priority | Se asigna a un nivel de prioridad según su valor: 1 -> HIGH_PRIORITY, 2 -> MEDIUM_PRIORITY, 3 -> LOW_PRIORITY y otros -> UNKNOWN_PRIORITY. |
| ProcessID | principal.process.pid | Se convirtió en una cadena. Se asigna directamente desde el campo ProcessID. |
| ProcessName | principal.process.file.full_path, target.process.file.full_path | Si EventID es 4689, se asigna a target.process.file.full_path. De lo contrario, se asigna a principal.process.file.full_path. |
| prod_log_id | metadata.product_log_id | Se asigna directamente desde el campo prod_log_id. |
| protocolo | network.ip_protocol | Se convirtió a mayúsculas. Si es un número, se convierte en el nombre del protocolo IP correspondiente. Si es "ICMP6", se reemplaza por "ICMP". Se asigna directamente desde el campo del protocolo. |
| ProviderGuid | metadata.product_deployment_id | Se asigna directamente desde el campo ProviderGuid. |
| consulta | network.dns.questions.name | Se asigna directamente desde el campo de búsqueda. |
| query_type | network.dns.questions.type | Se cambió el nombre a question.type y se combinó en el array network.dns.questions. Se asigna a un valor numérico según el tipo de consulta de DHCP. |
| radio | additional.fields | Se agrega como un par clave-valor al array additional.fields con la clave "radio". |
| Reason | additional.fields | Se agrega como un par clave-valor al array additional.fields con la clave "reason". |
| rec_bytes | network.received_bytes | Se convierte en un número entero sin signo. Se asigna directamente desde el campo rec_bytes. |
| RecordNumber | metadata.product_log_id | Se convirtió en una cadena. Se asigna directamente desde el campo RecordNumber. |
| RelativeTargetName | target.process.file.full_path | Se asigna directamente desde el campo RelativeTargetName. |
| response_ip | principal.ip, principal.asset.ip | Se asigna directamente desde el campo response_ip. |
| rssi | intermediary.asset.product_object_id | Se asigna directamente desde el campo rssi. |
| sc_action | security_result.action_details | Se asigna directamente desde el campo sc_action. |
| sec_action | security_result.action | Se combinó en el array security_result.action. |
| server_ip | client_ip | Se asigna directamente al campo client_ip. |
| Gravedad | security_result.severity | Se asigna a un nivel de gravedad según su valor: "Info" -> INFORMATIONAL, "Error" -> ERROR, "Warning" -> MEDIUM, otro -> UNKNOWN_SEVERITY. |
| sha256 | target.file.sha256 | Se asigna directamente desde el campo sha256. |
| firma | additional.fields | Se agrega como un par clave-valor al array additional.fields con la clave "signature". |
| SourceAddress | principal.ip, principal.asset.ip | Se asigna directamente desde el campo SourceAddress. |
| SourceHandleId | src.resource.id | Se asigna directamente desde el campo SourceHandleId. |
| SourceModuleName | observer.labels | Se agrega como un par clave-valor al array observer.labels con la clave "SourceModuleName". |
| SourceModuleType | observer.application | Se asigna directamente desde el campo SourceModuleType. |
| SourcePort | principal.port | Se convierte en un número entero. Se asigna directamente desde el campo SourcePort. |
| SourceProcessId | src.process.pid | Se asigna directamente desde el campo SourceProcessId. |
| source_client_ip | client_ip | Se asigna directamente al campo client_ip. |
| deporte | principal.port | Se convierte en un número entero. Se asigna directamente desde el campo de deporte. |
| src | principal.ip, principal.asset.ip | Se asigna directamente desde el campo src. |
| ssid | network.session_id | Se asigna directamente desde el campo ssid en los registros JSON. |
| ssidName | additional.fields | Se agrega como un par clave-valor al array additional.fields con la clave "ssidName". |
| state | additional.fields | Se agrega como un par clave-valor al array additional.fields con la clave "state". |
| Estado | additional.fields | Se agrega como un par clave-valor al array additional.fields con la clave "Status". |
| status_code | network.http.response_code | Se convierte en un número entero. Se asigna directamente desde el campo status_code. |
| SubjectDomainName | principal.administrative_domain | Se asigna directamente desde el campo SubjectDomainName. |
| SubjectLogonId | principal.resource.attribute.labels | Se agrega como un par clave-valor al array principal.resource.attribute.labels con la clave "SubjectLogonId". |
| SubjectUserName | principal.user.userid | Se asigna directamente desde el campo SubjectUserName. |
| SubjectUserSid | principal.user.windows_sid | Se asigna directamente desde el campo SubjectUserSid. |
| targetHost | target.hostname, target.asset.hostname | Se convierte en una dirección IP si es posible. De lo contrario, se analiza para extraer el nombre de host y se asigna a target.hostname y target.asset.hostname. |
| TargetHandleId | target.resource.id | Se asigna directamente desde el campo TargetHandleId. |
| TargetLogonId | principal.resource.attribute.labels | Se agrega como un par clave-valor al array principal.resource.attribute.labels con la clave "TargetLogonId" si es diferente de SubjectLogonId. |
| TargetProcessId | target.process.pid | Se asigna directamente desde el campo TargetProcessId. |
| TargetUserName | target.user.userid | Se asigna directamente desde el campo TargetUserName. |
| TargetUserSid | target.user.windows_sid | Se asigna directamente desde el campo TargetUserSid. |
| Tarea | additional.fields | Se convirtió en una cadena. Se agrega como un par clave-valor al array additional.fields con la clave "Task". |
| timestamp | metadata.event_timestamp | El campo de segundos se usa para crear una marca de tiempo. |
| ts | metadata.event_timestamp | Si ts está vacío, se crea combinando tsDate, tsTime y tsTZ. Si contiene "", se analiza para extraer el valor entero. Luego, se analiza como una marca de tiempo con varios formatos. |
| tipo | security_result.summary, metadata.product_event_type | Se asigna directamente desde el campo type en los registros JSON. También se usa como eventSummary y metadata.product_event_type en algunos casos. |
| url | target.url, principal.url | Se asigna directamente desde el campo de URL. |
| url1 | target.url | Se asigna directamente desde el campo url1. |
| usuario | target.user.group_identifiers | Se fusionó en el array target.user.group_identifiers. |
| user_id | target.user.userid | Se asigna directamente desde el campo user_id. |
| UserID | principal.user.windows_sid | Se asigna directamente desde el campo UserID. |
| UserName | principal.user.userid | Se asigna directamente desde el campo UserName. |
| user_agent | network.http.user_agent | Se asigna directamente desde el campo user_agent. |
| userid | target.user.userid | Se asigna directamente desde el campo userId. |
| vap | additional.fields | Se agrega como un par clave-valor al array additional.fields con la clave "vap". |
| VirtualAccount | security_result.about.labels | Se agrega como un par clave-valor al array security_result.about.labels con la clave "VirtualAccount". |
| wiredLastSeen | security_result.detection_fields | Se convirtió en una cadena. Se agrega como un par clave-valor al array security_result.detection_fields con la clave "wiredLastSeen". |
| wiredMacs | intermediary.mac | Se cambiaron a minúsculas. Se combinó en el array intermediary.mac. |
| WorkstationName | principal.hostname, principal.asset.hostname | Se asigna directamente desde el campo WorkstationName. |
¿Necesitas más ayuda? Obtén respuestas de miembros de la comunidad y profesionales de Google SecOps.