Partilhar via


Visão geral da linguagem de consulta Kusto

Aplica-se a: ✅Microsoft FabricAzure Data ExplorerAzure MonitorMicrosoft Sentinel

A Linguagem de Pesquisa Kusto (KQL) é uma ferramenta avançada para explorar os seus dados e detetar padrões, identificar anomalias e valores atípicos, criar modelação estatística e muito mais.

KQL é uma linguagem simples, mas poderosa, para consultar dados estruturados, semi-estruturados e não estruturados. A linguagem é expressiva, fácil de ler e entender a intenção da consulta e otimizada para experiências de criação. O KQL é ideal para consultar telemetria, métricas e logs com suporte profundo para pesquisa e análise de texto, operadores e funções de séries temporais, análise e agregação, geoespacial, pesquisas de semelhança vetorial e muitas outras construções de linguagem que fornecem a linguagem mais ideal para análise de dados. A consulta usa entidades de esquema que são organizadas em uma hierarquia semelhante a SQLs: bancos de dados, tabelas e colunas.

Se você tem experiência em scripts ou trabalha com bancos de dados, grande parte do conteúdo deste artigo deve parecer familiar. Se não, não se preocupe, pois a natureza intuitiva da linguagem rapidamente permite que você comece a escrever suas próprias consultas e gerar valor para sua organização.

Este artigo fornece uma explicação da linguagem de consulta e oferece exercícios práticos para você começar a escrever consultas. Para acessar o ambiente de consulta, use a interface do usuário da Web do Azure Data Explorer. Para saber como usar o KQL, consulte Tutorial: Aprenda operadores comuns.

Este artigo fornece uma explicação da linguagem de consulta e oferece exercícios práticos para você começar a escrever consultas. Para acessar o ambiente de consulta, use o conjunto de consultas KQL . Para saber como usar o KQL, consulte Tutorial: Aprenda operadores comuns.

KQL também é a linguagem que você usa para trabalhar e manipular dados no Microsoft Sentinel. Os logs que você alimenta em seu espaço de trabalho não valem muito se você não puder analisá-los e obter as informações importantes ocultas em todos esses dados. O KQL não tem apenas o poder e a flexibilidade para obter essas informações, mas também a simplicidade para ajudá-lo a começar rapidamente.

Este artigo apresenta os conceitos básicos do KQL, abrangendo algumas das funções e operadores mais usados, que devem abordar 75 a 80% das consultas que os usuários escrevem no dia a dia. Quando precisar de mais profundidade ou executar consultas mais avançadas, você pode aproveitar a pasta de trabalho Advanced KQL for Microsoft Sentinel.

Porquê KQL para Microsoft Sentinel?

O Microsoft Sentinel foi criado sobre o serviço Azure Monitor e usa os espaços de trabalho do Log Analytics do Azure Monitor para armazenar todos os seus dados. Estes dados incluem qualquer um dos seguintes:

  • dados ingeridos de fontes externas em tabelas predefinidas usando conectores de dados do Microsoft Sentinel.
  • Dados ingeridos de fontes externas em tabelas personalizadas definidas pelo usuário, usando conectores de dados criados sob medida e alguns tipos de conectores prontos para uso.
  • dados criados pelo próprio Microsoft Sentinel, resultantes das análises que cria e realiza - por exemplo, alertas, incidentes e informações relacionadas com a UEBA.
  • dados carregados no Microsoft Sentinel para ajudar na deteção e análise - por exemplo, feeds de inteligência de ameaças e listas de observação.

O KQL foi desenvolvido como parte do serviço Azure Data Explorer e, portanto, é otimizado para pesquisar em armazenamentos de big data em um ambiente de nuvem. Ele foi projetado para ajudá-lo a mergulhar fundo em seus dados e explorar seus tesouros escondidos.

O KQL também é usado no Azure Monitor e dá suporte a recursos extras do Azure Monitor que permitem recuperar, visualizar, analisar e analisar dados em armazenamentos de dados do Log Analytics. No Microsoft Sentinel, você está usando ferramentas baseadas no KQL sempre que estiver visualizando e analisando dados e procurando ameaças, seja em regras e pastas de trabalho existentes ou na criação de suas próprias.

Como o KQL faz parte de quase tudo o que você faz no Microsoft Sentinel, uma compreensão clara de como ele funciona ajuda você a tirar mais proveito do seu SIEM.

