OP.EXP.8 Registro de la actividad de los usuarios
Documentos de referencia
- Real Decreto 311/2022 - Anexo II, Medida OP.EXP.8
- T-024-012 - Procedimiento de registro y auditoría de actividad
- T-024-013 - Matriz de eventos auditables
- GP-013 - Gestión de Ciberseguridad
- ISO/IEC 27001:2022 - Control A.8.15 (Registro)
- FDA 21 CFR Part 11 - Audit trails
- RGPD - Artículo 32 (Medidas técnicas)
Guía de implantación
Objetivo
Establecer un sistema integral de registro y auditoría de las actividades de los usuarios en los sistemas de información de Legit Health, garantizando la trazabilidad completa de las acciones realizadas sobre el dispositivo médico Legit Health Plus y sus datos asociados.
Alcance
Este control aplica a:
- Todos los sistemas que procesan datos del dispositivo médico
- Aplicaciones web y móviles de Legit Health Plus
- Infraestructura cloud (AWS)
- Sistemas de gestión y administración
- Bases de datos clínicas
- Accesos privilegiados y administrativos
Eventos auditables
Eventos de autenticación y acceso
| Evento | Datos registrados | Criticidad |
|---|---|---|
| Login exitoso | Usuario, timestamp, IP, dispositivo, método auth | Media |
| Login fallido | Usuario intento, timestamp, IP, razón fallo | Alta |
| Logout | Usuario, timestamp, duración sesión | Baja |
| Cambio contraseña | Usuario, timestamp, método cambio | Alta |
| Reset contraseña | Usuario, timestamp, IP, método verificación | Alta |
| Activación MFA | Usuario, tipo MFA, timestamp | Media |
| Elevación privilegios | Usuario, privilegio otorgado, duración, justificación | Crítica |
| Acceso denegado | Usuario, recurso, timestamp, razón | Alta |
Eventos de datos clínicos
| Evento | Datos registrados | Criticidad |
|---|---|---|
| Consulta historia clínica | Usuario, paciente ID (hash), timestamp, campos consultados | Alta |
| Modificación datos paciente | Usuario, paciente ID (hash), campos modificados, valores anteriores | Crítica |
| Creación caso clínico | Usuario, caso ID, timestamp, tipo evaluación | Media |
| Generación diagnóstico IA | Usuario, caso ID, modelo usado, resultado, confianza | Alta |
| Exportación datos | Usuario, tipo datos, volumen, destino, formato | Crítica |
| Eliminación datos | Usuario, tipo datos, ID, justificación, aprobador | Crítica |
| Compartir caso | Usuario origen, usuario destino, caso ID, permisos | Alta |
Eventos de sistema
| Evento | Datos registrados | Criticidad |
|---|---|---|
| Cambio configuración | Usuario, parámetro, valor anterior, valor nuevo | Alta |
| Actualización software | Usuario, versión anterior, versión nueva, componente | Alta |
| Backup ejecutado | Sistema, tipo, volumen, destino, duración | Media |
| Restauración datos | Usuario, fuente backup, datos restaurados | Crítica |
| Error sistema | Componente, error code, stack trace, contexto | Variable |
| Alerta seguridad | Tipo alerta, origen, target, acción tomada | Crítica |
| Modificación permisos | Admin, usuario afectado, permisos anteriores/nuevos | Crítica |
Arquitectura de logging
Componentes del sistema
Arquitectura del Sistema de Logging:
Fuentes de Logs (Entrada):
- Aplicación Web → Envía logs a Log Aggregator
- API Backend → Envía logs a Log Aggregator
- Base de Datos → Envía registros de auditoría a Log Aggregator
- Infraestructura AWS → Envía CloudTrail a Log Aggregator
- Servicios Externos → Envían webhooks a Log Aggregator
Procesamiento Central:
- Log Aggregator → Recopila y normaliza todos los logs
- Almacenamiento Centralizado → Almacena logs agregados de forma segura
Análisis y Acción (Salida):
- SIEM (Security Information and Event Management):
- Genera Alertas automáticas de seguridad
- Provee Dashboards de monitorización
- Backup Logs → Copia de seguridad del almacenamiento
Formato de logs
Estructura JSON Estándar de Log:
Todos los eventos se registran en formato JSON estructurado con los siguientes campos:
Campos Temporales y de Contexto:
- timestamp: Marca temporal ISO 8601 en UTC (ej: "2024-11-15T10:30:45.123Z")
- level: Nivel de severidad: INFO | WARN | ERROR | CRITICAL
Categorización del Evento:
- eventType: Tipo de evento: AUTH (autenticación) | DATA (datos clínicos) | SYSTEM (sistema) | SECURITY (seguridad)
- eventName: Nombre específico del evento (ej: "user.login.success")
Información del Usuario y Sesión:
- userId: Identificador único del usuario (UUID)
- sessionId: Identificador único de la sesión (UUID)
- ipAddress: Dirección IP origen (ej: "192.168.1.100")
- userAgent: Navegador/aplicación del usuario
Acción Realizada:
- resource: Recurso accedido (ej: "/api/patient/records")
- action: Tipo de acción: READ | WRITE | DELETE | EXECUTE
- result: Resultado de la acción: SUCCESS | FAILURE | PARTIAL
Detalles Específicos del Evento:
- details: Objeto con información adicional:
- patientId: ID del paciente (hasheado para privacidad)
- fields: Campos específicos accedidos o modificados
- previousValues: Valores anteriores (para modificaciones)
- newValues: Valores nuevos (para modificaciones)
Metadatos Técnicos:
- metadata: Información técnica:
- correlationId: ID para trazar transacciones relacionadas
- environment: Entorno (production, staging, etc.)
- version: Versión del sistema
- component: Componente que generó el log (ej: "api-gateway")
Implementación técnica
Captura de logs
Nivel aplicación:
- Middleware de logging en todas las APIs
- Interceptores en cliente web/móvil
- Decoradores en funciones críticas
- Triggers en base de datos
Nivel infraestructura:
- AWS CloudTrail para acciones AWS
- VPC Flow Logs para tráfico red
- CloudWatch Logs para aplicaciones
- S3 Access Logging para datos
Transmisión segura
- Cifrado en tránsito: TLS 1.3 mínimo
- Autenticación: API keys + mutual TLS
- Integridad: HMAC-SHA256 por mensaje
- No repudio: Firma digital de logs críticos
Almacenamiento
Requisitos de Almacenamiento:
Políticas de Retención de Logs:
| Categoría | Período | Tipo de Almacenamiento | Justificación |
|---|---|---|---|
| Retención estándar | 1 año | Online (acceso inmediato) | Auditorías operacionales, troubleshooting, análisis de tendencias |
| Retención archivo | 5 años | Offline (Glacier) | Requisitos ENS, auditorías regulatorias |
| Retención legal | 10 años | Deep Archive | Casos con implicaciones legales, disputas, investigaciones |
| Retención incidentes | Indefinida | Inmutable storage | Evidencia de incidentes de seguridad, violaciones de datos |
Configuración S3 para Almacenamiento de Logs:
| Parámetro | Valor | Propósito |
|---|---|---|
| Bucket | legit-health-audit-logs | Bucket dedicado para logs de auditoría |
| Región | eu-west-1 (Irlanda) | Región primaria de la UE |
| Cifrado | AES-256 (SSE-S3) | Cifrado en reposo automático |
| Versionado | Habilitado | Protección contra eliminación accidental |
| MFA Delete | Habilitado | Requiere MFA para eliminar objetos |
| Object Lock | COMPLIANCE mode | Inmutabilidad de logs (WORM) |
Política de Ciclo de Vida (Lifecycle):
| Edad del Log | Clase de Almacenamiento | Coste/Performance |
|---|---|---|
| 0-30 días | S3 Standard | Acceso inmediato, mayor coste |
| 31-90 días | S3 Standard-IA (Infrequent Access) | Acceso ocasional, coste medio |
| 91-365 días | S3 Glacier | Archivo de largo plazo, bajo coste |
| 366-1825 días (5 años) | S3 Glacier Deep Archive | Archivo profundo, coste mínimo |
Análisis y monitorización
Detección de anomalías
Patrones sospechosos monitorizados:
- Múltiples logins fallidos (>5 en 10 min)
- Acceso fuera de horario habitual
- Descarga masiva de datos (>100 registros)
- Cambios de configuración no autorizados
- Acceso desde IPs no conocidas
- Elevación de privilegios frecuente
- Patrones de acceso inusuales (ML-based)
Alertas automatizadas
| Condición | Severidad | Acción | Notificación |
|---|---|---|---|
| 10 login fallidos | Crítica | Bloqueo cuenta | CISO + Usuario |
| Acceso datos masivo | Alta | Log detallado | DPO + Manager |
| Cambio config crítica | Alta | Rollback auto | DevOps team |
| Acceso IP extranjera | Media | MFA adicional | Security team |
| Modificación audit trail | Crítica | Alerta inmediata | CISO + Legal |
Dashboards de auditoría
Dashboard operacional:
- Actividad por usuario/hora
- Top 10 usuarios más activos
- Recursos más accedidos
- Errores por componente
- Latencia de servicios
Dashboard seguridad:
- Intentos de acceso fallidos
- Actividad fuera de horario
- Cambios de privilegios
- Accesos a datos sensibles
- Anomalías detectadas
Dashboard compliance:
- Cobertura de auditoría
- Tiempo retención logs
- Accesos a logs de auditoría
- Cumplimiento normativo
- Evidencias para auditorías
Gestión de logs
Acceso a logs
Matriz de permisos:
| Rol | Lectura | Búsqueda | Exportación | Eliminación |
|---|---|---|---|---|
| Auditor | Sí | Sí | Sí | No |
| CISO | Sí | Sí | Sí | No |
| DPO | Sí* | Sí* | Sí* | No |
| DevOps | Sí** | Sí | No | No |
| Usuario | No | No | No | No |
*Solo logs relacionados con datos personales **Solo logs técnicos, no datos clínicos
Integridad de logs
Medidas de protección:
- Write-once storage (WORM)
- Hash chain entre entradas
- Timestamp certificado (TSA)
- Replicación multi-región
- Verificación periódica de integridad
Proceso de Verificación de Integridad:
Quién: Sistema automatizado (verificación continua) + Auditor (verificación manual)
Frecuencia:
- Automática: En cada escritura de log
- Periódica: Diariamente para todos los logs
Procedimiento de Verificación (3 Pasos):
Paso 1: Verificar Firma Digital
- Validar firma criptográfica del log
- Asegurar que el log no ha sido alterado desde su creación
- Si falla: Lanzar alerta crítica "Firma inválida" + notificar CISO
Paso 2: Verificar Hash Chain (Cadena de Hashes)
- Calcular hash esperado: hash(log anterior + contenido log actual)
- Comparar hash calculado con hash almacenado en el log
- Esta técnica detecta si se eliminó o insertó un log en la secuencia
- Si falla: Lanzar alerta crítica "Hash chain roto" + bloquear escritura + investigación forense
Paso 3: Verificar Timestamp Certificado
- Validar que el timestamp proviene de autoridad de sellado de tiempo (TSA) confiable
- Garantiza que el log no fue retroactivo o modificado temporalmente
- Si falla: Lanzar alerta crítica "Timestamp inválido" + marcar log como sospechoso
Resultado:
- Si todas las verificaciones pasan: Log marcado como ÍNTEGRO
- Si alguna falla: Activar protocolo de respuesta a incidentes de seguridad
Requisitos regulatorios específicos
FDA 21 CFR Part 11
- Audit trail automático: Sin posibilidad de desactivación
- Registros completos: Who, what, when, why
- Firma electrónica: Para acciones críticas
- No modificable: Prevención de alteración
- Disponible para inspección: Exportable en formato legible
RGPD
- Minimización: Solo datos necesarios
- Pseudonimización: Hash de IDs pacientes
- Acceso limitado: Need-to-know basis
- Portabilidad: Exportación en formato estructurado
- Derecho al olvido: Procedimiento de anonimización
ENS
- Registro continuo: 24x7 sin interrupciones
- Sincronización temporal: NTP con fuente fiable
- Protección logs: Categoría ALTA
- Análisis regular: Mínimo mensual
- Retención mínima: 2 años
Procedimientos operativos
Revisión rutinaria
Diaria:
- Verificar funcionamiento del sistema de logs
- Revisar alertas críticas
- Comprobar espacio de almacenamiento
Semanal:
- Análisis de tendencias de acceso
- Revisión de anomalías detectadas
- Validación de backups de logs
Mensual:
- Informe de actividad para management
- Revisión de efectividad de alertas
- Actualización de reglas de detección
Anual:
- Auditoría completa del sistema
- Revisión de políticas de retención
- Prueba de recuperación de logs archivados
Respuesta a solicitudes
Solicitud de auditoría:
- Recepción de solicitud formal
- Validación de autorización
- Extracción de logs relevantes
- Preparación de informe
- Entrega segura
- Registro de la solicitud
Solicitud legal:
- Verificación de orden judicial
- Notificación a legal/DPO
- Preservación de evidencias
- Extracción forense
- Cadena de custodia
- Documentación completa
Métricas e indicadores
| KPI | Objetivo | Frecuencia |
|---|---|---|
| Disponibilidad sistema logs | >99.9% | Continuo |
| Completitud de logs | >99% | Diario |
| Tiempo detección anomalías | <5 min | Por evento |
| False positive rate | <5% | Mensual |
| Logs perdidos | 0 | Mensual |
| Tiempo respuesta solicitudes | <48h | Por solicitud |
| Cobertura sistemas críticos | 100% | Trimestral |
Formación y concienciación
- Usuarios: Información sobre qué se registra y por qué
- Administradores: Gestión y análisis de logs
- Desarrolladores: Implementación de logging en código
- Auditores: Uso de herramientas de análisis
- Management: Interpretación de informes
Integración con otros controles
- OP.EXP.9: Registro específico de incidentes
- OP.EXP.10: Protección de los logs generados
- OP.MON.1: Detección de intrusión basada en logs
- OP.ACC.1-7: Registro de todos los accesos
- MP.INFO: Clasificación de logs según sensibilidad
Signature meaning
The signatures for the approval process of this document can be found in the verified commits at the repository for the QMS. As a reference, the team members who are expected to participate in this document and their roles in the approval process, as defined in Annex I Responsibility Matrix of the GP-001, are:
- Author: Team members involved
- Reviewer: JD-003, JD-004
- Approver: JD-001