Extensões do analisador

Compatível com:

Este documento explica como criar extensões de análise para extrair campos de dados de registo não processados e mapeá-los para campos UDM (modelo de dados unificado) de destino na plataforma Google Security Operations.

O documento descreve o processo de criação de extensões do analisador:

Crie extensões de análise

As extensões de análise sintática oferecem uma forma flexível de expandir as capacidades dos analisadores sintáticos predefinidos (e personalizados) existentes. As extensões de análise sintática oferecem uma forma flexível de ampliar as capacidades dos analisadores sintáticos predefinidos (ou personalizados) existentes sem os substituir. As extensões permitem-lhe personalizar o pipeline de análise adicionando uma nova lógica de análise, extraindo e transformando campos, e atualizando ou removendo mapeamentos de campos da UDM.

Uma extensão de análise não é o mesmo que um analisador personalizado. Pode criar um analisador personalizado para um tipo de registo que não tenha um analisador predefinido ou para recusar atualizações do analisador.

Processo de normalização e extração do analisador

O Google SecOps recebe dados de registo originais como registos não processados. Os analisadores predefinidos (e personalizados) extraem e normalizam os campos de registo principais em campos UDM estruturados nos registos UDM. Isto representa apenas um subconjunto dos dados de registo não processados originais. Pode definir extensões do analisador para extrair valores de registo não processados pelos analisadores predefinidos. Depois de ativadas, as extensões de análise sintática passam a fazer parte do processo de extração e normalização de dados do Google SecOps.

Fluxo de trabalho de carregamento e normalização

Defina novas extensões de análise

Os analisadores predefinidos contêm conjuntos predefinidos de instruções de mapeamento que especificam como extrair, transformar e normalizar os valores de segurança principais. Pode criar novas extensões de análise ao definir instruções de mapeamento através da abordagem sem código (Mapear campos de dados) ou da abordagem de fragmento do código:

  • Abordagem sem código

    A abordagem sem código é mais adequada para extrações simples de registos não processados no formato JSON, XML ou CSV nativo. Permite-lhe especificar campos de origem de registos não processados e mapear os campos UDM de destino correspondentes.

    Por exemplo, para extrair dados de registo JSON com até 10 campos, usando comparações de igualdade simples.

  • Abordagem de fragmento do código

    A abordagem do fragmento de código permite-lhe definir instruções para extrair e transformar valores do registo não processado e atribuí-los a campos da UDM. Os fragmentos de código usam a mesma sintaxe semelhante ao Logstash que o analisador predefinido (ou personalizado).

    Esta abordagem aplica-se a todos os formatos de registo suportados. É mais adequado para os seguintes cenários:

    • Extrações de dados complexas ou lógica complexa.
    • Dados não estruturados que requerem analisadores baseados no Grok.
    • Formatos não JSON, como CSV e XML.

    Os fragmentos de código usam funções para extrair dados específicos dos dados de registo não processados. Por exemplo, Grok, JSON, KV e XML.

    Na maioria dos casos, é melhor usar a abordagem de mapeamento de dados que foi usada no analisador predefinido (ou personalizado).

Unir valores recém-extraídos em campos da UDM

Uma vez ativadas, as extensões do analisador sintático unem os valores recém-extraídos em campos UDM designados no registo UDM correspondente de acordo com os princípios de união predefinidos. Por exemplo:

  • Substituir valores existentes: os valores extraídos substituem os valores existentes nos campos da UDM de destino.

    A única exceção são os campos repetidos, em que pode configurar a extensão do analisador para anexar novos valores ao escrever dados num campo repetido no registo do UDM.

  • A extensão do analisador tem precedência: as instruções de mapeamento de dados numa extensão do analisador têm precedência sobre as do analisador predefinido (ou personalizado) para esse tipo de registo. Se existir um conflito nas instruções de mapeamento, a extensão do analisador substitui o valor definido por predefinição.

    Por exemplo, se o analisador predefinido mapear um campo de registo não processado para o campo UDM event.metadata.description e a extensão do analisador mapear um campo de registo não processado diferente para esse mesmo campo UDM, a extensão do analisador substitui o valor definido pelo analisador predefinido.

Limitações

  • Uma extensão de análise por tipo de registo: só pode criar uma extensão de análise por tipo de registo.
  • Apenas uma abordagem de instruções de mapeamento de dados: pode criar uma extensão de analisador sintático com a abordagem sem código ou a abordagem de fragmento de código, mas não ambas as abordagens em conjunto.
  • Registar exemplos para validação: são necessários exemplos de registos dos últimos 30 dias para validar uma extensão do analisador UDM. Para ver detalhes, consulte o artigo Certifique-se de que existe um analisador ativo para o tipo de registo.
  • Erros do analisador base: os erros do analisador base não são identificáveis nem corrigíveis nas extensões do analisador.
  • Campos repetidos em fragmentos de código: tenha cuidado ao substituir objetos repetidos inteiros em fragmentos de código para evitar a perda de dados não intencional. Para ver detalhes, consulte Mais acerca do seletor de campos repetidos.
  • Eventos desambiguados: as extensões do analisador não conseguem processar registos com vários eventos únicos num único registo, por exemplo, uma matriz do Google Drive.
  • XML e sem código: o modo sem código não é suportado para XML. Em alternativa, use o método de fragmento de código.

  • Sem dados retroativos: não é possível analisar dados de registo não processados retroativamente.

  • Palavras-chave reservadas com a abordagem sem código: se os registos contiverem alguma das seguintes palavras-chave reservadas, use a abordagem de fragmento do código em vez da abordagem sem código:

    • collectionTimestamp
    • createTimestamp
    • enableCbnForLoop
    • event
    • filename
    • message
    • namespace
    • output
    • onErrorCount
    • timestamp
    • timezone
  • Remova as associações existentes: pode remover as associações de campos da UDM existentes apenas através da abordagem do fragmento de código.

  • Remova mapeamentos para campos de IP repetidos: não pode remover mapeamentos de campos de UDM para campos de IP repetidos.