O que é uma consulta Kusto?

Uma consulta Kusto é uma solicitação somente leitura para processar dados e retornar resultados. A solicitação é declarada em texto simples, usando um modelo de fluxo de dados fácil de ler, criar e automatizar. As consultas Kusto são feitas de uma ou mais instruções de consulta.

Uma consulta Kusto não grava nenhum dado. As consultas operam em dados organizados em uma hierarquia de bancos de dados, tabelas e colunas, semelhante ao SQL.

O que é uma instrução de consulta?

Há três tipos de instruções de consulta de de usuário:

  • Uma instrução de expressão tabular
  • Uma declaração let
  • Uma instrução set

Todas as instruções de consulta são separadas por um ; (ponto-e-vírgula) e afetam apenas a consulta em questão.

Observação

Para obter informações sobre instruções de consulta de aplicativo, consulte Instruções de consulta de aplicativo.

O tipo mais comum de instrução de consulta é uma expressão tabular instrução, o que significa que tanto a entrada quanto a saída consistem em tabelas ou conjuntos de dados tabulares. As instruções tabulares contêm zero ou mais operadores , cada um dos quais começa com uma entrada tabular e retorna uma saída tabular. Os operadores são sequenciados por um | (tubo). Os dados fluem, ou são canalizados, de um operador para o próximo. Os dados são filtrados ou manipulados em cada etapa e, em seguida, alimentados na etapa seguinte.

É como um funil, onde você começa com uma tabela de dados inteira. Cada vez que os dados passam por outro operador, eles são filtrados, reorganizados ou resumidos. Como a tubulação de informações de um operador para outro é sequencial, a ordem do operador de consulta é importante e pode afetar os resultados e o desempenho. No final do funil, você fica com uma saída refinada.

Vejamos um exemplo de consulta.

StormEvents
| where StartTime between (datetime(2007-11-01) .. datetime(2007-12-01))
| where State == "FLORIDA"
| count
Contagem
28

Observação

O KQL diferencia maiúsculas de minúsculas para tudo – nomes de tabelas, nomes de colunas de tabelas, operadores, funções e assim por diante. As palavras-chave podem ser utilizadas como identificadores, colocando-as entre parênteses e aspas ([' e '] ou [" e "]). Por exemplo, ['where']. Para obter mais informações, consulte Regras de nomenclatura de identificador

Esta consulta tem uma única instrução de expressão tabular. A instrução começa com uma referência a uma tabela chamada StormEvents e contém vários operadores, where e count, cada um separado por um tubo. As linhas de dados para a tabela de origem são filtradas pelo valor da coluna StartTime e, em seguida, filtradas pelo valor da coluna Estado . Na última linha, a consulta retorna uma tabela com uma única coluna e uma única linha contendo a contagem das linhas restantes.

Para experimentar mais algumas consultas Kusto, consulte Tutorial: Escrever consultas Kusto.

Comandos de gestão

Em contraste com as consultas Kusto, os comandos de Gerenciamento de são solicitações ao Kusto para processar ou modificar dados ou metadados. Por exemplo, o comando de gerenciamento a seguir cria uma nova tabela Kusto com duas colunas, Level e Text:

.create table Logs (Level:string, Text:string)

Os comandos de gerenciamento têm sua própria sintaxe, que não faz parte da sintaxe KQL, embora os dois compartilhem muitos conceitos. Em particular, os comandos de gerenciamento são distinguidos das consultas por ter o primeiro caractere no texto do comando ser o caractere ponto (.) (que não pode iniciar uma consulta). Essa distinção evita muitos tipos de ataques de segurança, simplesmente porque impede a incorporação de comandos de gerenciamento dentro de consultas.

Nem todos os comandos de gerenciamento modificam dados ou metadados. A grande classe de comandos que começam com .show, são usados para exibir metadados ou dados. Por exemplo, o comando .show tables retorna uma lista de todas as tabelas no banco de dados atual.

Para obter mais informações sobre comandos de gerenciamento, consulte Visão geral Comandos de gerenciamento.

KQL em outros serviços

O KQL é usado por muitos outros serviços da Microsoft. Para obter informações específicas sobre o uso do KQL nesses ambientes, consulte os seguintes links: