Prácticas recomendadas para la búsqueda
En este documento, se describen las prácticas recomendadas de Google para usar la función Búsqueda en Google Security Operations. Las búsquedas pueden requerir recursos de procesamiento sustanciales si no se construyen con cuidado. El rendimiento también varía según el tamaño y la complejidad de los datos en tu instancia de Google SecOps.
Usa filtros específicos en las consultas para obtener la máxima velocidad y rendimiento
La forma más eficaz de mejorar el rendimiento de la búsqueda es compilar consultas con campos específicos y optimizados del Modelo de datos unificado (UDM). Estos campos están optimizados para una recuperación rápida, lo que garantiza que tus búsquedas se ejecuten rápidamente y usen menos recursos de procesamiento.
En las siguientes secciones, se enumeran los campos de UDM de alto rendimiento que se usarán como filtros en tus consultas.
Campos principales
principal.asset.hostnameprincipal.asset.ipprincipal.asset.macprincipal.file.md5principal.file.sha1principal.file.sha256principal.hostnameprincipal.ipprincipal.macprincipal.process.file.md5principal.process.file.sha1principal.process.file.sha256principal.process.parent_process.file.md5principal.process.parent_process.file.sha1principal.process.parent_process.file.sha256principal.user.email_addressesprincipal.user.product_object_idprincipal.user.useridprincipal.user.windows_sid
Campos de origen
source.user.useridsrc.asset.hostnamesrc.hostnamesrc.ip
Campos de objetivo
target.asset.hostnametarget.file.md5target.file.sha1target.file.sha256target.hostnametarget.iptarget.process.file.md5target.process.file.sha1target.process.file.sha256target.user.email_addressestarget.user.product_object_idtarget.user.useridtarget.user.windows_sid
Campos adicionales
about.file.md5about.file.sha1about.file.sha256intermediary.hostnameintermediary.ipnetwork.dns.questions.namenetwork.email.fromnetwork.email.toobserver.hostnameobserver.ip
Cómo consultar datos de entidades y contexto
Si buscas tipos de registros de entidades o contexto (como AZURE_AD_CONTEXT o WORKSPACE_USERS) con metadata.log_type = "<LOG_TYPE>", la búsqueda no muestra resultados, incluso si los registros sin procesar son visibles en la Búsqueda de registros sin procesar. Esto se debe a que la búsqueda de UDM solo consulta los registros de eventos de UDM.
Para buscar datos de entidades y contexto, usa la sintaxis graph:
Para buscar el tipo de registro de entidades o contexto, consulta los campos de metadatos
graph. Por ejemplo:graph.metadata.event_metadata.log_type = "<LOG_TYPE>"Para buscar campos de entidades, usa el prefijo
graph.entity.noun.field. Por ejemplo:graph.entity.user.email_addresses = "foo_email"
Para obtener más información, consulta Realiza una búsqueda de datos de contexto de entidades.
Crea consultas de búsqueda eficaces para el rendimiento
Escribir consultas optimizadas es clave para maximizar la velocidad y minimizar el consumo de recursos en tus datos de seguridad. Todas las condiciones de la consulta deben cumplir estrictamente esta estructura fundamental:
udm-field operator value
Por ejemplo:
principal.hostname = "win-server"
Reduce el intervalo de tiempo de tu búsqueda
Debido a que Google SecOps puede ingerir una gran cantidad de datos durante una búsqueda, minimizar el intervalo de tiempo y reducir el alcance de tu consulta puede mejorar el rendimiento de la búsqueda.
Usa expresiones regulares en la consulta de búsqueda
Puedes usar operadores lógicos y de comparación estándar cuando crees tus consultas de búsqueda de UDM para compilar expresiones complejas:
- Operadores lógicos: Usa
AND,ORyNOTpara combinar condiciones.ANDse supone si omites un operador entre dos condiciones. - Prioridad del operador: Usa paréntesis () para anular el orden de prioridad predeterminado. Hay un límite máximo de 169 operadores lógicos (
OR,AND,NOT) que puedes usar entre paréntesis. - Operadores de comparación: Según el tipo de campo de UDM (cadena, número entero, marca de tiempo), los operadores de campo pueden incluir:
=,!=,>=,>,<,<=
Google SecOps usa el motor de expresiones regulares RE2.
Como alternativa, para buscar de manera eficiente un conjunto grande de valores, puedes usar las listas de referencia.
Usa nocase como modificador de búsqueda
Puedes agregar el modificador nocase a una condición de comparación de cadenas para que la búsqueda no distinga entre mayúsculas y minúsculas, lo que ignora el uso de mayúsculas.
Por ejemplo, la siguiente búsqueda ignora el uso de mayúsculas y minúsculas y coincide con todas las combinaciones que contienen tim.smith independientemente del uso de mayúsculas y minúsculas:
target.user.userid = "TIM.SMITH" nocase
Evita usar expresiones regulares en campos enumerados
No puedes usar expresiones regulares cuando buscas campos enumerados (campos con un rango de valores predefinidos) como metadata.event_type o network.ip_protocol.
El siguiente ejemplo es una búsqueda no válida:
metadata.event_type = /NETWORK_*/
En cambio, el siguiente ejemplo es una búsqueda válida:
(metadata.event_type = "NETWORK_CONNECTION" o metadata.event_type = "NETWORK_DHCP")
Usa todos los operadores en el campo Eventos
En Búsqueda, algunos campos de UDM (como principal.ip o target.file.md5) se etiquetan como repetidos, ya que pueden contener una lista
de valores o tipos de mensajes dentro de un solo evento. Los campos repetidos siempre se tratan con el operador any de forma predeterminada (no hay opción para especificar all).
Cuando se usa el operador any, el predicado se evalúa como true si algún valor del campo repetido satisface la condición. Por ejemplo, si buscas
principal.ip != "1.2.3.4" y los eventos de tu búsqueda incluyen
principal.ip = "1.2.3.4" y principal.ip = "5.6.7.8", se genera una coincidencia. Esto expande tu búsqueda para incluir resultados que coincidan con cualquiera de los operadores en lugar de que coincidan con todos ellos.
Cada elemento del campo repetido se trata de forma individual. Si el campo repetido se encuentra en eventos de la búsqueda, los eventos se evalúan para cada elemento del campo. Esto puede causar un comportamiento inesperado, especialmente cuando se busca con el operador !=.
Cuando se usa el operador any, el predicado se evalúa como true si algún valor del campo repetido satisface la condición.
Usa la hora de la época de Unix para las marcas de tiempo o usa funciones de YARA-L para la conversión de fechas
Los campos de marca de tiempo coinciden con la hora de la época de Unix (la cantidad total de segundos que transcurrieron desde el jueves 1 de enero de 1970 a las 00:00:00 UTC) o puedes usar funciones de YARA-L para la conversión de fechas.
Cuando buscas una marca de tiempo específica, lo siguiente (en la hora de la época) es válido:
metadata.ingested_timestamp.seconds = 1660784400
La siguiente marca de tiempo no es válida:
metadata.ingested_timestamp = "2022-08-18T01:00:00Z"
Cuando buscas una marca de tiempo específica, lo siguiente (con una función de YARA-L para la conversión de fechas) es válido:
metadata.event_type = "NETWORK_CONNECTION"
timestamp.get_date(metadata.ingested_timestamp.seconds) = "2026-03-15"
En el siguiente ejemplo de YARA-L, se usan funciones timestamp para verificar los intervalos de tiempo de la ingesta:
metadata.event_type = "NETWORK_CONNECTION"
$date = timestamp.get_date(metadata.ingested_timestamp.seconds)
$date > "2026-03-15" AND $date < "2026-03-17"
Cómo consultar datos recién ingeridos con marcas de tiempo más antiguas
No puedes buscar eventos recién ingeridos que tengan una marca de tiempo más antigua, a menos que especifiques el intervalo de tiempo del evento para consultar. Esto se debe a que el intervalo de tiempo se basa en la marca de tiempo del evento analizado, en lugar de la marca de tiempo de ingesta del evento de registro sin procesar.
Para buscar eventos de UDM en registros ingeridos con marcas de tiempo de eventos más antiguas, puedes usar la opción Todo el tiempo para buscar y consultar en metadata.ingested_timestamp.
Campos excluidos de los filtros
Los siguientes campos se excluyen intencionalmente de los filtros de búsqueda:
metadata.idmetadata.product_log_id*.timestamp
Aunque estos campos contienen metadatos importantes, sus valores únicos introducen una alta cardinalidad y varianza en las estadísticas, lo que afecta negativamente el rendimiento de la búsqueda.
Soluciona problemas
Si recibes un mensaje de error genérico, como "Error: La búsqueda encontró un error y no se pudieron cargar los datos", sigue estos pasos para resolver el problema. Si el error persiste, comunícate con el equipo de asistencia al cliente.
- Conéctate a Google SecOps desde otra red. Por ejemplo, usa una VM de la nube para identificar cualquier problema de red.
- Asegúrate de que el firewall, la configuración del proxy o la política de tu organización permitan las llamadas a la API de Chronicle.
- Verifica que no se haya configurado ningún límite de datos para las llamadas a la API de Búsqueda, ya que las búsquedas pueden mostrar conjuntos de datos grandes.
- Las consultas de búsqueda se pueden ejecutar de forma asíncrona y pueden requerir más tiempo para mostrar los datos. Puedes ver las búsquedas ejecutadas anteriormente en el historial de búsqueda y seleccionarlas para ver los resultados más tarde.
¿Necesitas más ayuda? Obtén respuestas de miembros de la comunidad y profesionales de Google SecOps.