Práticas recomendadas de pesquisa
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.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_sids
Campos de origem
source.user.useridsrc.asset.hostnamesrc.hostnamesrc.ip
Campos de destino
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
Outros campos
about.file.md5about.file.sha1about.file.sha256intermediary.hostnameintermediary.ipnetwork.dns.questions.namenetwork.email.fromnetwork.email.toobserver.hostnameobserver.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"
Restringir o período da pesquisa
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,OReNOTpara combinar condições. O operadorANDé 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.idmetadata.product_log_id*.timestamp
Precisa de mais ajuda? Receba respostas de membros da comunidade e profissionais do Google SecOps.