Volver a la wiki

Decisión: Cierre de Hallazgos BAJA/MEDIA del Audit sa4

Contexto

Auditoría Suprema sub-área 4 (monitoring/ITSM/alerting) identificó 36 hallazgos:

Sesión 112 cierra los BAJA/MEDIA en un lote unificado.

Decisiones Técnicas

B1: Validación de risk_level

Problema: Políticas SLA/escalation con risk_level basura (ej. “FOOBAR”) nunca matchean un insight realmente existente → silenciosamente inerte.

Decisión:

B5: Honestidad en apply_runbook

Problema: El endpoint “aplica” runbook pero no lo ejecuta realmente. Docstring ambiguo; usage_count se incrementaba en re-asignaciones (inflaba ranking).

Decisión:

B6: Body de create_from_insight

Problema: create_from_insight ignoraba description/risk_level del body; usaba solo los del insight.

Decisión: Aplicar campos del body si vienen, respetando entrada del usuario.

B10: SLA Lifecycle con resolved_by

Problema: AlertEvent.resolved_at se poblaba pero sin traza de quién lo hizo.

Decisión:

B15: Markdown a Prueba de Fences

Problema: Bloque de código con ``` en commands/output rompía el fence Markdown.

Decisión: Función _code_block() que calcula fence más larga que cualquier run de backticks en el contenido.

M5: Validación de Comandos en Runbooks

Problema: create/update_runbook guardaban comandos embebidos sin validar contra allowlist del vendor.

Decisión:

B7/B11: Paginación en List Endpoints

Problema: Endpoints sin limit → potencial DoS o N+1 masivo.

Decisión:

B12: N+1 en is_in_maintenance_window

Problema: Cargaba TODAS las ventanas activas, luego probaba M2M por cada una.

Decisión: Query única con Q(targets__isnull=True) | Q(targets=target).

B13: N+1 en check_escalations

Problema: Cada insight disparaba una query de políticas.

Decisión: Precarga TODAS las políticas de las orgs pendientes, groupware por (org_id, risk_level), acceso O(1).

Nota sobre B8/M4/M11

Impacto

Test Coverage

4 tests nuevos en test_monitoring_sa4_sa5.py:


Véase también

Subir