Conceitos do analisador

Os seguintes documentos explicam conceitos importantes do analisador:

Pré-requisitos

Pré-requisitos para a criação de extensões de análise:

  • Tem de existir um analisador predefinido (ou personalizado) ativo para o tipo de registo.
  • O Google SecOps tem de conseguir carregar e normalizar os registos não processados através de um analisador predefinido (ou personalizado).
  • Certifique-se de que o analisador predefinido (ou personalizado) ativo para o tipo de registo de destino ingeriu dados de registo não processados nos últimos 30 dias. Estes dados devem conter uma amostra dos campos que pretende extrair ou usar para filtrar os registos do histórico. É usado para validar as novas instruções de mapeamento de dados.

Começar

Antes de criar uma extensão de análise, faça o seguinte:

  1. Valide os pré-requisitos:

    Certifique-se de que existe um analisador ativo para o tipo de registo. Se ainda não tiver um analisador, crie um analisador personalizado.

  2. Identifique os campos a extrair dos registos não processados:

    Identifique os campos que quer extrair dos registos não processados.

  3. Selecione os campos da UDM adequados:

    Selecione os campos UDM correspondentes adequados para mapear os campos de registo não processados extraídos.

  4. Escolha uma abordagem de definição de extensão do analisador:

    Escolha uma das duas abordagens de extensão (abordagens de mapeamento de dados) para criar a extensão do analisador.

Valide os pré-requisitos

Certifique-se de que existe um analisador ativo para o tipo de registo que pretende expandir, conforme descrito nas secções seguintes:

Certifique-se de que existe um analisador ativo para o tipo de registo

Certifique-se de que existe um analisador predefinido (ou personalizado) ativo para o tipo de registo que quer expandir.

Pesquise o seu tipo de registo nestas listas:

Certifique-se de que existe um analisador personalizado para o tipo de registo

Para garantir que existe um analisador personalizado para um tipo de registo:

  1. Na barra de navegação, selecione Definições do SIEM > Analisadores.
  2. Pesquise na tabela Parsers o tipo de registo que quer expandir.

Certifique-se de que o analisador está ativo para o tipo de registo

Para verificar se um analisador está ativo para um tipo de registo, siga estes passos:

  1. Na barra de navegação, selecione Definições do SIEM > Analisadores.
  2. Pesquise na tabela Parsers o tipo de registo que quer expandir.

    Se o analisador do tipo de registo não estiver ativo, ative-o:

Identifique os campos a extrair dos registos não processados

Analise o registo não processado do qual quer extrair dados para identificar os campos não extraídos pelo analisador predefinido (ou personalizado). Preste atenção à forma como o analisador predefinido (ou personalizado) extrai os campos de registo não processados e os mapeia para os respetivos campos da UDM.

Para identificar os campos específicos que quer extrair dos registos não processados, pode usar as ferramentas de pesquisa para identificar os campos:

Para ver detalhes sobre a pesquisa nos registos não processados, consulte:

Selecione os campos de UDM adequados

Agora que identificou os campos de destino específicos a extrair, pode fazê-los corresponder aos campos de UDM de destino correspondentes. Estabelecer um mapeamento claro entre os campos de origem dos registos não processados e os respetivos campos UDM de destino. Pode mapear dados para qualquer campo do UDM que suporte os tipos de dados padrão ou os campos repetidos.

Escolha o campo UDM correto

Os seguintes recursos podem ajudar a simplificar o processo:

Familiarize-se com os principais conceitos do UDM

  • Objetos lógicos: evento e entidade

    O esquema de UDM descreve todos os atributos disponíveis que armazenam dados. Cada registo da UDM descreve um evento ou uma entidade. Os dados são armazenados em campos diferentes consoante o registo descreva um evento ou uma entidade.

    • Um objeto UDM Event armazena dados sobre a ação que ocorreu no ambiente. O registo de eventos original descreve a ação tal como foi registada pelo dispositivo, como uma firewall ou um proxy Web.
    • Os objetos UDM Entity armazenam dados sobre os participantes ou as entidades envolvidas no evento UDM, como recursos, utilizadores ou recursos no seu ambiente.
  • Estrutura de um evento da UDM

  • Estrutura de uma entidade UDM

  • Substantivos da UDM: um substantivo representa um participante ou uma entidade num evento da UDM. Um substantivo pode ser, por exemplo, o dispositivo ou o utilizador que realiza a atividade descrita no evento. Um substantivo também pode ser o dispositivo ou o utilizador que é o alvo da atividade descrita no evento.

    Substantivo UDM Descrição
    principal A entidade responsável por iniciar a ação descrita no evento.
    target A entidade que é o destinatário ou o objeto da ação. Numa ligação de firewall, o computador que recebe a ligação é o destino.
    src Uma entidade de origem sobre a qual o principal atuou. Por exemplo, se um utilizador copiar um ficheiro de uma máquina para outra, o ficheiro e a máquina de origem são representados como o src.
    intermediary Qualquer entidade que atue como intermediário no evento, como um servidor proxy. Podem influenciar a ação, como bloquear ou alterar um pedido.
    observer Uma entidade que monitoriza e cria relatórios sobre o evento, mas não interage diretamente com o tráfego. Alguns exemplos incluem sistemas de deteção de intrusões de rede ou sistemas de informações de segurança e gestão de eventos.
    about Quaisquer outras entidades envolvidas no evento que não se enquadrem nas categorias anteriores. Por exemplo, anexos de email ou DLLs carregadas durante o lançamento de um processo.

    Na prática, os objetos Noun principais e de destino são os mais usados. Também é importante ter em atenção que as descrições anteriores constituem a utilização recomendada de substantivos. A utilização real pode variar com base na implementação de um analisador base predefinido ou personalizado.

