Consulta de datos mediante el lenguaje de consulta Kusto
- 5 minutos
Puede usar el Lenguaje de consulta Kusto (KQL) en Microsoft Sentinel para buscar y filtrar los datos recopilados.
Lenguaje de consulta Kusto
KQL proporciona la capacidad de crear, almacenar y ejecutar análisis interactivos en los datos recopilados. Microsoft Sentinel usa KQL para visualizar y analizar los datos importantes. Puede usar KQL para crear consultas analíticas complejas que incluyan algunos de los operadores siguientes:
- Columnas calculadas
- Funciones de combinación
- Agrupar por agregados
Escritura y ejecución de consultas básicas
Una consulta es una solicitud de solo lectura que procesa datos y devuelve los resultados de este procesamiento sin modificar los datos ni metadatos. Como sucede con las consultas SQL, las consultas KQL usan entidades de esquema que se organizan en una jerarquía como bases de datos, tablas y columnas. Un esquema es una colección de tablas agrupadas en categorías lógicas. Las consultas constan de secuencias de instrucciones de consulta que se delimitan mediante un punto y coma (;).
Cuando se crea una consulta, se empieza con un nombre de tabla o un comando de búsqueda. Por ejemplo, la consulta siguiente recupera todos los registros de la Event tabla:
Event
Puede usar el carácter de barra vertical (|) para separar los comandos. La salida del primer comando se convierte en la entrada del siguiente. Puede agregar cualquier número de comandos a una sola consulta. La consulta siguiente recupera los registros de la Event tabla y, a continuación, los busca en el término error en cualquier propiedad:
Event
| search error
Puede crear la consulta con operadores tabulares y escalares que KQL combina en varias instrucciones de expresión tabular, que generan los resultados de la consulta.
source1 | operator1 | operator2
En el ejemplo siguiente, el origen es AzureActivity. El primer operador es where, que filtra los registros según la expresión lógica. El segundo operador vuelve a ser where:
AzureActivity
| where OperationName == 'Delete Virtual Machine'
| where ActivityStatus == 'Accepted'
De forma predeterminada, Log Analytics limita las consultas a un intervalo de tiempo de las últimas 24 horas. Para establecer un intervalo de tiempo diferente, puede agregar un filtro explícito TimeGenerated a la consulta o usar el Time range control. Por ejemplo, la consulta siguiente devuelve datos de la hora anterior:
AzureActivity
| where OperationName == 'Delete Virtual Machine'
| where ActivityStatus == 'Accepted'
| where TimeGenerated > ago (1h)
Puede combinar las consultas con algunos de los operadores que se usan con más frecuencia:
-
count. Devuelve el recuento de filas de la tabla. -
take. Devuelve hasta el número especificado de filas de datos. -
project. Selecciona un subconjunto de columnas. -
sort. Ordena las filas de la tabla de entrada en orden por una o varias columnas. -
top. Devuelve los N primeros registros ordenados por las columnas especificadas. -
extend. Calcula columnas derivadas. -
summarize. Agrega grupos de filas. -
render. Representa los resultados como una salida gráfica.
Para combinar los registros de dos orígenes (tablas), puede usar el join operador. El union operador combina dos o más tablas en una.
Para obtener más información, vea el tutorial de Log Analytics de Microsoft, en el que se usan las características de Log Analytics para compilar y ejecutar una consulta en lugar de trabajar con la propia consulta.
También puede usar Tutorial de Azure Data Explorer para obtener información sobre KQL.
Nota:
Log Analytics de Microsoft Sentinel no es compatible con toda la sintaxis de KQL que se usa en Azure Data Explorer.
Repositorio de Microsoft Sentinel en GitHub
También puede usar el repositorio de Microsoft Sentinel en GitHub para buscar consultas y libros especializados con el fin de proteger el entorno y buscar amenazas. Por ejemplo, la consulta siguiente del repositorio de Microsoft Sentinel en GitHub muestra la delegación sospechosa de permisos a cuentas de usuario.
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
La consulta analiza la dirección IP desde la que el administrador concede acceso a otros usuarios a los recursos de Azure. Si una operación no procede de una dirección IP válida, la consulta señala la actividad sospechosa, que puede investigar con más detalle.
Si quiere probar algunos ejemplos, use el entorno de demostración en Azure Portal.
Comprueba tus conocimientos
Comentarios
¿Le ha resultado útil esta página?
No
¿Necesita ayuda con este tema?
¿Desea intentar usar Ask Learn para aclarar o guiarle a través de este tema?