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
3.1 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 |
3.2 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 |
3.3 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
4.1 Componentes del sistema
4.2 Formato de logs
Estructura JSON estándar:
{
"timestamp": "2024-11-15T10:30:45.123Z",
"level": "INFO|WARN|ERROR|CRITICAL",
"eventType": "AUTH|DATA|SYSTEM|SECURITY",
"eventName": "user.login.success",
"userId": "uuid-usuario",
"sessionId": "uuid-sesion",
"ipAddress": "192.168.1.100",
"userAgent": "Mozilla/5.0...",
"resource": "/api/patient/records",
"action": "READ|WRITE|DELETE|EXECUTE",
"result": "SUCCESS|FAILURE|PARTIAL",
"details": {
"patientId": "hash-paciente",
"fields": ["diagnosis", "treatment"],
"previousValues": {},
"newValues": {}
},
"metadata": {
"correlationId": "uuid-correlacion",
"environment": "production",
"version": "1.1.0",
"component": "api-gateway"
}
}
Implementación técnica
5.1 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
5.2 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
5.3 Almacenamiento
Requisitos de almacenamiento:
Retención estándar: 1 año online
Retención archivo: 5 años offline
Retención legal: 10 años (casos específicos)
Retención incidentes: Indefinida
Configuración S3:
Bucket: legit-health-audit-logs
Región: eu-west-1
Cifrado: AES-256 (SSE-S3)
Versionado: Habilitado
MFA Delete: Habilitado
Object Lock: COMPLIANCE mode
Lifecycle:
- 30 días: S3 Standard
- 90 días: S3 Standard-IA
- 365 días: S3 Glacier
- 1825 días: S3 Glacier Deep Archive
Análisis y monitorización
6.1 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)
6.2 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 |
6.3 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
7.1 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
7.2 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:
def verify_log_integrity(log_entry):
# Verificar firma digital
if not verify_signature(log_entry.signature):
raise IntegrityError("Firma inválida")
# Verificar hash chain
expected_hash = hash(previous_entry + log_entry.content)
if log_entry.hash != expected_hash:
raise IntegrityError("Hash chain roto")
# Verificar timestamp
if not verify_timestamp(log_entry.timestamp):
raise IntegrityError("Timestamp inválido")
return True
Requisitos regulatorios específicos
8.1 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
8.2 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
8.3 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
9.1 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
9.2 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