OP.NUB.1 Servicios en la nube
De acuerdo al ANEXO II, 2 Selección de medidas de seguridad, la medida de seguridad OP.NUB.1 Servicios en la nube sí aplica dada la categoría de seguridad del sistema.
OP.NUB.1 Protección de servicios en la nube
Documentos de referencia
-
ENS (Esquema Nacional de Seguridad):
- Real Decreto 311/2022 - Requisitos de seguridad para servicios cloud
- CCN-STIC 823 - Utilización de servicios en la nube
- CCN-STIC 884 - Guía de configuración segura para AWS
- CCN-STIC 885 - Guía de configuración segura para Azure
-
Normativa Internacional:
- ISO/IEC 27017:2015 - Code of practice for cloud services
- ISO/IEC 27018:2019 - Protection of PII in public clouds
- NIST SP 800-53 rev5 - Security and Privacy Controls
- CSA Cloud Controls Matrix v4.0
-
Regulación Sector Salud:
- EU MDR 2017/745 - Medical Device Regulation
- FDA Guidance - Cybersecurity in Medical Devices (2023)
- NIS2 Directive - Critical infrastructure protection
- HIPAA/HITECH - Healthcare data protection
-
AWS Specific Compliance:
- AWS Well-Architected Framework - Security Pillar
- AWS Security Best Practices
- AWS Shared Responsibility Model
- AWS Compliance Programs (SOC 2, ISO 27001, HIPAA)
Guía de implantación
- La protección de servicios en la nube para sistemas de categoría MEDIA con criticidad ALTA en Integridad, Autenticidad y Trazabilidad requiere:
- Modelo de responsabilidad compartida claramente definido
- Controles de seguridad específicos para entorno cloud
- Gestión de identidades y accesos robusta
- Cifrado de datos en tránsito y reposo
- Monitorización y auditoría continua
- Gestión de incidentes coordinada con el proveedor
- Cumplimiento regulatorio verificado
Implementación en Legit Health Plus
Arquitectura Cloud de Legit Health Plus
Visión General de la Infraestructura AWS
Legit Health Plus opera como un dispositivo médico SaaS Clase IIa desplegado completamente en AWS, con la siguiente arquitectura:
Infraestructura AWS de Legit Health Plus:
Regiones:
- Primaria: eu-west-1 (Irlanda)
- DR/Backup: eu-central-1 (Frankfurt)
Estructura de Cuentas:
| Cuenta | Criticidad | Propósito | Cumplimiento |
|---|---|---|---|
| Production | Crítica | Sistema productivo | HIPAA, GDPR, MDR, ENS |
| Staging | Alta | Validación pre-producción | GDPR, ENS |
| Development | Media | Desarrollo y pruebas | Interno |
Arquitectura de Red (VPCs):
| Entorno | Rango CIDR | Segmentación |
|---|---|---|
| Production | 10.0.0.0/16 | • Public subnets: Load balancers, NAT gateways • Private subnets: Application servers, databases • Isolated subnets: Critical data processing |
| Staging | 10.1.0.0/16 | Similar segmentation |
| Development | 10.2.0.0/16 | Similar segmentation |
1.2 Servicios AWS Críticos Utilizados
| Servicio AWS | Función | Criticidad | Controles ENS Aplicados |
|---|---|---|---|
| ECS Fargate | Contenedores de aplicación | CRÍTICA | mp.sw.1, op.exp.2 |
| RDS PostgreSQL | Base de datos clínica | CRÍTICA | mp.info.3, op.exp.11 |
| S3 | Almacenamiento de imágenes médicas | CRÍTICA | mp.info.4, mp.si.2 |
| CloudFront | CDN y protección DDoS | ALTA | mp.com.1, op.mon.1 |
| Cognito | Gestión de identidades | CRÍTICA | op.acc.1, op.acc.5 |
| KMS | Gestión de claves de cifrado | CRÍTICA | mp.cryp.1, op.exp.11 |
| CloudWatch | Monitorización y logs | ALTA | op.mon.2, op.exp.8 |
| Lambda | Procesamiento serverless | MEDIA | op.exp.2, mp.sw.2 |
| API Gateway | Gestión de APIs | ALTA | mp.com.2, op.acc.7 |
| Secrets Manager | Gestión de secretos | CRÍTICA | mp.cryp.2, op.exp.11 |
Modelo de Responsabilidad Compartida
Matriz de Responsabilidades AWS vs Legit Health
Matriz de Responsabilidad Compartida:
| Área | Responsable | Responsabilidades |
|---|---|---|
| Infraestructura Física | AWS | • Seguridad física de datacenters • Mantenimiento de hardware y red • Seguridad del hipervisor • Disponibilidad de infraestructura global |
| Servicios Gestionados | AWS | • Patching y backups de RDS • Durabilidad y disponibilidad de S3 • Infraestructura de gestión de claves KMS • Ubicaciones edge de CloudFront |
| Protección de Datos | Legit Health | • Clasificación y manejo de datos • Gestión de claves de cifrado • Políticas de control de acceso • Retención y eliminación de datos |
| Seguridad de Aplicación | Legit Health | • Seguridad del código de aplicación • Seguridad de imágenes de contenedores • Seguridad de APIs • Gestión de identidades y accesos |
| Cumplimiento Regulatorio | Legit Health | • Regulaciones de dispositivos médicos (MDR, FDA) • Privacidad de datos (GDPR, HIPAA) • Estándares de seguridad (ENS, ISO 27001) • Auditoría y monitorización |
Controles Específicos por Capa
| Capa | Responsable | Controles Implementados |
|---|---|---|
| Datos | Legit Health | Cifrado AES-256, clasificación, DLP |
| Aplicación | Legit Health | SAST, DAST, dependency scanning |
| Sistema Operativo | Compartido | Hardening, patching automático |
| Red | Compartido | Security groups, NACLs, WAF |
| Virtualización | AWS | Aislamiento, hypervisor security |
| Hardware | AWS | HSM, secure disposal, physical security |
| Instalaciones | AWS | Biometrics, CCTV, 24/7 security |
Gestión de Identidades y Accesos Cloud (IAM)
Estrategia IAM Multinivel
Estrategia IAM Multinivel:
El equipo de seguridad debe implementar una estrategia de gestión de identidades con múltiples proveedores:
Proveedores de Identidad:
- Primario: Azure AD B2C - Para profesionales sanitarios
- Secundario: AWS Cognito - Para pacientes
- Administrativo: AWS SSO - Para personal interno
Límites de Permisos por Entorno:
- Production: Política de límite estricta para prevenir escalada de privilegios
- Staging: Política de límite moderada para validación
- Development: Política de límite permisiva para desarrollo
Implementación del Principio de Menor Privilegio:
Para cada rol, el sistema debe:
- Crear política IAM con versión 2012-10-17
- Para cada permiso necesario:
- Especificar acciones permitidas
- Definir recursos específicos (no usar comodines cuando sea posible)
- Añadir condiciones de seguridad obligatorias
- Condiciones de seguridad obligatorias:
- IpAddress: Solo permitir desde VPC (10.0.0.0/8)
- SecureTransport: Requerir HTTPS siempre
- Tags de Principal: Verificar Environment y DataClassification
La implementación técnica debe mantenerse en la documentación de infraestructura.
Roles y Políticas Críticas
| Rol | Permisos | Condiciones | MFA Requerido |
|---|---|---|---|
| MedicalDataProcessor | S3:GetObject (medical images) | IP whitelist, time window | Sí |
| ClinicalAdmin | RDS:DescribeDBInstances | VPC only, tagged resources | Sí |
| SecurityAuditor | Read-only all services | CloudTrail enabled | Sí |
| IncidentResponder | Full access (emergency) | Break-glass procedure | Sí |
| DataScientist | SageMaker, S3 (anonymized) | Dev environment only | Sí |
Cifrado y Protección de Datos
Estrategia de Cifrado Multicapa
Estrategia de Cifrado Multicapa:
Cifrado de Datos en Reposo:
| Tipo de Dato | Algoritmo | Gestión de Claves | Rotación | Políticas Especiales |
|---|---|---|---|---|
| Imágenes Médicas en S3 | AES-256 | AWS KMS CMK | Anual | Denegar uploads sin cifrar |
| Datos Clínicos en RDS | AES-256 | AWS KMS CMK | Anual | Backups cifrados habilitados |
| Volúmenes EBS | AES-256 | AWS KMS | Según política | Cifrado por defecto en toda la cuenta |
Cifrado de Datos en Tránsito:
| Comunicación | Protocolo | Detalles | Gestión de Certificados |
|---|---|---|---|
| APIs Externas | TLS 1.3 | Cipher suite: ECDHE-RSA-AES256-GCM-SHA384 HSTS habilitado (max-age=31536000) | AWS Certificate Manager |
| Comunicaciones Internas VPC | AWS PrivateLink | Service mesh: AWS App Mesh con mTLS | Automática |
| Conexiones a Base de Datos | SSL/TLS | SSL/TLS requerido obligatoriamente | RDS managed |
Gestión de Claves:
| Tipo de Clave | Características | Auditoría |
|---|---|---|
| Master Keys (CMK) | Customer Managed, rotación automática anual, replicadas a región DR | CloudTrail en todas las operaciones |
| Data Keys | Generadas on-demand desde CMK, caché máximo 5 minutos | CloudTrail en todas las operaciones |
Data Loss Prevention (DLP)
Controles de Data Loss Prevention (DLP) en Cloud:
El sistema debe implementar controles automáticos de DLP para prevenir fugas de datos sensibles:
Patrones de Datos Sensibles a Detectar:
- DNI español (9 dígitos)
- Tarjetas de crédito (16 dígitos)
- Números NHS (formato británico)
- SSN estadounidense (formato XXX-XX-XXXX)
Niveles de Clasificación:
| Nivel | Nombre | Valor | Tratamiento |
|---|---|---|---|
| 0 | Public | Público | Sin restricciones especiales |
| 1 | Internal | Interno | Acceso solo empleados |
| 2 | Confidential | Confidencial | Acceso restringido |
| 3 | Medical | Médico | Cifrado adicional obligatorio |
| 4 | Critical | Crítico | Máxima protección |
Escaneo de Contenido en S3:
Antes de subir cualquier archivo a S3, el sistema debe:
- Clasificar el contenido automáticamente
- Si es nivel médico o superior:
- Aplicar cifrado adicional con KMS
- Registrar en auditoría
- Si contiene datos sensibles:
- Bloquear la subida O
- Redactar/enmascarar la información sensible
Políticas de Bucket:
Todos los buckets deben tener política que:
- Deniegue uploads sin cifrado
- Requiera cifrado KMS (aws:kms)
- Aplique a todos los objetos (*)
Seguridad de Red y Perímetro
Arquitectura de Seguridad en Profundidad
Arquitectura de Seguridad en Profundidad:
Capa 1 - Protección Edge:
| Servicio | Controles |
|---|---|
| CloudFront | • AWS Shield Standard (protección DDoS) • AWS WAF (firewall de aplicación) • Origin Access Identity (protección S3) • Geo-restriction (solo UE) |
| Route53 | • DNSSEC habilitado • Protección DDoS • Health checks con failover automático |
Capa 2 - Seguridad de Perímetro:
| Componente | Configuración |
|---|---|
| Internet Gateway | • Security groups restrictivos • Network ACLs (reglas stateless) • Flow logs habilitados |
| NAT Gateway | • Solo tráfico saliente para subnets privadas • Elastic IPs fijas • Monitorización CloudWatch |
Capa 3 - Segmentación Interna:
Security Groups - Ejemplo de aplicación médica:
- Inbound:
- Puerto 443 desde ALB security group
- Puerto 5432 (PostgreSQL) desde app security group
- Outbound:
- Puerto 443 hacia Internet (actualizaciones, APIs externas)
Network ACLs - Subnet privada:
| Regla | Protocolo | Puerto | Origen | Acción |
|---|---|---|---|---|
| 100 | TCP | 443 | 10.0.0.0/16 (VPC) | ALLOW |
| 200 | TCP | 5432 | 10.0.1.0/24 (subnet app) | ALLOW |
| 32767 | ALL | ALL | 0.0.0.0/0 | DENY (default) |
AWS WAF Rules para Dispositivo Médico
Reglas de AWS WAF para Dispositivo Médico:
El Web Application Firewall debe configurarse con las siguientes reglas:
Configuración General:
- Nombre: LegitHealthMedicalDeviceWAF
- Acción por defecto: BLOCK (denegar todo lo no explícitamente permitido)
Reglas Implementadas:
| Prioridad | Nombre | Propósito | Configuración | Acción |
|---|---|---|---|---|
| 1 | RateLimitAPI | Limitar tasa de peticiones | Máximo 2000 peticiones por IP | BLOCK si excede |
| 2 | SQLInjectionProtection | Proteger contra SQL injection | Detectar patrones SQLi en argumentos de consulta, con URL decode | BLOCK |
| 3 | MedicalAPIAccess | Permitir acceso APIs médicas | URIs que empiecen con /api/v1/medical/ (case insensitive) | ALLOW |
| 4 | GeoBlockingNonEU | Bloquear acceso fuera UE | Solo permitir: ES, FR, DE, IT, PT, NL, BE | BLOCK resto |
Estas reglas proporcionan defensa en profundidad específica para un dispositivo médico SaaS.
Monitorización y Auditoría Cloud
Stack de Observabilidad Cloud-Native
Stack de Observabilidad Cloud-Native:
CloudTrail - Auditoría de API:
- Configuración:
- Trail multi-región habilitado
- Validación de archivos de log habilitada
- Registrar todos los eventos de lectura y escritura
- Eventos de gestión incluidos
- Recursos de datos monitorizados: Objetos S3 de imágenes médicas, clusters RDS
- Integración:
- Logs enviados a CloudWatch Logs
- Almacenamiento en S3: bucket "audit-trail-medical-device"
- Notificaciones SNS habilitadas
- Cifrado con KMS CMK
CloudWatch - Métricas y Logs:
| Componente | Configuración | Detalles |
|---|---|---|
| Métricas Personalizadas | Namespaces: Medical, Security, Compliance | Métricas críticas: API latency p99, error rate, authentication failures, data access anomalies |
| Log Groups | /aws/ecs/medical-app /aws/rds/clinical-db /aws/lambda/image-processor | Retención: 2555 días (7 años requisito médico) Cifrado: KMS CMK |
| Alarmas Alta Prioridad | Unauthorized API calls Root account usage Config changes Security group changes | Notificación inmediata al equipo de seguridad |
AWS Config - Cumplimiento Continuo:
- Reglas Habilitadas:
- s3-bucket-public-read-prohibited
- rds-encryption-enabled
- iam-password-policy
- mfa-enabled-for-iam-console-access
- cloudtrail-enabled
- Remediación: Automática habilitada con notificación al equipo de seguridad
Security Information and Event Management (SIEM)
Integración SIEM en Cloud:
El equipo de seguridad debe implementar un SIEM que integre las siguientes fuentes de eventos:
- CloudTrail (auditoría de APIs)
- VPC Flow Logs (tráfico de red)
- CloudWatch Logs (aplicaciones)
- GuardDuty (detección de amenazas)
- Security Hub (hallazgos de seguridad)
- Access Analyzer (análisis de accesos)
Procesamiento de Eventos de Seguridad:
- Enriquecimiento: Añadir contexto adicional al evento (usuario, ubicación, historial)
- Cálculo de riesgo: Asignar puntuación de riesgo 0-100
- Respuesta automática según riesgo:
- >80 (Crítico): Activar respuesta a incidentes automática
- 60-80 (Alto): Crear alerta de seguridad
- <60: Almacenar para análisis
- Almacenamiento: Guardar todos los eventos para análisis forense posterior
Detección de Anomalías:
El sistema debe analizar ventanas temporales (ej: última hora) para detectar:
- Patrones de acceso inusuales: Desviación >3 sigmas = alerta de severidad alta
- Picos en uso de recursos: Detección de spikes anómalos = alerta de severidad media
Los detalles técnicos de implementación deben mantenerse en la documentación del SIEM.