Extensões do analisador
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.
- Pré-requisitos e limitações.
- Identifique os campos de origem nos dados de registo não processados.
- Selecione os campos UDM de destino adequados.
Escolha a abordagem de definição da extensão do analisador adequada:
A definição de uma extensão de análise inclui a conceção da lógica de análise para filtrar dados de registo não processados, transformar os dados e mapeá-los para campos UDM de destino. O Google SecOps oferece duas abordagens para criar extensões de análise:
- Crie extensões de análise com a abordagem sem código (mapear campos de dados).
- Crie extensões de análise com a abordagem de fragmento de código.
Exemplos ilustrativos de criação de extensões de analisador para vários formatos de registos e cenários. Por exemplo, exemplos sem código que usam JSON e fragmentos de código para lógica complexa ou formatos não JSON (CSV, XML, Syslog).
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.
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:
- Vista geral do modelo de dados unificado
- Vista geral da análise sintática de registos
- Referência da sintaxe 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:
-
Certifique-se de que existe um analisador ativo para o tipo de registo. Se ainda não tiver um analisador, crie um analisador personalizado.
Identifique os campos a extrair dos registos não processados:
Identifique os campos que quer extrair dos registos não processados.
Selecione os campos da UDM adequados:
Selecione os campos UDM correspondentes adequados para mapear os campos de registo não processados extraídos.
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:
Tipos de registos suportados com um analisador predefinido.
- Se existir um analisador predefinido para o tipo de registo, certifique-se de que o analisador está ativo.
- Se não existir um analisador predefinido para o tipo de registo, certifique-se de que existe um analisador personalizado para o tipo de registo.
Tipos de registos suportados sem um analisador predefinido.
- Se não existir um analisador predefinido para o tipo de registo, certifique-se de que existe um analisador personalizado para o tipo de registo.
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:
- Na barra de navegação, selecione Definições do SIEM > Analisadores.
Pesquise na tabela Parsers o tipo de registo que quer expandir.
- Se esse tipo de registo ainda não tiver um analisador predefinido ou personalizado, clique em CRIAR ANALISADOR e siga os passos em Crie um analisador personalizado com base nas instruções de mapeamento.
- Se esse tipo de registo já tiver um analisador personalizado, certifique-se de que o analisador está ativo.
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:
- Na barra de navegação, selecione Definições do SIEM > Analisadores.
Pesquise na tabela Parsers o tipo de registo que quer expandir.
Se o analisador do tipo de registo não estiver ativo, ative-o:
- Para ver analisadores predefinidos, consulte o artigo Faça a gestão das atualizações de analisadores pré-criados.
- Para analisadores personalizados, consulte o artigo Gerir atualizações de analisadores personalizados.
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 aceder à ferramenta de pesquisa, aceda a Investigação > SIEM Pesquisa. Escreva raw= antes da consulta de pesquisa. Para obter detalhes, consulte o artigo Realize uma pesquisa de registos não processados.
Para aceder à ferramenta de pesquisa antiga, clique em Aceder à pesquisa antiga na parte superior da página Pesquisa SIEM. Para ver detalhes, consulte o artigo Pesquise registos não processados através da análise de registos não processados.
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 da UDM
- Compreenda o mapeamento de dados usado pelo analisador existente
- Use a ferramenta de pesquisa de UDM para encontrar potenciais campos de UDM que correspondam aos seus campos de origem.
- O guia Campos UDM importantes para o mapeamento de dados do analisador inclui um resumo e uma explicação dos campos mais usados do esquema UDM.
- A lista de campos do modelo de dados unificado contém uma lista de todos os campos do UDM e as respetivas descrições. Os campos repetidos são identificados pela etiqueta "repetido" nas listas.
- Considerações importantes sobre o UDM para evitar erros
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.
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:
- Na barra de navegação, selecione Definições do SIEM > Analisadores.
- Pesquise na tabela Parsers o tipo de registo que quer expandir.
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:
- Encontre um campo UDM
- Introduza uma pesquisa de UDM
- Defina um filtro de tempo na pesquisa
- Exemplos de pesquisas de UDM
- Gere consultas de pesquisa da UDM com o Gemini
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:
Aceda a Investigação > Pesquisa de SIEM.
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.
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.
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, cadaevent_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:
Na barra de navegação, selecione Definições do SIEM > Analisadores.
A tabela Analizadores apresenta uma lista de analisadores predefinidos por tipo de registo.
Encontre o tipo de registo que quer estender, clique no > Criar extensão.
MenuÉ apresentada a página Extensões do analisador.
Abra a partir de uma pesquisa de registos não processados
Para abrir a página Extensões do analisador a partir de uma Pesquisa de registos não processados:
- Aceda a Investigação > Pesquisa de SIEM.
- 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"
. - Clique em Executar pesquisa. Os resultados são apresentados no painel Registos não processados.
- Clique num registo (linha) no painel Registos não processados. É apresentado o painel Vista de eventos.
- Clique no separador Registo não processado no painel Vista de eventos. O registo não processado é apresentado.
Clique em Gerir analisador > Criar extensão > Seguinte.
É apresentada a página Extensões do analisador.
Abra a partir de uma pesquisa de registos não processados antiga
Para abrir a página Extensões do analisador a partir de uma pesquisa de registos brutos antiga:
- Use a pesquisa de registos não processados antiga para pesquisar registos semelhantes aos que vão ser analisados.
- Selecione um evento no painel Eventos > Linha cronológica.
- Expanda o painel Dados de eventos.
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.
Verifique se a amostra de dados de registo não processados apresentada é representativa dos registos que a extensão do analisador vai processar.
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
eSYSLOG + 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:
- Crie extensões de análise
- Comece a usar
- Selecione a abordagem de extensão e selecione a opção Mapear campos de dados.
Os passos seguintes para definir a extensão do analisador são:
- Defina o seletor de campos repetidos
- Defina uma instrução de mapeamento de dados para cada campo
- 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.
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.
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.
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.
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
ouNOT 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.
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
.
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 campoip
repetido está no nível mais baixo da hierarquia eprincipal
não é um campo repetido. - O mapeamento de valores para
udm.intermediary.hostname
não é suportado porqueintermediary
é 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:
|
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.
|
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
|
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:
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:
- Crie extensões de análise
- Comece a usar
- Selecione a abordagem de extensão e selecione a opção Escrever fragmento de código.
Os passos seguintes para definir a extensão do analisador são:
- 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.
- Crie uma instrução de fragmento do código
- 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:
- 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.
- 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
Clique em Enviar para guardar as instruções 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.
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
- Na barra de navegação, selecione Definições do SIEM > Analisadores.
- 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. 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
Abra o Ver analisador personalizado/pré-criado > Separador Extensão, conforme descrito em Veja uma extensão do analisador existente.
Clique no botão Editar extensão.
É apresentada a página Extensões de análise.
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
Abra o Ver analisador personalizado/pré-criado > Separador Extensão, conforme descrito em Veja uma extensão do analisador existente.
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.
- Clique em Definições de SIEM > Analisadores.
- Use um dos seguintes métodos para ver a página Extensão do analisador:
- Para uma extensão existente, clique em > Ver extensão. Menu > Estender analisador
- Para novas extensões de análise, clique em > Criar extensão. Menu > Estender analisador
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.
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.