Práticas recomendadas de pesquisa

Compatível com:

Este documento descreve as práticas recomendadas do Google para usar o recurso Pesquisa no Google Security Operations. As pesquisas podem exigir muitos recursos computacionais se não forem criadas com cuidado. O desempenho também varia de acordo com o tamanho e a complexidade dos dados na sua instância do Google SecOps.

Use campos indexados da UDM para ter a máxima velocidade

A maneira mais eficaz de melhorar o desempenho da pesquisa é criar consultas usando campos indexados. Esses campos são otimizados para recuperação rápida. Os campos conhecidos do modelo de dados unificado (UDM) que são indexados são os seguintes:

Campos principais

  • principal.asset.hostname
  • principal.asset.ip
  • principal.asset.mac
  • principal.file.md5
  • principal.file.sha1
  • principal.file.sha256
  • principal.hostname
  • principal.ip
  • principal.mac
  • principal.process.file.md5
  • principal.process.file.sha1
  • principal.process.file.sha256
  • principal.process.parent_process.file.md5
  • principal.process.parent_process.file.sha1
  • principal.process.parent_process.file.sha256
  • principal.user.email_addresses
  • principal.user.product_object_id
  • principal.user.userid
  • principal.user.windows_sids

Campos de origem

  • source.user.userid
  • src.asset.hostname
  • src.hostname
  • src.ip

Campos de destino

  • target.asset.hostname
  • target.file.md5
  • target.file.sha1
  • target.file.sha256
  • target.hostname
  • target.ip
  • target.process.file.md5
  • target.process.file.sha1
  • target.process.file.sha256
  • target.user.email_addresses
  • target.user.product_object_id
  • target.user.userid
  • target.user.windows_sid

Outros campos

  • about.file.md5
  • about.file.sha1
  • about.file.sha256
  • intermediary.hostname
  • intermediary.ip
  • network.dns.questions.name
  • network.email.from
  • network.email.to
  • observer.hostname
  • observer.ip

Criar consultas de pesquisa eficazes para performance

Escrever consultas otimizadas é fundamental para maximizar a velocidade e minimizar o consumo de recursos nos seus dados de segurança. Todas as condições de consulta precisam obedecer estritamente a esta estrutura fundamental:

udm-field operator value

Por exemplo: principal.hostname = "win-server"

Como o Google SecOps pode ingerir uma grande quantidade de dados durante uma pesquisa, é necessário minimizar o período da consulta para restringir o escopo e melhorar o desempenho da pesquisa.

Usar expressões regulares na consulta de pesquisa

Você pode usar operadores lógicos e de comparação padrão ao criar consultas de pesquisa da UDM para criar expressões complexas:

  • Operadores lógicos:use AND, OR e NOT para combinar condições. O operador AND é usado se você omitir um operador entre duas condições.
  • Precedência de operadores: use parênteses () para substituir a ordem padrão de precedência. Há um limite máximo de 169 operadores lógicos (OR, AND, NOT) que podem ser usados entre parênteses.
  • Operadores de comparação: dependendo do tipo de campo do UDM (string, número inteiro, carimbo de data/hora), os operadores de campo podem incluir: =, !=, >=, >, <, <=

Como alternativa, para pesquisar com eficiência um grande conjunto de valores, use as listas de referência.

Usar nocase como um modificador de pesquisa

É possível acrescentar o modificador nocase a uma condição de comparação de strings para que a pesquisa não diferencie maiúsculas de minúsculas.

Por exemplo, a pesquisa a seguir é inválida:

target.user.userid = "TIM.SMITH" nocase

Evite usar expressões regulares em campos enumerados

Não é possível usar expressões regulares ao pesquisar campos enumerados (campos com um intervalo de valores predefinidos), como metadata.event_type ou network.ip_protocol.

O exemplo a seguir é uma pesquisa inválida: metadata.event_type = /NETWORK_*/

Já o exemplo a seguir é uma pesquisa válida: (metadata.event_type = "NETWORK_CONNECTION" ou metadata.event_type = "NETWORK_DHCP")

Use todos os operadores no campo "Eventos"

Na Pesquisa, alguns campos do UDM (como principal.ip ou target.file.md5) são rotulados como repetidos porque podem conter uma lista de valores ou tipos de mensagens em um único evento. Os campos repetidos são sempre tratados com o operador any por padrão. Não há opção para especificar all.

Quando o operador any é usado, o predicado é avaliado como true se algum valor no campo repetido satisfizer a condição. Por exemplo, se você pesquisar principal.ip != "1.2.3.4" e os eventos na sua pesquisa incluírem principal.ip = "1.2.3.4" e principal.ip = "5.6.7.8", uma correspondência será gerada. Isso expande sua pesquisa para incluir resultados que correspondem a qualquer um dos operadores, em vez de todos eles.

Cada elemento no campo repetido é tratado individualmente. Se o campo repetido for encontrado em eventos na pesquisa, eles serão avaliados para cada elemento no campo. Isso pode causar um comportamento inesperado, principalmente ao pesquisar usando o operador !=.

Ao usar o operador any, o predicado é avaliado como true se qualquer valor no campo repetido atender à condição.

Usar o tempo Unix epoch para carimbos de data/hora

Os campos de carimbo de data/hora são correspondidos usando o horário da época Unix (o número total de segundos que se passaram desde quinta-feira, 1º de janeiro de 1970, às 00h00m00s UTC).

Ao pesquisar um carimbo de data/hora específico, o seguinte (em tempo de época) é válido:

metadata.ingested_timestamp.seconds = 1660784400

O carimbo de data/hora a seguir é inválido:

metadata.ingested_timestamp = "2022-08-18T01:00:00Z"

Excluir campos dos filtros

Os campos a seguir são excluídos intencionalmente dos filtros de pesquisa. Embora contenham metadados cruciais, os valores altamente exclusivos podem introduzir detalhes de pesquisa desnecessários e reduzir a eficiência e a eficácia gerais do mecanismo de consulta:

  • metadata.id
  • metadata.product_log_id
  • *.timestamp

Precisa de mais ajuda? Receba respostas de membros da comunidade e profissionais do Google SecOps.