KQL

KQL – Guia Básico – Operador Search

Nível: Iniciante | Tempo de leitura: 5 minutos

Já vimos anteriormente no artigo “Uma visão geral sobre KQL (Kusto Query Language)” do que se trata e como usar o Kusto Query Language, muito útil, por exemplo, no Sentinel e MDE. Nessa série, quero trazer um guia básico, prático e rápido sobre os principais usos e operadores.

Para facilitar, vamos iniciar pelos operadores com exemplos de cada um deles. Esse tópico também é um assunto cobrado no exame de certificação SC-200: Microsoft Security Operations Analyst. Lembrando também que estou trazendo os exemplos de uso de KQL voltados mais para os produtos de segurança e conformidade, mas essa é uma linguagem completa de análise de dados usada em outras soluções Microsoft.

Vamos lembrar que uma consulta KQL é uma solicitação somente leitura para processar dados e retornar os resultados desse processamento, sem modificar os dados ou metadados. Sendo assim, nada melhor do que começar com o mais básico operador para uma pesquisa, o Search. Porém, ela será usada como exemplo, pois há maneiras mais eficientes de realizar pesquisas usando o Where, mas para motivos didáticos, vamos começar pelo Search.

A propósito, quando usamos o Search já nos é avisado que essa não é a melhor forma de buscar o que queremos dessa forma que estou fazendo abaixo na tabela Perf diretamente:

O operador de pesquisa é substancialmente menos eficiente do que a filtragem de texto específica da tabela e da coluna. Sempre que as tabelas ou colunas forem conhecidas, é recomendável usar o operador union e o operador where. A pesquisa não funcionará bem quando o espaço de trabalho contém um grande número de tabelas e colunas e o volume de dados que está sendo verificado é alto e o intervalo de tempo da consulta é alto

Como comentei no post Visão Geral do KQL, se você quiser testar isso na prática, pode fazer o login com qualquer conta Microsoft ou criar um trial e acessar o site de laboratório que foi criado justamente para que você teste as consultas na prática – https://aka.ms/lademo.

Mas antes de comentar sobre o search, temos que entender que pesquisar dados usando KQL é bem parecido com o que usamos no SQL: bancos de dados, tabelas e colunas. Nós vamos ordenar uma sequência de instruções de consulta que queremos realizar para as tabelas que queremos procurar, o exemplo abaixo mostra isso de forma visual e pode ser visto também no guia gratuito Learn da Microsoft.

Nesse exemplo, a tabela que estamos pesquisando é a SecurityEvent. Os demais operadores iremos ver futuramente, vamos deixar só para exemplificar. Temos também a coluna EventID que irá nos trazer um filtro dos dados, que representando as linhas da tabela e irá resumir os resultados criando uma nova coluna da contagem por conta. Iremos entrar nos demais operadores em futuros artigos, deixaremos a imagem de referência por enquanto.

Exemplo de instrução de KQL

Agora, pensando na estrutura acima, podemos pesquisar tabelas e colunas com um dos operadores mais simples: Search.

OBS: o // é usado para comentário no KQL.

// Esta versão verifica todas as tabelas, embora apenas a tabela Perf tenha este tipo de dado
search "Processor Time"
| summarize count(), avg(CounterValue) by Computer

// Esta versão verifica todas as strings nas tabelas Perf - muito mais eficiente
Perf
| search "Processor Time"
| summarize count(), avg(CounterValue) by Computer

// Esta é a versão mais eficiente
Perf
| where CounterName == "% Processor Time"
| summarize count(), avg(CounterValue) by Computer

No próximo artigo vou explicar um outro método para reduzir o volume de dados usando o operador Where usado nesse último exemplo mais eficiente.

Conclusão

Nesse artigo aprendemos a usar o operador Search em uma pesquisa KQL.

Referências:

Optimize log queries in Azure Monitor – Azure Monitor | Microsoft Docs

Usar o operador search – Learn | Microsoft Docs

Tiago Souza

Tiago Souza

Security Technical Specialist
Cyber Security Technical Specialist at Microsoft | Cloud Security & Threat Protection | Blog content creator at CyberGeeks.Cloud - https://linktr.ee/tiagovf