Consultar dados com a Linguagem de Consulta Kusto
Você pode usar a Kusto Query Language (KQL) no Microsoft Sentinel para pesquisar e filtrar os dados coletados.
Linguagem de Consulta 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. Pode utilizar a KQL para criar consultas analíticas complexas que incluem alguns dos seguintes operadores:
- Colunas calculadas
- Associar funções
- Agrupar por agregados
Escrever e executar consultas básicas
Uma consulta é um pedido só de leitura que processa dados e obtém os resultados desse processamento sem modificar os dados ou os metadados. Tal como as consultas SQL, as consultas KQL utilizam entidades de esquema organizadas numa hierarquia semelhante à das bases de dados, das tabelas e das colunas. Um esquema é uma coleção de tabelas agrupadas em categorias lógicas. As consultas consistem em sequências de instruções de consulta delimitadas por um ponto e vírgula (;).
Ao construir uma consulta, 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
Pode utilizar o caráter de pipe (|) para separar comandos. A saída do primeiro comando torna-se na entrada do comando seguinte. 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
Pode construir a consulta com operadores tabulares e escalares que a KQL combina em várias instruções de expressão tabular, as quais 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 predefiniçã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 seguinte obtém dados da hora anterior:
AzureActivity
| where OperationName == 'Delete Virtual Machine'
| where ActivityStatus == 'Accepted'
| where TimeGenerated > ago (1h)
Pode combinar as consultas com alguns dos operadores utilizados mais frequentemente:
count
. Obtém o número de linhas na tabela.take
. Obtém até ao número de linhas de dados especificado.project
. Seleciona um subconjunto de colunas.sort
. Ordena as linhas da tabela de entrada por uma ou mais colunas.top
. Obtém os primeiros N registos ordenados pelas colunas especificadas.extend
. Calcula as colunas derivadas.summarize
. Agrega grupos de linhas.render
. Compõe 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, veja o tutorial do Log Analytics da Microsoft que utiliza recursos do Log Analytics para compilar e executar uma consulta em vez de trabalhar com a própria consulta.
Também pode utilizar o tutorial do Azure Data Explorer para obter mais informações sobre a KQL.
Nota
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 a outros utilizadores acesso 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, utilize o ambiente de demonstração no portal do Azure.