Compreenda o mapeamento de dados usado pelo analisador existente

Recomendamos que compreenda o mapeamento de dados existente usado pelo analisador predefinido (ou personalizado) entre os campos de origem do registo não processado e os respetivos campos UDM de destino.

Para ver o mapeamento de dados entre os campos de origem de registos não processados e os campos da UDM de destino usados no analisador predefinido (ou personalizado) existente:

  1. Na barra de navegação, selecione Definições do SIEM > Analisadores.
  2. Pesquise na tabela Parsers o tipo de registo que quer expandir.
  3. Navegue até essa linha e, de seguida, clique em Menu > Ver.

    O separador Código do analisador apresenta o mapeamento de dados entre os campos de origem do registo não processado e os campos UDM de destino usados no analisador predefinido (ou personalizado) existente.

Use a ferramenta de pesquisa de UDM

Use a ferramenta de pesquisa de UDM para ajudar a identificar campos de UDM que correspondam aos campos de origem de registos não processados.

O Google SecOps fornece a ferramenta de pesquisa UDM para ajudar a encontrar rapidamente campos UDM de destino. Para aceder à ferramenta de pesquisa de UDM, aceda a Investigação > Pesquisa de SIEM.

Consulte estes tópicos para ver detalhes sobre como usar a ferramenta de pesquisa UDM:

Exemplo da ferramenta de procura de UDM

Por exemplo, se tiver um campo de origem no registo não processado denominado "packets", use a ferramenta de pesquisa UDM para encontrar potenciais campos UDM de destino com "packets" no respetivo nome:

  1. Aceda a Investigação > Pesquisa de SIEM.

  2. Na página SIEM Search, introduza "packets" no campo Procurar campos UDM por valor e, de seguida, clique em UDM Lookup.

    É apresentada a caixa de diálogo Pesquisa de UDM. A ferramenta de pesquisa faz a correspondência dos campos UDM pelo nome do campo ou pelo valor do campo:

    • Pesquisa por nome do campo: corresponde à string de texto que introduz aos nomes dos campos que contêm esse texto.
    • Procura por valor do campo: faz corresponder o valor que introduz aos campos que contêm esse valor nos respetivos dados de registo armazenados.
  3. Na caixa de diálogo UDM Lookup, selecione UDM Fields.

    A função de pesquisa apresenta uma lista de potenciais campos de UDM que contêm o texto "packets" nos respetivos nomes de campos de UDM.

  4. Clique em cada linha individualmente para ver a descrição de cada campo de UDM.

Considerações importantes sobre o UDM para evitar erros

  • Campos com aspeto semelhante: a estrutura hierárquica da UDM pode originar campos com nomes semelhantes. Consulte os analisadores predefinidos para obter orientações. Para ver detalhes, consulte o artigo: Compreenda o mapeamento de dados usado pelo analisador existente.
  • Mapeamento de campos arbitrários: use o objeto additional para dados que não são mapeados diretamente para um campo do UDM. Para obter detalhes, consulte o artigo Mapeamento de campos arbitrários para o UDM.
  • Campos repetidos: tenha cuidado ao trabalhar com campos repetidos em fragmentos de código. A substituição de um objeto completo pode substituir os dados originais. A abordagem sem código oferece mais controlo sobre os campos repetidos. Para ver detalhes, consulte Mais acerca do seletor de campos repetidos.
  • Campos da UDM obrigatórios para tipos de eventos da UDM: quando atribui um campo metadata.event_type da UDM a um registo da UDM, cada event_type requer um conjunto diferente de campos relacionados presentes no registo da UDM. Para ver detalhes, consulte Mais informações sobre a atribuição de campos da UDMmetadata.event_type.
  • Problemas do analisador básico: as extensões do analisador não podem corrigir erros do analisador básico. O analisador base é o analisador predefinido (ou personalizado) que criou o registo UDM. Considere opções como melhorar a extensão do analisador, modificar o analisador base ou pré-filtrar os registos.
Mapeamento de campos arbitrário para o UDM

Quando não consegue encontrar um campo UDM padrão adequado para armazenar os seus dados, use o objeto additional para armazenar os dados como um par de chave-valor personalizado. Isto permite-lhe armazenar informações valiosas no registo UDM, mesmo que não tenha um campo UDM correspondente.

Escolha uma abordagem de definição de extensão de análise

Antes de escolher uma abordagem de definição de extensão do analisador, tem de ter trabalhado nestas secções:

Os passos seguintes consistem em abrir a página Extensões do analisador e selecionar a abordagem de extensão a usar para definir a extensão do analisador:

Abra a página de extensões do analisador

A página Extensões de análise permite-lhe definir a nova extensão de análise.

Pode abrir a página Extensões do analisador das seguintes formas, a partir do menu Definições, de uma pesquisa de registos não processados ou de uma pesquisa de registos não processados antiga:

Abra a partir do menu Definições

Para abrir a página Extensões do analisador a partir do menu Definições:

  1. Na barra de navegação, selecione Definições do SIEM > Analisadores.

    A tabela Analizadores apresenta uma lista de analisadores predefinidos por tipo de registo.

  2. Encontre o tipo de registo que quer estender, clique no Menu > Criar extensão.

    É apresentada a página Extensões do analisador.

Para abrir a página Extensões do analisador a partir de uma Pesquisa de registos não processados:

  1. Aceda a Investigação > Pesquisa de SIEM.
  2. No campo de pesquisa, adicione o prefixo raw = ao argumento de pesquisa e coloque o termo de pesquisa entre aspas. Por exemplo, raw = "example.com".
  3. Clique em Executar pesquisa. Os resultados são apresentados no painel Registos não processados.
  4. Clique num registo (linha) no painel Registos não processados. É apresentado o painel Vista de eventos.
  5. Clique no separador Registo não processado no painel Vista de eventos. O registo não processado é apresentado.
  6. Clique em Gerir analisador > Criar extensão > Seguinte.

    É apresentada a página Extensões do analisador.

