Supervisión del estado de inicio de sesión de la aplicación para la resistencia
Para aumentar la resistencia de la infraestructura, configure la supervisión del estado de inicio de sesión de la aplicación para las aplicaciones críticas. Puede recibir una alerta cuando se produzca un incidente que le afecte. En este artículo, se explica cómo configurar el libro de estado de inicio de sesión de la aplicación para supervisar las interrupciones de los inicios de sesión de los usuarios.
Puede configurar alertas basadas en el libro de estado de inicio de sesión de la aplicación. Este libro permite que los administradores supervisen las solicitudes de autenticación de las aplicaciones en los inquilinos. Ofrece estas funcionalidades principales:
- Configure el libro para supervisar las aplicaciones juntas o de manera individual con datos casi en tiempo real.
- Configure alertas para los cambios de patrón de autenticación, de modo que pueda investigar y tomar medidas.
- Compare las tendencias durante un período de tiempo. Semana a semana es la configuración predeterminada del libro.
Nota
Consulte todos los libros disponibles y los requisitos previos para usarlos en Uso de los libros de Azure Monitor en informes.
Durante un evento que le afecta, pueden suceder dos cosas:
- El número de inicios de sesión de una aplicación puede reducirse de manera precipitada cuando los usuarios no pueden iniciar sesión.
- El número de errores de inicio de sesión puede aumentar.
Requisitos previos
- Un inquilino de Microsoft Entra.
- Un usuario asignó al menos el rol de administrador de seguridad.
- Un área de trabajo de Log Analytics en la suscripción a Azure para enviar registros a los registros de Azure Monitor. Aprenda a crear un área de trabajo de Log Analytics.
- Microsoft Entra registros de identificador integrados con los registros de Azure Monitor. Aprenda a integrar registros de inicio de sesión de Microsoft Entra con la transmisión de Azure Monitor.
Configuración del libro de estado de inicio de sesión de la aplicación
Para acceder a los libros, en Azure Portal, seleccione Microsoft Entra ID y, después, seleccione Libros.
Los libros aparecen en Uso, Acceso condicional y Solución de problemas. El libro de estado de inicio de sesión de la aplicación se muestra en la sección Estado. Después de usar un libro, es posible que aparezca en la sección Libros modificados recientemente.
Puede usar el libro de estado de inicio de sesión de la aplicación para visualizar lo que sucede con los inicios de sesión. Como se muestra en la captura de pantalla siguiente, el libro presenta dos gráficos.
En la captura de pantalla anterior, hay dos gráficos:
- Uso por hora (número de usuarios que han iniciado sesión correctamente). Comparar el número actual de usuarios correctos en un período de uso típico le ayuda a detectar una reducción en el uso que puede requerir investigación. Una reducción de la frecuencia de uso correcto puede ayudar a detectar los problemas de rendimiento y uso que no se pueden detectar con la frecuencia de errores. Por ejemplo, cuando los usuarios no pueden acceder a la aplicación para intentar iniciar sesión, se produce una caída en el uso, pero no hay errores. Vea la consulta de ejemplo de estos datos en la siguiente sección de este artículo.
- Frecuencia de errores por hora. Un pico en la frecuencia de errores puede indicar un problema con los mecanismos de autenticación. Las medidas de frecuencia de errores solo aparecen cuando los usuarios pueden intentar autenticarse. Cuando los usuarios no pueden obtener acceso para realizar el intento, no hay errores.
Configuración de la consulta y las alertas
Cree reglas de alertas en Azure Monitor y puede ejecutar automáticamente consultas guardadas o búsquedas de registros personalizadas a intervalos regulares. Puede configurar una alerta que notifique a un grupo específico cuando la frecuencia de uso o errores supere un umbral especificado.
Use las siguientes instrucciones para crear alertas por correo electrónico basadas en las consultas reflejadas en los grafos. Los scripts de ejemplo envían una notificación por correo electrónico cuando:
- El uso correcto se reduce en un 90 % en comparación con la misma hora hace dos días, como se muestra en el gráfico de uso por hora del ejemplo anterior.
- La frecuencia de errores aumenta en un 90 % en comparación con la misma hora hace dos días, como se muestra en el gráfico de frecuencia de errores por hora del ejemplo anterior.
Para configurar la consulta subyacente y establecer alertas, complete los pasos siguientes mediante la consulta de ejemplo como base para la configuración. Al final de esta sección se encuentra una descripción de la estructura de la consulta. Aprenda cómo crear, ver y administrar alertas de registro mediante Azure Monitor en Administrar alertas de registro.
En el libro, seleccione Editar, como se muestra en la captura de pantalla siguiente. Seleccione el icono de consulta en la esquina superior derecha del gráfico.
Consulte el registro de consultas como se muestra en la captura de pantalla siguiente.
Copie uno de los siguientes scripts de ejemplo para una nueva consulta de Kusto.
Pegue la consulta en la ventana. Seleccione Run (Ejecutar). Busque el mensaje Completado y los resultados de la consulta, como se muestra en la captura de pantalla siguiente.
Resalte la consulta. Seleccione + Nueva regla de alertas.
Configure las condiciones de la alerta. Como se muestra en la captura de pantalla del ejemplo siguiente, en la sección Condición, en Medida, seleccione Filas de tabla para Medir. Seleccione Recuento, para el Tipo de agregación. Seleccione 2 días para Granularidad de agregaciones.
- Filas de tabla. Puede usar el número de filas devueltas para trabajar con eventos, como registros de eventos de Windows, Syslog y excepciones de aplicación.
- Tipo de agregación. Puntos de datos aplicados con "Recuento".
- Granularidad de agregación. Este valor define el período que funciona con frecuencia de evaluación.
En Lógica de alerta, configure los parámetros como se muestra en la captura de pantalla de ejemplo.
- Valor del umbral: 0. Este valor genera una alerta sobre cualquier resultado.
- Frecuencia de evaluación: 1 hora. Este valor establece el período de evaluación en una vez cada hora durante la hora anterior.
En la sección Acciones , configure las opciones, como se muestra en la captura de pantalla de ejemplo.
- Elija Seleccionar grupo de acciones y agregue el grupo del que desea recibir notificaciones de alerta.
- En Personalizar acciones, seleccione Alertas de correo electrónico.
- Agregue una línea de asunto.
En la sección Detalles, configure las opciones, como se muestra en la captura de pantalla de ejemplo.
- Agregue un nombre de Suscripción y una descripción.
- Seleccione el grupo de recursos al que quiere agregar la alerta.
- Seleccione la Gravedad predeterminada.
- Seleccione Habilitar tras la creación si desea que se active inmediatamente. De lo contrario, seleccione Silenciar acciones.
En la sección Revisar y crear, configure las opciones, como se muestra en la captura de pantalla de ejemplo.
Seleccione Guardar. Escriba un nombre para la consulta. En Guardar como, seleccione Consulta. En Categoría, seleccione Alerta. De nuevo, seleccione Guardar.
Restricción de las consultas y alertas
Para modificar las consultas y alertas para obtener la máxima eficacia:
- Pruebe siempre las alertas.
- Modifique la confidencialidad y la frecuencia de las alertas para recibir notificaciones importantes. Si reciben demasiadas alertas, es posible que los administradores las ignoren y se omita algo importante.
- En los clientes de correo electrónico del administrador, agregue el correo electrónico desde el que las alertas llegan a la lista de remitentes permitidos. Este enfoque evita las notificaciones perdidas debido a un filtro de correo no deseado en sus clientes de correo electrónico.
- De forma predeterminada, las consultas de alerta en Azure Monitor solo pueden incluir resultados de las últimas 48 horas.
Muestras de scripts
Consulta de Kusto para el aumento de la frecuencia de errores
En la consulta siguiente, se detectan aumentos en la frecuencia de errores. Según sea necesario, puede ajustar la relación en la parte inferior. Representa el cambio porcentual en el tráfico de la última hora en comparación con el tráfico de ayer a la misma hora. Un resultado del 0,5 indica una diferencia del 50 % en el tráfico.
let today = SigninLogs
| where TimeGenerated > ago(1h) // Query failure rate in the last hour
| project TimeGenerated, UserPrincipalName, AppDisplayName, status = case(Status.errorCode == "0", "success", "failure")
// Optionally filter by a specific application
//| where AppDisplayName == **APP NAME**
| summarize success = countif(status == "success"), failure = countif(status == "failure") by bin(TimeGenerated, 1h) // hourly failure rate
| project TimeGenerated, failureRate = (failure * 1.0) / ((failure + success) * 1.0)
| sort by TimeGenerated desc
| serialize rowNumber = row_number();
let yesterday = SigninLogs
| where TimeGenerated between((ago(1h) – totimespan(1d))..(now() – totimespan(1d))) // Query failure rate at the same time yesterday
| project TimeGenerated, UserPrincipalName, AppDisplayName, status = case(Status.errorCode == "0", "success", "failure")
// Optionally filter by a specific application
//| where AppDisplayName == **APP NAME**
| summarize success = countif(status == "success"), failure = countif(status == "failure") by bin(TimeGenerated, 1h) // hourly failure rate at same time yesterday
| project TimeGenerated, failureRateYesterday = (failure * 1.0) / ((failure + success) * 1.0)
| sort by TimeGenerated desc
| serialize rowNumber = row_number();
today
| join (yesterday) on rowNumber // join data from same time today and yesterday
| project TimeGenerated, failureRate, failureRateYesterday
// Set threshold to be the percent difference in failure rate in the last hour as compared to the same time yesterday
// Day variable is the number of days since the previous Sunday. Optionally ignore results on Sat, Sun, and Mon because large variability in traffic is expected.
| extend day = dayofweek(now())
| where day != time(6.00:00:00) // exclude Sat
| where day != time(0.00:00:00) // exclude Sun
| where day != time(1.00:00:00) // exclude Mon
| where abs(failureRate – failureRateYesterday) > 0.5
Consulta de Kusto para la reducción de uso
En la consulta siguiente, comparamos el tráfico de la última hora con el tráfico de ayer a la misma hora. Excluimos sábado, domingo y lunes porque esperamos una gran variabilidad en el tráfico del día anterior a la misma hora.
Según sea necesario, puede ajustar la relación en la parte inferior. Representa el cambio porcentual en el tráfico de la última hora en comparación con el tráfico de ayer a la misma hora. Un resultado del 0,5 indica una diferencia del 50 % en el tráfico. Ajuste estos valores para que se adapten al modelo de operación de su empresa.
Let today = SigninLogs // Query traffic in the last hour
| where TimeGenerated > ago(1h)
| project TimeGenerated, AppDisplayName, UserPrincipalName
// Optionally filter by AppDisplayName to scope query to a single application
//| where AppDisplayName contains "Office 365 Exchange Online"
| summarize users = dcount(UserPrincipalName) by bin(TimeGenerated, 1hr) // Count distinct users in the last hour
| sort by TimeGenerated desc
| serialize rn = row_number();
let yesterday = SigninLogs // Query traffic at the same hour yesterday
| where TimeGenerated between((ago(1h) – totimespan(1d))..(now() – totimespan(1d))) // Count distinct users in the same hour yesterday
| project TimeGenerated, AppDisplayName, UserPrincipalName
// Optionally filter by AppDisplayName to scope query to a single application
//| where AppDisplayName contains "Office 365 Exchange Online"
| summarize usersYesterday = dcount(UserPrincipalName) by bin(TimeGenerated, 1hr)
| sort by TimeGenerated desc
| serialize rn = row_number();
today
| join // Join data from today and yesterday together
(
yesterday
)
on rn
// Calculate the difference in number of users in the last hour compared to the same time yesterday
| project TimeGenerated, users, usersYesterday, difference = abs(users – usersYesterday), max = max_of(users, usersYesterday)
| extend ratio = (difference * 1.0) / max // Ratio is the percent difference in traffic in the last hour as compared to the same time yesterday
// Day variable is the number of days since the previous Sunday. Optionally ignore results on Sat, Sun, and Mon because large variability in traffic is expected.
| extend day = dayofweek(now())
| where day != time(6.00:00:00) // exclude Sat
| where day != time(0.00:00:00) // exclude Sun
| where day != time(1.00:00:00) // exclude Mon
| where ratio > 0.7 // Threshold percent difference in sign-in traffic as compared to same hour yesterday
Creación de procesos para administrar alertas
Después de configurar las consultas y alertas, cree los procesos empresariales para administrar las alertas.
- ¿Quién supervisa el libro y cuándo?
- Cuando se producen alertas, ¿quién las investiga?
- ¿Cuáles son las necesidades de comunicación? ¿Quién crea las comunicaciones y quién las recibe?
- Cuando se produce una interrupción, ¿qué procesos empresariales se aplican?
Pasos siguientes
Más información acerca de los libros