Práticas recomendadas para a pesquisa
Este documento descreve as práticas recomendadas da Google para usar a funcionalidade Pesquisa no Google Security Operations. As pesquisas podem exigir recursos computacionais substanciais se não forem cuidadosamente criadas. O desempenho também varia consoante o tamanho e a complexidade dos dados na sua instância do Google SecOps.
Use campos de UDM indexados para obter a velocidade máxima
A forma mais eficaz de melhorar o desempenho da pesquisa é criar consultas com campos indexados. Estes campos estão otimizados para uma obtenção rápida. Os campos do modelo de dados unificado (UDM) conhecidos 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
Campos adicionais
about.file.md5about.file.sha1about.file.sha256intermediary.hostnameintermediary.ipnetwork.dns.questions.namenetwork.email.fromnetwork.email.toobserver.hostnameobserver.ip
Crie consultas de pesquisa eficazes para o desempenho
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 têm de cumprir rigorosamente esta estrutura fundamental:
udm-field operator value
Por exemplo:
principal.hostname = "win-server"
Restrinja o intervalo de tempo da sua pesquisa
Uma vez que o Google SecOps pode carregar uma grande quantidade de dados durante uma pesquisa, tem de minimizar o intervalo de tempo da sua consulta para restringir o âmbito e melhorar o desempenho da pesquisa.
Use expressões regulares na consulta de pesquisa
Pode usar operadores lógicos e de comparação padrão ao criar as suas consultas de pesquisa da UDM para criar expressões complexas:
- Operadores lógicos:use
AND,OReNOTpara combinar condições.ANDé assumido se omitir um operador entre duas condições. - Prioridade dos operadores: use parênteses () para substituir a ordem de prioridade predefinida. Existe um limite máximo de 169 operadores lógicos (
OR,AND,NOT) que pode usar entre parênteses. - Operadores de comparação: consoante o tipo de campo UDM (string, número inteiro, data/hora), os operadores de campo podem incluir:
=,!=,>=,>,<,<=
Em alternativa, para pesquisar de forma eficiente um grande conjunto de valores, pode usar as listas de referência.
Use nocase como modificador de pesquisa
Pode anexar o modificador nocase a uma condição de comparação de strings para tornar a pesquisa não sensível a maiúsculas e minúsculas, o que ignora a capitalização.
Por exemplo, a seguinte pesquisa é inválida:
target.user.userid = "TIM.SMITH" nocase
Evite usar expressões regulares em campos enumerados
Não pode usar expressões regulares quando pesquisa campos enumerados (campos com um intervalo de valores predefinidos), como metadata.event_type ou network.ip_protocol
O exemplo seguinte é uma pesquisa inválida:
metadata.event_type = /NETWORK_*/
Por outro lado, o exemplo seguinte é 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 etiquetados como repetidos, porque podem conter uma lista de valores ou tipos de mensagens num único evento. Os campos repetidos são sempre tratados com o operador any por predefinição (não existe nenhuma opção para especificar all).
Quando o operador any é usado, o predicado é avaliado como true se qualquer valor
no campo repetido satisfizer a condição. Por exemplo, se 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", é gerada uma correspondência. Isto expande a sua pesquisa para incluir resultados que correspondem a qualquer um dos operadores, em vez de corresponder a todos.
Cada elemento no campo repetido é tratado individualmente. Se o campo repeated for encontrado em eventos na pesquisa, os eventos são avaliados para cada elemento no campo. Isto pode causar um comportamento inesperado, especialmente quando
pesquisa com o operador !=.
Quando usa o operador any, o predicado é avaliado como true se qualquer valor no campo repetido satisfizer a condição.
Use a hora de época Unix para as indicações de tempo
Os campos de data/hora são associados através da hora de época Unix (o número total de segundos decorridos desde quinta-feira, 1 de janeiro de 1970 às 00:00:00 UTC).
Quando pesquisa uma indicação de tempo específica, o seguinte (em tempo epoch) é válido:
metadata.ingested_timestamp.seconds = 1660784400
A seguinte data/hora é inválida:
metadata.ingested_timestamp = "2022-08-18T01:00:00Z"
Exclua campos de filtros
Os seguintes campos são intencionalmente excluídos dos filtros de pesquisa. Embora contenham metadados cruciais, os respetivos valores altamente únicos podem introduzir detalhes de pesquisa desnecessários e reduzir a eficiência e a eficácia gerais do motor de consultas:
metadata.idmetadata.product_log_id*.timestamp
Precisa de mais ajuda? Receba respostas de membros da comunidade e profissionais da Google SecOps.