Para abrir a página Extensões do analisador a partir de uma pesquisa de registos brutos antiga:

  1. Use a pesquisa de registos não processados antiga para pesquisar registos semelhantes aos que vão ser analisados.
  2. Selecione um evento no painel Eventos > Linha cronológica.
  3. Expanda o painel Dados de eventos.
  4. Clique em Gerir analisador > Criar extensão > Seguinte.

    É apresentada a página Extensões do analisador.

Página de extensões do analisador

A página apresenta os painéis Registo não processado e Definição da extensão:

  • Painel Registo não processado:

    São apresentados dados de registo não processados de amostra para o tipo de registo selecionado. Se abriu a página a partir da Pesquisa de registos não processados, os dados de amostra são o resultado da sua pesquisa. Pode formatar o exemplo através do menu Ver como (RAW, JSON, CSV, XML, etc.) e da caixa de verificação Quebrar texto.

    1. Verifique se a amostra de dados de registo não processados apresentada é representativa dos registos que a extensão do analisador vai processar.

    2. Clique em Pré-visualizar saída do UDM para ver a saída do UDM para os dados de registo não processados de amostra.

  • Painel Definição da extensão:

    Isto permite-lhe definir uma extensão do analisador através de uma de duas abordagens de instruções de mapeamento: mapear campos de dados (sem código) ou escrever fragmento de código. Não pode usar ambas as abordagens na mesma extensão do analisador.

    Consoante a abordagem que escolher, pode especificar os campos de dados de registo de origem a extrair dos registos não processados recebidos e mapeá-los para os campos da UDM correspondentes, ou pode escrever um fragmento do código para realizar estas tarefas e muito mais.

Selecione a abordagem de extensão

Na página Extensões do analisador, no painel Definição da extensão, no campo Método de extensão, selecione uma das seguintes abordagens para criar a extensão do analisador:

  • Mapear campos de dados (abordagem sem código):

    Esta abordagem permite-lhe especificar os campos no registo não processado e mapeá-los para os campos da UDM de destino.

    Esta abordagem funciona com os seguintes formatos de registos não processados:

    • JSON nativo, XML nativo ou CSV.
    • Cabeçalho Syslog mais JSON nativo, XML nativo ou CSV. Pode criar instruções de mapeamento do tipo de campo de dados para registos não processados nestes formatos: JSON, XML, CSV, SYSLOG + JSON, SYSLOG + XML e SYSLOG + CSV.

    Consulte os passos seguintes, Crie instruções sem código (campos de dados do mapa).

  • Abordagem Escrever fragmento do código:

    Esta abordagem permite-lhe usar uma sintaxe semelhante à do Logstash para especificar instruções para extrair e transformar valores do registo não processado e atribuí-los a campos UDM no registo UDM.

    • Os fragmentos do código usam a mesma sintaxe e secções que os analisadores predefinidos (ou personalizados). Para mais informações, consulte a sintaxe do analisador.

    • Esta abordagem funciona com todos os formatos de dados suportados para esse tipo de registo.

    Consulte os passos seguintes, Instruções para criar o fragmento do código.

Crie instruções sem código (mapear campos de dados)

A abordagem sem código (também denominada método Mapear campos de dados) permite-lhe especificar os caminhos dos campos de registo não processados e mapeá-los para os campos UDM de destino correspondentes.

Antes de criar uma extensão de análise com a abordagem sem código, tem de ter trabalhado nestas secções:

Os passos seguintes para definir a extensão do analisador são:

  1. Defina o seletor de campos repetidos
  2. Defina uma instrução de mapeamento de dados para cada campo
  3. Envie e ative a extensão do analisador

Defina o seletor de campos repetidos

No painel Definição da extensão, no campo Campos repetidos, defina como a extensão do analisador deve guardar um valor em campos repetidos (campos que suportam uma matriz de valores, por exemplo, principal.ip):

  • Anexar valores: o valor recém-extraído é anexado ao conjunto de valores existente armazenado no campo da matriz da UDM.
  • Substituir valores: o valor recém-extraído substitui o conjunto de valores existente no campo da matriz de UDM, armazenado anteriormente pelo analisador predefinido.

As definições no seletor Campos repetidos não afetam os campos não repetidos.

Para mais detalhes, consulte o artigo Mais acerca do seletor de campos repetidos.

Defina uma instrução de mapeamento de dados para cada campo

