Consultar dados usando a Linguagem de Consulta Kusto
Você pode usar a KQL (Linguagem de Consulta Kusto) no Microsoft Sentinel para pesquisar e filtrar dados coletados.
Linguagem de Consulta Kusto
A linguagem KQL permite criar, armazenar e executar análises interativas nos dados coletados. O Microsoft Sentinel usa a KQL para visualizar e analisar os dados importantes. Você pode usar o KQL para criar consultas analíticas complexas que incluem alguns dos seguintes operadores:
- Colunas calculadas
- Funções de junção
- Agrupar por agregados
Escrever e executar consultas básicas
Uma consulta é uma solicitação somente leitura que processa dados e retorna os resultados desse processamento sem modificar os dados ou metadados. De maneira semelhante às consultas SQL, as consultas KQL usam entidades de esquema que são organizadas em uma hierarquia, como bancos de dados, tabelas e colunas. Um esquema é uma coleção de tabelas agrupadas em categorias lógicas. As consultas são compostas por sequências de instruções de consulta delimitadas por ponto e vírgula (;).
Ao construir uma consulta, você começa com um nome de tabela ou um comando de pesquisa. Por exemplo, a seguinte consulta recupera todos os registros da tabela Event
:
Event
Você pode usar o caractere de barra vertical (|) para separar comandos. A saída do primeiro comando se torna a entrada do comando seguinte. Você pode adicionar qualquer número de comandos para uma única consulta. A consulta a seguir recupera os registros da tabela Event
, depois pesquisa pelo termo error
nesses registros, em qualquer propriedade:
Event
| search error
Você pode construir a consulta com operadores tabulares e escalares que o KQL combina em várias instruções de expressão tabular, que produzem os resultados da consulta.
source1 | operator1 | operator2
No exemplo a seguir, a origem é AzureActivity
. O primeiro operador é where
, que filtra registros com base na expressão lógica. O segundo operador é novamente where
:
AzureActivity
| where OperationName == 'Delete Virtual Machine'
| where ActivityStatus == 'Accepted'
Por padrão, o Log Analytics limita as consultas a um intervalo de tempo das últimas 24 horas. Para definir um intervalo de tempo diferente, você pode adicionar um filtro TimeGenerated
explícito à consulta ou usar o controle Time range
. Por exemplo, a seguinte consulta retorna dados da hora anterior:
AzureActivity
| where OperationName == 'Delete Virtual Machine'
| where ActivityStatus == 'Accepted'
| where TimeGenerated > ago (1h)
Você pode combinar as consultas com alguns dos operadores usados com mais frequência:
count
. Retorna a contagem de linhas na tabela.take
. Retorna até o número especificado de linhas de dados.project
. Seleciona um subconjunto de colunas.sort
. Classificar as linhas da tabela de entrada em ordem por uma ou mais colunas.top
. Retorna os primeiros N registros classificados de acordo com as colunas especificadas.extend
. Computa colunas derivadas.summarize
. Agrega grupos de linhas.render
. Renderiza os resultados como uma saída gráfica.
Para combinar os registros de duas fontes (tabelas), você pode usar o operador join
. O operador union
combina duas ou mais tabelas em uma.
Para saber mais, confira o Tutorial do Microsoft Log Analytics, que usa recursos do Log Analytics para compilar e executar uma consulta em vez de trabalhar com a própria consulta.
Você também pode usar o Tutorial do Azure Data Explorer para saber mais sobre o KQL.
Observação
O Análise de Logs do Microsoft Sentinel não dá suporte a toda a sintaxe KQL usada no Azure Data Explorer.
Repositório do Microsoft Sentinel no GitHub
Use o Repositório do Microsoft Sentinel no GitHub para pesquisar consultas e pastas de trabalho especializadas para ajudar a proteger seu ambiente e buscar ameaças. Por exemplo, a consulta a seguir do repositório do Microsoft Sentinel no GitHub exibe a delegação suspeita de permissões para contas de usuário.
let timeframe = 7d;
AzureActivity
| where TimeGenerated >= ago(timeframe)
| where OperationName == "Create role assignment"
| where ActivityStatus == "Succeeded"
| project Caller, CallerIpAddress
| evaluate basket()
| extend AccountCustomEntity = Caller, IPCustomEntity = CallerIpAddress
A consulta analisa o endereço IP de onde o administrador concede a outros usuários acesso a recursos do Azure. Se uma operação não for de um endereço IP válido, a consulta sinalizará uma atividade suspeita, que você poderá investigar com mais detalhes.
Se quiser experimentar alguns exemplos, use o ambiente de demonstração no portal do Azure.