Consultar dados usando a linguagem de consulta Kusto
- 5 minutos
Você pode usar a Kusto Query Language (KQL) no Microsoft Sentinel para pesquisar e filtrar os dados coletados.
Linguagem de Pesquisa Kusto
O KQL oferece a capacidade de criar, armazenar e executar análises interativas sobre os dados coletados. O Microsoft Sentinel usa o 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. 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 consistem em sequências de instruções de consulta que são delimitadas por um ponto-e-vírgula (;).
Ao construir uma consulta, você começa com um nome de tabela ou um comando de pesquisa. Por exemplo, a consulta a seguir recupera todos os registros da Event tabela:
Event
Você pode usar o caractere pipe (|) para separar comandos. A saída do primeiro comando torna-se a entrada do comando seguinte. Você pode adicionar qualquer número de comandos a uma única consulta. A consulta a seguir recupera os Event registros da tabela e os pesquisa pelo termo error 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 fonte é 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 explícito TimeGenerated à consulta ou usar o Time range controle. Por exemplo, a consulta a seguir retorna dados da hora anterior:
AzureActivity
| where OperationName == 'Delete Virtual Machine'
| where ActivityStatus == 'Accepted'
| where TimeGenerated > ago (1h)
Você pode combinar suas consultas com alguns dos operadores mais usados:
-
count. Devolve a contagem de linhas na tabela. -
take. Retorna até o número especificado de linhas de dados. -
project. Seleciona um subconjunto de colunas. -
sort. Classifica as linhas da tabela de entrada em ordem por uma ou mais colunas. -
top. Retorna os primeiros N registros classificados pelas colunas especificadas. -
extend. Calcula 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 join operador. O union operador combina duas ou mais tabelas em uma.
Para obter mais informações, consulte o tutorial de análise de log da Microsoft que usa recursos do Log Analytics para criar 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 Microsoft Sentinel Log Analytics não suporta toda a sintaxe KQL usada no Azure Data Explorer.
Repositório Microsoft Sentinel no GitHub
Você também pode usar o repositório do Microsoft Sentinel no GitHub para procurar consultas e pastas de trabalho especializadas para ajudar a proteger seu ambiente e caçar ameaças. Por exemplo, a consulta a seguir do repositório GitHub do Microsoft Sentinel exibe 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 acesso a outros usuários aos recursos do Azure. Se uma operação não for de um endereço IP válido, a consulta sinaliza atividade suspeita, que você pode investigar mais a fundo.
Se quiser experimentar alguns exemplos, use o ambiente de demonstração no portal do Azure.