Defina uma instrução de mapeamento de dados para cada campo que quer extrair do registo não processado. A instrução deve especificar o caminho do campo de origem no registo não processado e mapeá-lo para o campo UDM de destino.

  1. Se a amostra de registo não processado apresentada no painel Registo não processado contiver um cabeçalho Syslog, os campos Syslog e Destino são apresentados. (Alguns formatos de registo não contêm um cabeçalho Syslog, por exemplo, JSON nativo, XML nativo ou CSV.)

    O Google SecOps precisa dos campos Syslog e Target para pré-processar o cabeçalho do Syslog e extrair a parte estruturada do registo.

    1. Defina estes campos:

      • Syslog: este é um padrão definido pelo utilizador que pré-processa e separa um cabeçalho Syslog da parte estruturada de um registo não processado.

        Especifique o padrão de extração, usando Grok e expressões regulares, que identifica o cabeçalho do Syslog e a mensagem de registo não processada. Para ver detalhes, consulte o artigo Defina os campos do extrator Syslog.

      • Alvo: nome da variável no campo Syslog que armazena a parte estruturada do registo.

        Especifique o nome da variável no padrão de extração que armazena a parte estruturada do registo.

      Este é um exemplo de um padrão de extração e um nome de variável para os campos Syslog e Target, respetivamente.

      Campos do extrator Syslog

    2. Depois de introduzir valores nos campos Syslog e Destino, clique no botão Validar.

      O processo de validação verifica a existência de erros de sintaxe e de análise e, em seguida, devolve uma das seguintes opções:

      • Êxito: os campos de mapeamento de dados são apresentados. Defina o resto da extensão do analisador.
      • Falha: é apresentada uma mensagem de erro. Corrija a condição de erro antes de continuar.
  2. Opcionalmente, defina uma instrução de pré-condição.

    Uma instrução de pré-condição identifica um subconjunto dos registos não processados que a extensão do analisador processa fazendo corresponder um valor estático a um campo no registo não processado. Se um registo não processado recebido cumprir os critérios de pré-condição, a extensão do analisador aplica a instrução de mapeamento. Se os valores não corresponderem, a extensão do analisador não aplica a instrução de mapeamento.

    Preencha os seguintes campos:

    • Campo de pré-condição: identificador do campo no registo não processado que contém o valor a comparar. Introduza o caminho completo para o campo se o formato de dados do registo for JSON ou XML, ou a posição da coluna se o formato de dados for CSV.
    • Operador de pré-condição: selecione EQUALS ou NOT EQUALS.
    • Valor da pré-condição: o valor estático que vai ser comparado com o Campo de pré-condição no registo não processado.

    Para ver outro exemplo de uma instrução de pré-condição, consulte o artigo Sem código – Extraia campos com um valor de pré-condição.

  3. Mapeie o campo de dados de registo não processados para o campo UDM de destino:

    • Campo de dados não processados: introduza o caminho completo para o campo se o formato de dados de registo for JSON (por exemplo: jsonPayload.connection.dest_ip) ou XML (por exemplo: /Event/Reason-Code) ou a posição da coluna se o formato de dados for CSV (nota: as posições de índice começam em 1).

    • Campo de destino: introduza o nome do campo UDM totalmente qualificado onde o valor vai ser armazenado, por exemplo udm.metadata.collected_timestamp.seconds.

  4. Para continuar a adicionar mais campos, clique em Adicionar e introduza todos os detalhes das instruções de mapeamento para o campo seguinte.

Para ver outro exemplo de mapeamento dos campos, consulte o artigo Sem código: extraia campos.

Envie e ative a extensão do analisador

Depois de definir as instruções de mapeamento de dados para todos os campos que pretende extrair do registo não processado, envie e ative a extensão do analisador.

Clique em Enviar para guardar e validar a instrução de mapeamento.

O Google SecOps valida as instruções de mapeamento:

  • Se o processo de validação for bem-sucedido, o estado muda para Publicado e as instruções de mapeamento começam a processar os dados de registo recebidos.
  • Se o processo de validação falhar, o estado muda para Falhou e é apresentado um erro no campo Registo não processado.

    Este é um exemplo de um erro de validação:

      ERROR: generic::unknown: pipeline.ParseLogEntry failed: LOG_PARSING_CBN_ERROR:
      "generic::invalid_argument: pipeline failed: filter mutate (7) failed: copy failure:
      copy source field \"jsonPayload.dest_instance.region\" must not be empty
      (try using replace to provide the value before calling copy)
    
      "LOG: {"insertId":"14suym9fw9f63r","jsonPayload":{"bytes_sent":"492",
      "connection":{"dest_ip":"10.12.12.33","dest_port":32768,"protocol":6,
      "src_ip":"10.142.0.238","src_port":22},"end_time":"2023-02-13T22:38:30.490546349Z",
      "packets_sent":"15","reporter":"SRC","src_instance":{"project_id":"example-labs",
      "region":"us-east1","vm_name":"example-us-east1","zone":"us-east1-b"},
      "src_vpc":{"project_id":"example-labs","subnetwork_name":"default",
      "vpc_name":"default"},"start_time":"2023-02-13T22:38:29.024032655Z"},
      "logName":"projects/example-labs/logs/compute.googleapis.com%2Fvpc_flows",
      "receiveTimestamp":"2023-02-13T22:38:37.443315735Z","resource":{"labels":
      {"location":"us-east1-b","project_id":"example-labs",
        "subnetwork_id":"00000000000000000000","subnetwork_name":"default"},
        "type":"gce_subnetwork"},"timestamp":"2023-02-13T22:38:37.443315735Z"}
    

    Estados do ciclo de vida de uma extensão de análise

    As extensões do analisador têm os seguintes estados do ciclo de vida:

  • DRAFT: extensão do analisador criada recentemente que ainda não foi enviada.

  • VALIDATING: o Google SecOps está a validar as instruções de mapeamento em relação aos registos não processados existentes para garantir que os campos são analisados sem erros.

  • LIVE: a extensão do analisador passou na validação e está agora em produção. Extrai e transforma dados de registos não processados recebidos em registos da UDM.

  • FAILED: a extensão do analisador falhou na validação.

Mais acerca do seletor de campos repetidos

Alguns campos da UDM armazenam uma matriz de valores, como o campo principal.ip. O seletor de campos repetidos permite-lhe controlar a forma como a extensão do analisador vai armazenar os dados recém-extraídos num campo repetido:

  • Anexar valores:

    A extensão do analisador vai anexar o valor recém-extraído à matriz de valores existentes no campo UDM.

  • Substituir valores:

    A extensão do analisador substitui a matriz de valores existentes no campo UDM pelo valor recém-extraído.

Uma extensão de análise pode mapear dados para um campo repetido apenas quando o campo repetido está no nível mais baixo da hierarquia. Por exemplo:

  • O mapeamento de valores para udm.principal.ip é suportado porque o campo ip repetido está no nível mais baixo da hierarquia e principal não é um campo repetido.
  • O mapeamento de valores para udm.intermediary.hostname não é suportado porque intermediary é um campo repetido e não está no nível mais baixo da hierarquia.

