🔒 Registro cerrado · Apertura oficial próximamente · Acceso exclusivo para alumnos activos
Iniciar SesiónLibros de consultas reutilizables
5 tareas · 36 min · Principiante
Una buena consulta que vive en el portapapeles de una persona se pierde con esa persona. Los equipos de defensa guardan sus consultas en una biblioteca compartida, con nombre, autor, fecha de revisión y estado, y las escriben para que se puedan reutilizar con otros valores. En la Clínica Veterinaria Mastranto la biblioteca tiene ocho consultas guardadas y varias tienen defectos que las hacen devolver nada sin avisar. Aprendes a parametrizar con `let`, a revisar una biblioteca como se revisa código y a detectar los errores silenciosos. Todo es lectura del extracto, en UTC.
Objetivo de la sala
Una buena consulta que vive en el portapapeles de una persona se pierde con esa persona. Los equipos de defensa guardan sus consultas en una biblioteca compartida, con nombre, autor, fecha de revisión y estado, y las escriben para que se puedan reutilizar con otros valores. En la Clínica Veterinaria Mastranto la biblioteca tiene ocho consultas guardadas y varias tienen defectos que las hacen devolver nada sin avisar. Aprendes a parametrizar con `let`, a revisar una biblioteca como se revisa código y a detectar los errores silenciosos. Todo es lectura del extracto, en UTC.let da nombre a un valor, a una lista o a un resultado de tabla al comienzo de la consulta, y termina con punto y coma. En vez de repetir la cuenta o los países habituales en tres sitios, se definen una vez arriba y el cuerpo de la consulta usa el nombre. Para reutilizar la consulta con otra persona se cambia solo la primera línea; ese es el mecanismo detrás de las consultas con parámetros que un equipo comparte.
Prueba let usuario = "[email protected]"; SigninLogs | where UserPrincipalName == usuario | project TimeGenerated, IPAddress, ResultType y observa que el filtro no tiene la cuenta escrita dentro.
Responde para continuar
Tienes una consulta que filtra por una cuenta escrita en cuatro sitios y debes revisarla con otra cuenta. ¿Qué mejora el trabajo?
Ver pista de ayuda
Un valor que se repite se declara una sola vez, al principio.
Una biblioteca de consultas es un inventario más: cada una tiene un identificador, un nombre que dice qué pregunta responde, el texto, quién la escribió, cuándo se revisó y en qué estado está (activa, en prueba, obsoleta). Revisarla es leer cada texto y comprobar que hace lo que dice su nombre. Ejecuta biblioteca y lee la columna de las consultas con atención.
Un error de comparación en un filtro no produce un mensaje de error: produce un resultado vacío, que parece «no hubo nada» y es justo lo que un defensor no puede tomar por bueno sin comprobar. == distingue mayúsculas de minúsculas y compara contra el valor exactamente como está en la tabla. Para ver cómo se escriben los valores de una columna, filtra con el valor exacto: AzureActivity | where ActivityStatusValue == "Failed" devuelve tres filas, y =~ es la comparación que ignora mayúsculas.
Responde para continuar
¿Qué identificador de la biblioteca tiene un filtro que nunca devolvería filas por escribir ActivityStatusValue de forma distinta a como está en la tabla?
Ver pista de ayuda
Compara el valor que usa cada consulta de AzureActivity con el que ves en la fila de `AzureActivity | where ActivityStatusValue == "Failed"`.
El segundo defecto es de tipo. En la primera sala viste que ResultType es de tipo texto, y en la segunda que el éxito se escribe "0" con comillas. Comparar una columna de texto con un número sin comillas no corresponde al tipo de la columna y no es la forma de escribirlo. Lee de nuevo el texto de cada consulta de SigninLogs de la biblioteca y busca la que no respeta el tipo.
Responde para continuar
¿Qué identificador de la biblioteca compara ResultType sin respetar el tipo de la columna?
Ver pista de ayuda
Ejecuta `biblioteca` y busca el filtro de ResultType escrito sin comillas.
La consulta marcada como obsoleta tiene un tercer problema: acota el tiempo con una fecha fija escrita a mano. Hoy funciona; dentro de un año seguirá mirando desde esa fecha y devolverá cada vez más filas. Para una consulta que se guarda y se corre todos los días, la ventana debe ser relativa: ago(1d) significa «desde hace un día, contado desde el momento en que corre la consulta». Ejecuta AzureActivity | where TimeGenerated > ago(1d) | where hourofday(TimeGenerated) < 5 para ver la forma corregida.
Responde para continuar
Una consulta guardada para vigilancia diaria acota el tiempo con `TimeGenerated > datetime(2026-01-01)`. ¿Cómo se corrige para que siga sirviendo?
Ver pista de ayuda
La ventana debe moverse sola con la fecha en que se ejecuta.
El estado «activa» dice que alguien decidió usar la consulta, no que funcione. Un resumen del estado de la biblioteca da el panorama y es una buena práctica de higiene: cada consulta con nombre, autor, última revisión y estado, y una revisión periódica que ejecute cada una y compruebe que devuelve lo esperado en un caso conocido. Ejecuta biblioteca | summarize Consultas = count() by estado para ver cuántas hay en cada estado.
Con lo que viste en las tareas anteriores, el número de consultas activas incluye una que tiene un defecto. Esa es la razón por la que la revisión no se puede basar solo en la etiqueta.
Responde para continuar
¿Cuántas consultas de la biblioteca tienen estado «activa»? Escribe solo el número.
Ver pista de ayuda
Escribe `biblioteca | summarize Consultas = count() by estado`.
Whoami-Labs Pro
Whoami-Labs Pro utiliza cookies
Utilizamos cookies y almacenamiento local para el funcionamiento del sitio, seguridad de sesión y, si lo autorizas, analítica y marketing. Puedes aceptar, rechazar o personalizar. Política de Privacidad
Preferencias
Configuraciones de cookies
Elige qué categorías permitir. Las esenciales siempre están activas. Consulta la Política de Privacidad.
Esenciales
Siempre activas · sesión, CSRF, tema y esta preferencia
Necesarias para iniciar sesión, proteger formularios (CSRF) y recordar tu elección de cookies y tema. Sin ellas la plataforma no funciona de forma segura.
Analíticos
Hoy no activos en la plataforma; listos para cuando se conecten
Nos ayudan a entender uso de cursos y páginas. Si los activas, se usarán cuando conectemos analítica; hasta entonces no se carga ningún tracker.
Marketing
Hoy no activos; campañas futuras solo con tu permiso
Comunicaciones o campañas. No activos hoy en la plataforma; quedarán listos si los conectamos y solo si los permites.