Resolver problemas de regras de detecção

Compatível com:

Os erros de tempo de execução podem ocorrer durante a execução da regra e impedir que ela seja executada com sucesso. Este documento ajuda a resolver problemas comuns do ambiente de execução.

  • Para evitar erros de tempo de execução, teste as regras antes da implantação. Clique em Executar teste no editor de regras. Se um erro for detectado, siga o link de erro para ver mais detalhes.

  • É possível priorizar o teste de cada regra em períodos com a maior quantidade de dados antes da implantação.

  • Se ocorrer um erro durante a execução da regra, siga o link de erro na página Detecções para mais detalhes.

Erros de sintaxe e lógica de consulta

Esses erros ocorrem quando a estrutura da consulta é inválida, muito complexa ou usa tipos de dados incompatíveis.

Mensagem de erro Causa subjacente Resolução
Too many `OR` and `AND` operations A consulta contém expressões ou lógica profundamente aninhadas que excedem os limites de espaço da pilha.

Simplifique as condições da regra.

Divida lógicas complexas em partes menores.

Query is too long

Esse erro ocorre quando expressões profundamente aninhadas ou estruturas de consulta complexas excedem os limites da pilha de chamadas. Não é causada pela contagem de caracteres da regra.

As causas comuns incluem longas cadeias inline de comparações AND ou OR, condições de mesclagem OR de várias ramificações em vários eventos e expressões if() profundamente aninhadas.

  • Substitua as longas cadeias inline de OR ou AND, como endereços IP, domínios, hashes, intervalos CIDR ou expressões regulares codificados, por tabelas de dados. As tabelas de dados não aumentam a profundidade de aninhamento de expressões.
  • Simplifique as condições de mesclagem OR entre eventos em regras de vários eventos, por exemplo, usando strings.coalesce() ou separando caminhos de mesclagem distintos.
  • Substitua as cadeias if() profundamente aninhadas na seção outcome por uma pesquisa de tabela de dados.
  • Divida a lógica de detecção não relacionada em regras separadas ou regras de detecção compostas.
Accessing a new field that did not exist for this time range A regra faz referência a um campo adicionado recentemente ao esquema, mas está sendo executada em um período em que esse campo não existia.

Ajuste o período para começar depois que o campo estiver presente.

Modifique a regra para lidar com casos em que o campo é nulo ou está ausente.

Invalid subnet CIDR Algumas funções encontraram um intervalo de roteamento entre domínios sem classe (CIDR) que não pode ser analisado Verifique o formato dos intervalos CIDR na regra.
Invalid IP address Algumas funções encontraram um endereço IP malformado. Verifique se o valor do campo contém um formato de endereço IP válido
Map access for reading label does not support duplicate map keys Algumas funções tentaram acessar elementos de uma estrutura semelhante a um mapa (por exemplo, campos adicionais) em que há chaves duplicadas (não permitidas na operação).

Investigue a fonte de dados em busca de chaves duplicadas.

Adapte a lógica da regra para lidar com essa característica de dados.

Invalid regular expression A expressão regular usada em funções como re.regex() está incorreta.

Corrija a sintaxe da expressão regular.

Invalid re.replace() Uso incorreto de re.regex(), geralmente devido a uma incompatibilidade entre subexpressões entre parênteses e referências na string de substituição. Verifique se o esquema de substituição em re.regex() corresponde às subexpressões entre parênteses na expressão regular.
Integer overflow in sum() aggregation A soma dos valores excede o limite máximo para números inteiros padrão. Converta o campo em um tipo de ponto flutuante antes de somar (por exemplo, use sum(0.0 + $e.field)).
Cannot complete [arithmetic/mod] operation between unsigned and signed integer A regra tenta realizar operações aritméticas (+, -, *) ou de módulo (%) entre diferentes tipos de números inteiros.

Use cast.as_int() ou cast.as_uint() para converter um operando para que ele corresponda ao outro. A conversão explícita é necessária para o operador de módulo (%), que aceita apenas números inteiros. Para operações +, - ou *, também é possível forçar a constante de número inteiro a se comportar como um ponto flutuante usando um literal de ponto flutuante, como 2.0 ou 100.0, ou coerção de divisão, como (2/1), em expressões sem outros operadores / na mesma linha.

Essa restrição de digitação ocorre quando uma expressão combina literais de números inteiros com sinal (INT64) com campos do Modelo de Dados Unificado (UDM) de números inteiros sem sinal (UINT64), como network.received_bytes, network.sent_bytes e principal.file.size. A restrição se aplica às seções events e outcome, incluindo as agregações sum() ou max(). Uma regra com aritmética de números inteiros com e sem sinal pode ser salva sem um erro de sintaxe e falhar apenas no ambiente de execução ou quando você testar a regra. Para mais informações, consulte Aritmética com campos de evento não assinados.

Limites de recursos e erros de desempenho

Esses erros indicam que a consulta é muito pesada para o sistema processar.

Mensagem de erro Causa subjacente Resolução
Request was throttled, please try again later A regra requer mais memória ou poder de processamento do que o alocado (geralmente devido a mesclagens complexas, grandes agregações ou filtragem insuficiente). Adicione filtros mais específicos à seção de eventos.
Not enough memory for aggregation O aggregate_memory_limit foi excedido. Otimize as agregações reduzindo o número de chaves na seção "match".
Spilled bytes exceed limit A consulta está tentando processar muitos eventos. Otimize a consulta adicionando filtros, como por metadata.event_type.
Your query resource usage is exceeding its allocation A consulta foi cancelada pelo gerenciador de recursos porque usou muitos recursos. Otimize a consulta adicionando filtros, como por metadata.event_type.

Acesso a dados e erros do sistema

Esses erros geralmente são temporários ou estão relacionados ao armazenamento de dados de back-end.

Mensagem de erro Causa subjacente Resolução
Error reading files Problemas temporários ao acessar os dados. Tente de novo mais tarde. Se o erro persistir, entre em contato com a equipe de suporte.
Error reading database Problemas temporários ao acessar os dados. Tente de novo mais tarde. Se o erro persistir, entre em contato com a equipe de suporte.
Internal error Um problema temporário no sistema. Tente de novo mais tarde. Se o erro persistir, entre em contato com a equipe de suporte.
Unknown error Uma mensagem de erro padrão quando um código do erro interno específico não é definido. Tente de novo mais tarde. Se o erro persistir, entre em contato com a equipe de suporte.
Request was throttled, please try again later O sistema está sobrecarregado. Tente de novo mais tarde.

Erros de tempo de execução desconhecidos

Você pode encontrar erros de tempo de execução desconhecidos que não têm uma descrição. Se isso acontecer, entre em contato com o suporte do Google SecOps.

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