A tabela seguinte fornece exemplos de como a configuração do seletor de campos repetidos afeta o registo de UDM gerado.

Seleção de campos repetidos Exemplo de registo Configuração da extensão do analisador Resultado gerado
Anexe valores {"protoPayload":{"@type":"type.AuditLog","authenticationInfo":{"principalEmail":"admin@cmmar.co"},"requestMetadata":{"callerIp":"1.1.1.1, 2.2.2.2"}}} Campo de pré-condição: protoPayload.requestMetadata.callerIp
Valor de pré-condição: " "
Operador de pré-condição: NOT_EQUALS
Campo de dados não processados: protoPayload.requestMetadata.callerIp
Campo de destino: event.idm.read_only_udm.principal.ip
metadata:{event_timestamp:{}.....}principal:{Ip:"1.1.1.1, 2.2.2.2"} } }
Anexe valores {"protoPayload":{"@type":"type.AuditLog","authenticationInfo":{"principalEmail":"admin@cmmar.co"},"requestMetadata":{"callerIp":"2.2.2.2, 3.3.3.3", "name":"Akamai Ltd"}}} Condição prévia 1:
Campo de condição prévia:protoPayload.requestMetadata.callerIp
Valor de condição prévia: " "
Operador de condição prévia: NOT_EQUALS
Campo de dados não processados: protoPayload.requestMetadata.callerIp
Campo de destino: event.idm.read_only_udm.principal.ip

Condição prévia 2:
Campo de dados não processados: protoPayload.requestMetadata.name
Campo de destino: event.idm.read_only_udm.metadata.product_name

Eventos gerados pelo analisador pré-criado antes de aplicar a extensão.
metadata:{event_timestamp:{} ... principal:{ip:"1.1.1.1"}}}

Resultado após a aplicação da extensão.
timestamp:{} idm:{read_only_udm:{metadata:{event_timestamp:{} .... product_name: "Akamai Ltd"}principal:{ip:"1.1.1.1, 2.2.2.2, 3.3.3.3"}}}

Substituir valores {"protoPayload":{"@type":"type..AuditLog","authenticationInfo":{"principalEmail":"admin@cmmar.co"},"requestMetadata":{"callerIp":"2.2.2.2"}}} Campo de pré-condição: protoPayload.authenticationInfo.principalEmail
Valor de pré-condição: " "
Operador de pré-condição: NOT_EQUALS
Campo de dados não processados: protoPayload.authenticationInfo.principalEmail
Campo de destino: event.idm.read_only_udm.principal.ip
Eventos da UDM gerados pelo analisador pré-criado antes da aplicação da extensão.
timestamp:{} idm:{read_only_udm:{metadata:{event_timestamp:{} ... principal:{ip:"1.1.1.1"}}}

Saída da UDM após a aplicação da extensão timestamp:{} idm:{read_only_udm:{metadata:{event_timestamp:{} ....} principal:{ip:"2.2.2.2"}}}

Mais acerca dos campos do extrator de Syslog

Os campos do extrator Syslog permitem-lhe separar o cabeçalho Syslog de um registo estruturado definindo o Grok, a expressão regular e um token com nome no padrão de expressão regular para armazenar o resultado.

Defina os campos do extrator de Syslog

Os valores nos campos Syslog e Target funcionam em conjunto para definir como a extensão do analisador separa o cabeçalho do Syslog da parte estruturada de um registo não processado. No campo Syslog, define uma expressão com uma combinação da sintaxe de expressões regulares e Grok. A expressão inclui um nome de variável que identifica a parte estruturada do registo não processado. No campo Destino, especifica esse nome de variável.

O exemplo seguinte ilustra como estes campos funcionam em conjunto.

Este é um exemplo de um registo não processado:

<13>1 2022-09-14T15:03:04+00:00 fieldname fieldname - - - {"timestamp": "2021-03-14T14:54:40.842152+0000","flow_id": 1885148860701096, "src_ip": "10.11.22.1","src_port": 51972,"dest_ip": "1.2.3.4","dest_port": 55291,"proto": "TCP"}

O registo não processado contém as seguintes secções:

  • Cabeçalho Syslog: <13> 2022-09-14T15:03:04+00:00 fieldname fieldname - - -

  • Evento formatado em JSON: {"timestamp": "2021-03-14T14:54:40.842152+0000","flow_id": 1885148860701096, "src_ip": "10.11.22.1","src_port": 51972,"dest_ip": "1.2.3.4","dest_port": 55291,"proto": "TCP"}

Para separar o cabeçalho do Syslog da parte JSON do registo não processado, use a expressão de exemplo seguinte no campo Syslog: %{TIMESTAMP_ISO8601} %{WORD} %{WORD} ([- ]+)?%{GREEDYDATA:msg}

  • Esta parte da expressão identifica o cabeçalho do Syslog: %{TIMESTAMP\_ISO8601} %{WORD} %{WORD} ([- ]+)?
  • Esta parte da expressão captura o segmento JSON do registo não processado: %{GREEDYDATA:msg}

Este exemplo inclui o nome da variável msg. Escolhe o nome da variável. A extensão do analisador extrai o segmento JSON do registo não processado e atribui-o à variável msg.

No campo Destino, introduza o nome da variável msg. O valor armazenado na variável msg é introduzido nas instruções de mapeamento de campos de dados que cria na extensão do analisador.

Usando o registo não processado de exemplo, o seguinte segmento é introduzido na instrução de mapeamento de dados:

{"timestamp": "2021-03-14T14:54:40.842152+0000","flow_id": 1885148860701096, "src_ip": "10.11.22.1","src_port": 51972,"dest_ip": "1.2.3.4","dest_port": 55291,"proto": "TCP"}

A imagem seguinte mostra os campos Syslog e Target preenchidos:

Campos do extrator Syslog

A tabela seguinte apresenta mais exemplos com registos de amostra, o padrão de extração Syslog, o nome da variável Target e o resultado.

Exemplo de registo não processado Campo Syslog Campo de destino Resultado
<13>1 2022-07-14T15:03:04+00:00 suricata suricata - - - {\"timestamp\": \"2021-03-14T14:54:40.842152+0000\",\"flow_id\": 1885148860701096,\"in_iface\": \"enp94s0\",\"event_type\": \"alert\",\"vlan\": 522,\"src_ip\": \"1.1.2.1\",\"src_port\": 51972,\"dest_ip\": \"1.2.3.4\",\"dest_port\": 55291,\"proto\": \"TCP\"}" %{TIMESTAMP_ISO8601} %{WORD} %{WORD} ([- ]+)?%{GREEDYDATA:msg} msg field_mappings { field: "msg" value: "{\"timestamp\": \"2021-03-14T14:54:40.842152+0000\",\"flow_id\": 1885148860701096,\"in_iface\": \"enp94s0\",\"event_type\": \"alert\",\"vlan\": 522,\"src_ip\": \"1.1.2.1\",\"src_port\": 51972,\"dest_ip\": \"1.2.3.4\",\"dest_port\": 55291,\"proto\": \"TCP\"}" }
<13>1 2022-07-14T15:03:04+00:00 suricata suricata - - - {\"timestamp\": \"2021-03-14T14:54:40.842152+0000\"} - - - {\"timestamp\": \"2021-03-14T14:54:40.842152+0000\",\"flow_id\": 1885148860701096,\"in_iface\": \"enp94s0\",\"event_type\": \"alert\",\"vlan\": 522,\"src_ip\": \"1.1.2.1\",\"src_port\": 51972,\"dest_ip\": \"1.2.3.4\",\"dest_port\": 55291,\"proto\": \"TCP\"} %{TIMESTAMP_ISO8601} %{WORD} %{WORD} ([- ]+)?%{GREEDYDATA:msg1} ([- ]+)?%{GREEDYDATA:msg2} msg2 field_mappings { field: "msg2" value: "{\"timestamp\": \"2021-03-14T14:54:40.842152+0000\",\"flow_id\": 1885148860701096,\"in_iface\": \"enp94s0\",\"event_type\": \"alert\",\"vlan\": 522,\"src_ip\": \"1.1.2.1\",\"src_port\": 51972,\"dest_ip\": \"1.2.3.4\",\"dest_port\": 55291,\"proto\": \"TCP\"}" }
"<13>1 2022-07-14T15:03:04+00:00 suricata suricata - - - {\"timestamp\": \"2021-03-14T14:54:40.842152+0000\"} - - - {\"timestamp\": \"2021-03-14T14:54:40.842152+0000\",\"flow_id\": 1885148860701096,\"in_iface\": \"enp94s0\",\"event_type\": \"alert\",\"vlan\": 522,\"src_ip\": \"1.1.2.1\",\"src_port\": 51972,\"dest_ip\": \"1.2.3.4\",\"dest_port\": 55291,\"proto\": \"TCP\"}" %{TIMESTAMP_ISO8601} %{WORD} %{WORD} ([- ]+)?%{GREEDYDATA:message} ([- ]+)?%{GREEDYDATA:msg2} msg2 Error - message already exists in state and not overwritable.

Mais acerca da atribuição de campos da UDM metadata.event_type

Quando atribui um campo metadata.event_type de UDM a um registo de UDM, este é validado para garantir que os campos relacionados necessários estão presentes no registo de UDM. Cada UDM metadata.event_type requer um conjunto diferente de campos relacionados. Por exemplo, um evento USER_LOGIN sem um user não é útil.

Se um campo relacionado obrigatório estiver em falta, a validação do UDM devolve um erro:

  "error": {
    "code": 400,
    "message": "Request contains an invalid argument.",
    "status": "INVALID_ARGUMENT"
  }

Um analisador grok devolve um erro mais detalhado:

  generic::unknown: 
  invalid event 0: LOG_PARSING_GENERATED_INVALID_EVENT: 
  "generic::invalid_argument: udm validation failed: target field is not set"

Para encontrar os campos obrigatórios de um UDM event_type que quer atribuir, use os seguintes recursos:

  • Documentação do Google SecOps: guia de utilização do UDM – Campos do UDM obrigatórios e opcionais para cada tipo de evento

  • Recursos não oficiais de terceiros: validação de eventos da UDM

    Nos casos em que o guia de utilização do UDM não tem detalhes, este documento complementa a documentação oficial, fornecendo os campos do UDM obrigatórios mínimos necessários para preencher um determinado UDM metadata.event_type.

    Por exemplo, abra o documento e pesquise o tipo de evento GROUP_CREATION.

    Deve ver os seguintes campos UDM mínimos, apresentados como um objeto UDM:

    {
        "metadata": {
            "event_timestamp": "2023-07-03T13:01:10.957803Z",
            "event_type": "GROUP_CREATION"
        },
        "principal": {
            "user": {
                "userid": "pinguino"
            }
        },
        "target": {
            "group": {
                "group_display_name": "foobar_users"
            }
        }
    }
    

Instruções para criar fragmentos do código

A abordagem do fragmento de código permite-lhe usar uma sintaxe semelhante à do Logstash para definir como extrair e transformar valores do registo não processado e atribuí-los a campos do UDM no registo do UDM.

Antes de criar uma extensão de análise com a abordagem do fragmento do código, tem de ter concluído estas secções:

Os passos seguintes para definir a extensão do analisador são:

  1. Para ver sugestões e práticas recomendadas, consulte o artigo Sugestões e práticas recomendadas ao escrever instruções de fragmentos de código.
  2. Crie uma instrução de fragmento do código
  3. Envie uma instrução de fragmento do código

Sugestões e práticas recomendadas ao escrever instruções de fragmentos de código

As instruções do fragmento de código podem falhar devido a problemas como padrões Grok incorretos, falhas nas operações de substituição ou mudança de nome, ou erros de sintaxe. Consulte o seguinte para ver sugestões e práticas recomendadas:

Crie uma instrução de fragmento do código

As instruções do fragmento do código usam a mesma sintaxe e secções que o analisador predefinido (ou personalizado):

  • Secção 1. Extrair dados do registo não processado.
  • Secção 2. Transforme os dados extraídos.
  • Secção 3. Atribua um ou mais valores a um campo de UDM.
  • Secção 4. Associe os campos de eventos da UDM à chave @output.

Para criar uma extensão de análise usando a abordagem de fragmento do código, faça o seguinte:

  1. Na página Extensões do analisador, no painel Fragmento de CBN, introduza um fragmento do código para criar a extensão do analisador.
  2. Clique em Validar para validar as instruções de mapeamento.

Exemplos de instruções de fragmentos do código

O exemplo seguinte ilustra um fragmento do código.

Segue-se um exemplo do registo não processado:

  {
      "insertId": "00000000",
      "jsonPayload": {
          ...section omitted for brevity...
          "packets_sent": "4",
          ...section omitted for brevity...
      },
      "timestamp": "2022-05-03T01:45:00.150614953Z"
  }

Este é um exemplo de um fragmento do código que mapeia o valor em jsonPayload.packets_sent para o campo network.sent_bytes do UDM:

filter {
  mutate {
    replace => {
      "jsonPayload.packets_sent" => ""
    }
  }
  # Section 1. extract data from the raw JSON log
  json {
    source => "message"
    array_function => "split_columns"
    on_error => "_not_json"
  }
  if [_not_json] {
    drop {
      tag => "TAG_UNSUPPORTED"
    }
  } else {
    # Section 2. transform the extracted data
    if [jsonPayload][packets_sent] not in ["", 0] {
      mutate {
        convert => {
          "jsonPayload.packets_sent" => "uinteger"
        }
        on_error => "_exception1"
      }
      # Section 3. assign the value to a UDM field
      mutate {
        Replace => {
          "event.idm.read_only_udm.network.sent_bytes" => "jsonPayload.packets_sent"
        }
        on_error => "_exception2"
      }
      if ![_exception1] and![_exception2] {
        # Section 4. Bind the UDM fields to the @output key
        mutate {
          merge => {
            "@output" => "event"
          }
        }
      }
    }
  }
}

Envie uma instrução de fragmento do código

  1. Clique em Enviar para guardar as instruções de mapeamento.

  2. O Google SecOps valida as instruções de mapeamento.

    • Se o processo de validação for bem-sucedido, o estado muda para Publicado e as instruções de mapeamento começam a processar os dados de registo recebidos.
    • Se o processo de validação falhar, o estado muda para Falhou e é apresentado um erro no campo Registo não processado.

Faça a gestão das extensões de análise existentes

Pode ver, editar, eliminar e controlar o acesso às extensões de análise existentes.

Veja uma extensão de análise existente

  1. Na barra de navegação, selecione Definições do SIEM > Analisadores.
  2. Na lista Analisadores, encontre o analisador (tipo de registo) que quer ver. Os analisadores com uma extensão de analisador são indicados pelo texto EXTENSION junto ao respetivo nome.
  3. Aceda a essa linha e, de seguida, clique no Menu > Ver extensão.

    É apresentado o separador Ver analisador personalizado/pré-criado > Extensão com detalhes sobre a extensão do analisador. O painel de resumo apresenta a extensão do analisador por predefinição.LIVE

Edite uma extensão de análise

  1. Abra o Ver analisador personalizado/pré-criado > Separador Extensão, conforme descrito em Veja uma extensão do analisador existente.

  2. Clique no botão Editar extensão.

    É apresentada a página Extensões de análise.

  3. Edite a extensão do analisador.

    • Para cancelar a edição e rejeitar as alterações, clique em Rejeitar rascunho.

    • Para eliminar a extensão do analisador em qualquer altura, clique em Eliminar extensão com falhas.

    • Quando terminar de editar a extensão de análise, clique em Enviar.

      O processo de validação é executado para validar a nova configuração.

Elimine uma extensão de análise

  1. Abra o Ver analisador personalizado/pré-criado > Separador Extensão, conforme descrito em Veja uma extensão do analisador existente.

  2. Clique no botão Eliminar extensão.

Controle o acesso às extensões de análise

Por predefinição, os utilizadores com a função de administrador podem aceder às extensões do analisador. Pode controlar quem pode ver e gerir extensões de análise. Para mais informações sobre a gestão de utilizadores e grupos, ou a atribuição de funções, consulte o artigo Controlo de acesso baseado em funções para mais informações.

As novas funções no Google SecOps estão resumidas na tabela seguinte.

Funcionalidade Ação Descrição
Analisador Eliminar Elimine extensões de análise.
Analisador Editar Crie e edite extensões de análise.
Analisador Ver Veja extensões de análise.

Remova os mapeamentos de campos UDM através de extensões de análise

Pode usar extensões do analisador para remover um mapeamento de campo de UDM existente.

  1. Clique em Definições de SIEM > Analisadores.
  2. Use um dos seguintes métodos para ver a página Extensão do analisador:
    • Para uma extensão existente, clique em Menu > Estender analisador > Ver extensão.
    • Para novas extensões de análise, clique em Menu > Estender analisador > Criar extensão.
  3. Selecione Escrever fragmento do código como o método de extensão para adicionar um fragmento do código personalizado que remove valores para campos da UDM específicos.

    Para uma extensão existente, no painel Extensão do analisador, clique em Editar e, de seguida, adicione o fragmento do código.

    Consulte Fragmento do código – Remova mapeamentos existentes para ver exemplos de fragmentos.

  4. Siga os passos na instrução Envie um fragmento de código para enviar a extensão.

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