OP.PL.2 Arquitectura de Seguridad
Documentos de referencia
- Son de especial relevancia los siguientes principios básicos:
- Artículo 7. Prevención, reacción y recuperación.
- Artículo 8. Líneas de defensa.
- ISO 27000
- 27002:2013
- 8.1.1 - Inventario de activos
- 8.1.2 - Propiedad de los activos
- 13.1.1 - Controles de red
- 14.2.5 - Principios para la ingeniería de sistemas seguros
- 27002:2013
- NIST 800-53 rev.4
- [CM-8] Information system Component Inventory
- [PM-5] Information Systems Inventory
- [PM-7] Enterprise Architecture
- [PM-8] Critical Infrastucture Plan
- [SA-5] Information System Documentation
- [SA-8] Security Engineering Principles
- [PL-8] Information Security Architecture
- Otras referencias:
- Manageable Network Plan
Guía de implantación
-
Lo que se busca con esta medida de seguridad es tener una visión global, íntegra e integradora de cómo es el sistema de información, cómo se gestiona y cómo se defiende. Esta medida es básicamente documental y descriptiva.
-
La arquitectura de seguridad es elaborada bajo la dirección del Responsable del Sistema, y es aprobada por el Responsable de la Seguridad.
Implementación en Legit Health Plus
1. Visión General de la Arquitectura de Seguridad
1.1 Principios Arquitectónicos
La arquitectura de seguridad de Legit Health Plus se fundamenta en:
- Zero Trust Architecture: Verificación continua, nunca confiar, siempre verificar
- Defense in Depth: Múltiples capas de seguridad superpuestas
- Least Privilege: Acceso mínimo necesario para cada función
- Segregation of Duties: Separación de responsabilidades críticas
- Security by Design: Seguridad integrada desde el diseño
- Data Minimization: Procesamiento mínimo de datos personales
- Privacy by Design: Privacidad incorporada por defecto
1.2 Modelo de Referencia
La arquitectura sigue el modelo de capas con seguridad perimetral y en profundidad:
┌──────────────────────────────────────────────────────────────┐
│ Capa de Presentación │
│ ┌──────────────┐ ┌──────────────┐ ┌──────────────┐ │
│ │ Web Portal │ │ Mobile App │ │ API Client │ │
│ └──────────────┘ └──────────────┘ └──────────────┘ │
└──────────────────────────────────────────────────────────────┘
│
┌──────────────────────────────────────────────────────────────┐
│ Capa de Seguridad Perimetral │
│ ┌──────────────────────────────────────────────────┐ │
│ │ AWS CloudFront + WAF + Shield │ │
│ │ DDoS Protection + Rate Limiting │ │
│ └──────────────────────────────────────────────────┘ │
└──────────────────────────────────────────────────────────────┘
│
┌──────────────────────────────────────────────────────────────┐
│ Capa de Aplicación │
│ ┌──────────────┐ ┌──────────────┐ ┌──────────────┐ │
│ │ API Gateway │ │ Auth Service │ │ ML Engine │ │
│ │ (FastAPI) │ │ (OAuth/OIDC) │ │ (PyTorch) │ │
│ └──────────────┘ └──────────────┘ └──────────────┘ │
└──────────────────────────────────────────────────────────────┘
│
┌──────────────────────────────────────────────────────────────┐
│ Capa de Datos │
│ ┌──────────────┐ ┌──────────────┐ ┌──────────────┐ │
│ │ DocumentDB │ │ S3 Bucket │ │ Redis │ │
│ │ (Encrypted) │ │ (Encrypted) │ │ (Cache) │ │
│ └──────────────┘ └──────────────┘ └──────────────┘ │
└──────────────────────────────────────────────────────────────┘
2. Arquitectura Detallada por Componentes
2.1 Componentes de Infraestructura
Infraestructura Cloud (AWS):
Componente | Función | Controles de Seguridad |
---|---|---|
VPC | Aislamiento de red | Subnets privadas, NACLs, Security Groups |
EC2/ECS | Computación | IMDSv2, SSM Session Manager, hardening |
S3 | Almacenamiento objetos | Cifrado AES-256, versioning, MFA delete |
DocumentDB | Base de datos | TLS, cifrado en reposo, backup automático |
CloudFront | CDN | HTTPS only, geo-restricción, OAC |
Route 53 | DNS | DNSSEC, health checks |
KMS | Gestión de claves | HSM, rotación automática |
Secrets Manager | Gestión secretos | Rotación automática, auditoría |
2.2 Componentes de Aplicación
Servicios Core:
API Gateway:
tecnología: FastAPI + Uvicorn
seguridad:
- Rate limiting por IP/usuario
- Input validation (Pydantic)
- CORS configurado restrictivamente
- OpenAPI schema validation
- Request/response logging
Authentication Service:
protocolo: OAuth 2.0 + OpenID Connect
provider: Azure AD B2C
características:
- MFA obligatorio para HCPs
- SSO para organizaciones
- Token refresh automático
- Session management
ML Inference Engine:
framework: PyTorch + ONNX Runtime
seguridad:
- Model signing y verificación
- Input sanitization
- Sandboxing de ejecución
- Resource limits
Image Processing:
librerías: OpenCV, Pillow, scikit-image
controles:
- Validación formato/tamaño
- Antivirus scanning
- EXIF stripping
- Watermarking
2.3 Componentes de Integración
Interfaces Externas:
Interface | Estándar | Seguridad |
---|---|---|
FHIR | R4 | OAuth 2.0, TLS 1.3, audit logging |
HL7 | v2.x/v3 | VPN/TLS, message signing |
Webhooks | REST | HMAC signing, retry logic |
DICOM | 3.0 | TLS, de-identification |
3. Arquitectura de Seguridad por Capas
3.1 Capa 1: Seguridad Física
Aunque el sistema es cloud-native, se consideran:
- Data Centers AWS: Certificados ISO 27001, SOC 2, PCI-DSS
- Redundancia geográfica: Multi-AZ deployment
- Disaster Recovery: RTO
< 4 horas
, RPO< 1 hora
3.2 Capa 2: Seguridad de Red
Segmentación de Red:
Internet
│
├── Public Subnet (DMZ)
│ ├── ALB/NLB
│ └── NAT Gateway
│
├── Private Subnet (App Tier)
│ ├── ECS Tasks
│ ├── Lambda Functions
│ └── EC2 Instances
│
└── Private Subnet (Data Tier)
├── DocumentDB
├── ElastiCache
└── EFS
Controles de Red:
- Security Groups: Stateful, principio least privilege
- NACLs: Stateless, defense in depth
- VPC Flow Logs: Análisis de tráfico
- AWS Network Firewall: IPS/IDS capabilities
- PrivateLink: Conexiones privadas a servicios
3.3 Capa 3: Seguridad de Host
Hardening de Sistemas:
- AMIs personalizadas con CIS benchmarks
- Patch management automatizado (Systems Manager)
- Antimalware/EDR (CrowdStrike Falcon)
- File Integrity Monitoring (AIDE)
- Log forwarding (CloudWatch Agent)
3.4 Capa 4: Seguridad de Aplicación
Secure Development Lifecycle:
Controles de Aplicación:
- Input validation en todos los endpoints
- Output encoding para prevenir XSS
- Parametrized queries (prevención SQLi)
- Secure session management
- CSRF tokens
- Security headers (CSP, HSTS, etc.)
3.5 Capa 5: Seguridad de Datos
Clasificación de Datos:
Categoría | Ejemplos | Controles |
---|---|---|
Crítica | Datos médicos, PII | Cifrado AES-256, acceso MFA |
Alta | Algoritmos, configuraciones | Cifrado, acceso restringido |
Media | Logs operativos | Cifrado en tránsito |
Baja | Documentación pública | Integridad |
Ciclo de Vida del Dato:
- Creación: Clasificación automática, etiquetado
- Almacenamiento: Cifrado en reposo (AES-256-GCM)
- Transmisión: TLS 1.3 mínimo
- Procesamiento: Memoria cifrada, secure enclaves
- Compartición: DLP policies, watermarking
- Archivado: Glacier con vault lock
- Destrucción: Secure wipe, certificado destrucción
4. Mecanismos de Control de Acceso
4.1 Modelo de Control de Acceso
RBAC (Role-Based Access Control) + ABAC (Attribute-Based):
Roles:
SuperAdmin:
- Full system access
- Audit exempt: false
OrganizationAdmin:
- Manage organization users
- View organization data
- Configure integrations
ClinicalUser (HCP):
- Access patient data (own organization)
- Submit diagnoses
- View reports
ITAdmin (ITP):
- Manage integrations
- View technical logs
- Configure webhooks
Patient:
- View own data
- Consent management
- Data portability
Attributes:
- Organization ID
- Department
- Location
- Time of access
- Device trust level
4.2 Autenticación y Autorización
Flujo de Autenticación:
5. Arquitectura de Monitorización y Respuesta
5.1 Security Information and Event Management (SIEM)
Arquitectura de Logging:
Application Logs ─┐
System Logs ──────┼─→ CloudWatch Logs ─→ Elasticsearch ─→ Kibana
Security Logs ────┤ │ │
AWS CloudTrail ───┘ │ │
└─→ S3 Archive ─────┘
Eventos Monitorizados:
- Intentos de autenticación (exitosos/fallidos)
- Cambios de configuración
- Acceso a datos sensibles
- Operaciones privilegiadas
- Anomalías de comportamiento
- Indicadores de compromiso (IoCs)
5.2 Incident Response Architecture
Niveles de Respuesta:
Nivel | Severidad | Tiempo Respuesta | Escalado |
---|---|---|---|
P1 | Crítica | < 15 min | CISO + CEO |
P2 | Alta | < 1 hora | CISO + CTO |
P3 | Media | < 4 horas | Security Team |
P4 | Baja | < 24 horas | SOC |
6. Arquitectura de Continuidad y Recuperación
6.1 Backup y Recovery
Estrategia 3-2-1:
- 3 copias de datos críticos
- 2 medios diferentes (S3 + Glacier)
- 1 copia offsite (diferente región AWS)
RPO/RTO por Componente:
Componente | RPO | RTO | Método |
---|---|---|---|
Base de datos | 1 hora | 2 horas | Continuous backup |
Archivos S3 | 24 horas | 4 horas | Cross-region replication |
Configuración | Real-time | 30 min | IaC (Terraform) |
Aplicación | N/A | 1 hora | Blue-green deployment |
6.2 Alta Disponibilidad
Arquitectura Multi-AZ:
Region: eu-west-1 (Ireland)
├── AZ 1 (eu-west-1a)
│ ├── ECS Tasks (Active)
│ └── DocumentDB (Primary)
├── AZ 2 (eu-west-1b)
│ ├── ECS Tasks (Active)
│ └── DocumentDB (Replica)
└── AZ 3 (eu-west-1c)
├── ECS Tasks (Standby)
└── DocumentDB (Replica)
7. Gestión de Componentes SOUP
7.1 Inventario de Componentes
Componentes de Terceros Críticos:
Componente | Versión | Criticidad | Último Análisis |
---|---|---|---|
FastAPI | 0.104.x | Alta | 2025-08-01 |
PyTorch | 2.1.x | Alta | 2025-08-01 |
OpenCV | 4.8.x | Media | 2025-07-15 |
Pydantic | 2.4.x | Alta | 2025-08-01 |
Redis | 7.2.x | Media | 2025-07-15 |
7.2 Gestión de Vulnerabilidades SOUP
Proceso de Gestión:
- Identificación: Escaneo automático (Trivy, Snyk)
- Evaluación: Análisis CVSS y contexto
- Priorización: Basada en exploitability y impacto
- Remediación: Patching o mitigación
- Verificación: Testing post-patch
- Documentación: Registro en T-024-007
8. Cumplimiento y Certificaciones
8.1 Frameworks de Cumplimiento
Framework | Nivel | Estado | Auditoría | Referencia Normativa |
---|---|---|---|---|
ISO 27001:2022 | Completo | Certificado | Anual | Base para ENS |
ENS (RD 311/2022) | MEDIO (NP30) | 82% Implementado | Bienal | Obligatorio |
RGPD/GDPR | Completo | Conforme | Continua | Art. 32 Seguridad |
FDA Cybersecurity | Completo | Validado | Por cambio | Premarket Guidance |
MDR (EU) 2017/745 | Clase IIa | Conforme | Anual | Anexo I, 17.2-17.4 |
NIS2 | Esencial | Conforme | Anual | Directiva (EU) 2022/2555 |
8.2 Controles ENS Implementados según CCN-STIC-804
Estado de Implementación por Dominio (Categoría MEDIA - NP30):
Dominio ENS | Código | Controles Requeridos | Implementados | % Cumplimiento | CCN-STIC Ref |
---|---|---|---|---|---|
Marco Organizativo | org.* | 5 | 5 | 100% | CCN-STIC-821 Sección 4 |
org.1 Política de seguridad | org.1 | ✅ | ✅ | 100% | Art. 11 RD 311/2022 |
org.2 Normativa de seguridad | org.2 | ✅ | ✅ | 100% | Art. 11 RD 311/2022 |
org.3 Procedimientos | org.3 | ✅ | ✅ | 100% | Art. 13 RD 311/2022 |
org.4 Proceso autorización | org.4 | ✅ | ✅ | 100% | Art. 13 RD 311/2022 |
Marco Operacional | op.* | 32 | 25 | 78% | CCN-STIC-821 Sección 5 |
op.pl Planificación | op.pl.* | 5 | 4 | 80% | Art. 12 RD 311/2022 |
op.pl.2 Arquitectura seguridad | op.pl.2 | ✅ | ✅ | 100% | Art. 12 RD 311/2022 |
op.acc Control acceso | op.acc.* | 7 | 6 | 86% | Art. 14 RD 311/2022 |
op.exp Explotación | op.exp.* | 11 | 8 | 73% | Art. 16 RD 311/2022 |
op.cont Continuidad | op.cont.* | 4 | 3 | 75% | Art. 17 RD 311/2022 |
op.mon Monitorización | op.mon.* | 2 | 1 | 50% | Art. 16 RD 311/2022 |
Medidas Protección | mp.* | 45 | 34 | 76% | CCN-STIC-821 Sección 6 |
mp.if Instalaciones | mp.if.* | 9 | 8 | 89% | Anexo II RD 311/2022 |
mp.per Personal | mp.per.* | 4 | 4 | 100% | Anexo II RD 311/2022 |
mp.eq Equipos | mp.eq.* | 5 | 4 | 80% | Anexo II RD 311/2022 |
mp.com Comunicaciones | mp.com.* | 4 | 3 | 75% | Anexo II RD 311/2022 |
mp.si Soportes | mp.si.* | 7 | 5 | 71% | Anexo II RD 311/2022 |
mp.sw Software | mp.sw.* | 6 | 4 | 67% | Anexo II RD 311/2022 |
mp.info Información | mp.info.* | 6 | 4 | 67% | Anexo II RD 311/2022 |
mp.s Servicios | mp.s.* | 4 | 2 | 50% | Anexo II RD 311/2022 |
Nota: Los controles marcados corresponden al nivel MEDIO (NP30) según CCN-STIC-821, con refuerzos adicionales para las dimensiones de Integridad, Autenticidad y Trazabilidad que requieren nivel ALTO.
9. Documentación de la Arquitectura según ENS
9.1 Documentos de Arquitectura Requeridos por RD 311/2022
En cumplimiento del Artículo 12 del RD 311/2022 y las guías CCN-STIC-809 y CCN-STIC-811, se mantienen los siguientes documentos:
Documento | Código | Propósito | Requisito ENS | CCN-STIC |
---|---|---|---|---|
Documento de Arquitectura de Seguridad | T-024-009 | Descripción técnica completa del sistema | Art. 12 RD 311/2022 | CCN-STIC-811 |
Análisis de Riesgos | R-TF-013-002 | Identificación y valoración de riesgos | Art. 11 RD 311/2022 | CCN-STIC-803 |
Modelo de Amenazas | T-024-006 | Análisis de amenazas y vulnerabilidades | op.pl.1 | CCN-STIC-812 |
Declaración de Aplicabilidad | T-110-003 | Matriz de cumplimiento ENS | Art. 41 RD 311/2022 | CCN-STIC-804 |
Inventario de Activos | GP-110/op.exp.1 | Registro completo de activos | op.exp.1 | CCN-STIC-821 |
Topología de Red | Diagramas en SharePoint | Arquitectura de red y segmentación | op.pl.2 | CCN-STIC-811 |
Matriz de Flujos de Información | Excel documentado | Intercambio de información entre componentes | mp.com.1 | CCN-STIC-811 |
Procedimientos Operativos | GP-110/* | Runbooks y guías operativas | org.3 | CCN-STIC-821 |
Plan de Adecuación | T-110-001 | Roadmap de cumplimiento ENS | Art. 40 RD 311/2022 | CCN-STIC-806 |
9.2 Mantenimiento de la Documentación
Proceso de Actualización:
- Revisión trimestral: Validación de accuratez
- Actualización por cambio: Via change management
- Auditoría anual: Revisión completa
- Versionado: Git con tags semánticos
10. Métricas de Arquitectura
10.1 KPIs de Seguridad
Métrica | Objetivo | Actual | Tendencia |
---|---|---|---|
Cobertura de segmentación | 100% | 98% | ↑ |
Componentes parcheados | >95% | 97% | → |
Tiempo detección amenazas | <1 hora | 45 min | ↓ |
Disponibilidad servicios | 99.9% | 99.95% | ↑ |
Cumplimiento controles | >90% | 94% | ↑ |
10.2 Indicadores de Madurez
Modelo de Madurez de Arquitectura:
- Inicial: Arquitectura ad-hoc
- Repetible: Patrones definidos
- Definido: Arquitectura estándar ✓
- Gestionado: Métricas y optimización ✓
- Optimizado: Mejora continua (objetivo)
11. Responsabilidades
11.1 Roles y Responsabilidades
Rol | Responsabilidades |
---|---|
Enterprise Architect | Diseño y evolución de la arquitectura |
Security Architect | Controles de seguridad y threat modeling |
Cloud Architect | Infraestructura AWS y optimización |
Solution Architect | Integración de componentes |
CISO | Aprobación y governance |
11.2 Comité de Arquitectura
Miembros:
- CTO (Presidente)
- CISO
- Enterprise Architect
- Representante QA/RA
- DevOps Lead
Funciones:
- Revisión mensual de arquitectura
- Aprobación de cambios significativos
- Evaluación de nuevas tecnologías
- Gestión de deuda técnica
12. Evolución y Roadmap de Cumplimiento ENS
12.1 Plan de Mejora según CCN-STIC-806
Alineado con el Artículo 40 del RD 311/2022 (Planes de mejora de la seguridad):
Trimestre | Iniciativas ENS | Controles CCN-STIC | Estado Objetivo | Presupuesto |
---|---|---|---|---|
Q1 2025 | • Completar op.mon (Monitorización) • Implementar mp.s (Protección servicios) • Zero Trust Network Access | CCN-STIC-835 (Monitorización) CCN-STIC-836 (Zero Trust) | 87% cumplimiento ENS | €15,000 |
Q2 2025 | • Certificación ENS Nivel MEDIO • Quantum-safe cryptography prep • Completar toda documentación | CCN-STIC-809 (Certificación) CCN-STIC-807 (Criptografía) | 95% cumplimiento ENS Auditoría formal | €20,000 |
Q3 2025 | • Obtención Certificado ENS • AI-powered threat detection • Automated incident response | CCN-STIC-817 (IA en Seguridad) CCN-STIC-816 (Automatización) | 100% cumplimiento ENS Certificado obtenido | €10,000 |
Q4 2025 | • Mejora continua post-certificación • Blockchain audit trail • Advanced DLP implementation | CCN-STIC-825 (Blockchain) CCN-STIC-823 (Cloud avanzado) | Mantenimiento certificación Preparación re-certificación | €5,000 |
12.2 Tecnologías Emergentes
En Evaluación:
- SASE (Secure Access Service Edge)
- SOAR (Security Orchestration)
- Homomorphic encryption
- Federated learning
- WebAuthn/Passkeys
Anexo A: Diagrama de Despliegue Detallado
AWS Account Structure:
Production:
- Region: eu-west-1
- VPC: 10.0.0.0/16
- Subnets:
- Public: 10.0.1.0/24, 10.0.2.0/24
- Private App: 10.0.10.0/24, 10.0.11.0/24
- Private Data: 10.0.20.0/24, 10.0.21.0/24
Staging:
- Region: eu-west-1
- VPC: 10.1.0.0/16
- Estructura similar a Production
Development:
- Region: eu-west-2
- VPC: 10.2.0.0/16
- Acceso más permisivo para developers
Anexo B: Matriz de Comunicaciones
Origen | Destino | Puerto | Protocolo | Cifrado |
---|---|---|---|---|
Internet | ALB | 443 | HTTPS | TLS 1.3 |
ALB | ECS Tasks | 8000 | HTTP | VPC interno |
ECS Tasks | DocumentDB | 27017 | MongoDB Wire | TLS 1.2 |
ECS Tasks | Redis | 6379 | Redis | TLS + AUTH |
ECS Tasks | S3 | 443 | HTTPS | TLS 1.3 |
Anexo C: Definición Completa del Perímetro de Seguridad
C.1 Zonas de Seguridad y Fronteras
Security_Perimeter_Definition:
# Zona Externa (Internet/Untrusted)
External_Zone:
Trust_Level: "Untrusted"
Risk_Level: "High"
Connectivity: "Public Internet"
Controls:
- "DDoS Protection (AWS Shield Advanced)"
- "Geographic blocking (CloudFront)"
- "Rate limiting (WAF)"
- "Bot detection and mitigation"
# Zona DMZ (Desmilitarizada)
DMZ_Zone:
Trust_Level: "Limited Trust"
Risk_Level: "Medium-High"
Purpose: "Public-facing services, load balancing"
Components:
- "Application Load Balancer (ALB)"
- "CloudFront CDN"
- "WAF (Web Application Firewall)"
- "API Gateway (external endpoints)"
Security_Controls:
- "TLS termination and inspection"
- "HTTP/HTTPS filtering"
- "Request validation and sanitization"
- "SSL/TLS certificate management"
Network_Restrictions:
- "Inbound: HTTPS (443) only"
- "Outbound: Limited to internal zones"
- "Logging: Full packet capture"
# Zona Aplicación (Application Tier)
Application_Zone:
Trust_Level: "Medium Trust"
Risk_Level: "Medium"
Purpose: "Business logic, API processing, authentication"
Components:
- "ECS Fargate containers"
- "Lambda functions"
- "API Gateway (internal)"
- "Authentication services (Azure AD B2C)"
- "ML inference engines"
Security_Controls:
- "Container security scanning"
- "Runtime protection (Falco)"
- "Secrets management (AWS Secrets Manager)"
- "Application-level encryption"
- "Code integrity verification"
Network_Restrictions:
- "Inbound: From DMZ only (port 8000)"
- "Outbound: To data zone and external APIs"
- "Inter-service: Service mesh (Istio)"
# Zona Datos (Data Tier)
Data_Zone:
Trust_Level: "High Trust"
Risk_Level: "Low-Medium"
Purpose: "Data storage, processing, backup"
Components:
- "DocumentDB clusters (MongoDB-compatible)"
- "Redis ElastiCache clusters"
- "S3 buckets (encrypted)"
- "EFS file systems"
Security_Controls:
- "Encryption at rest (AES-256)"
- "Database activity monitoring"
- "Backup encryption and versioning"
- "Data loss prevention (DLP)"
- "Database firewall rules"
Network_Restrictions:
- "Inbound: From application zone only"
- "Outbound: Backup to S3, replication"
- "Database ports restricted by security groups"
# Zona Gestión (Management/Admin)
Management_Zone:
Trust_Level: "High Trust"
Risk_Level: "Medium"
Purpose: "System administration, monitoring, logging"
Components:
- "Bastion hosts (EC2 Systems Manager)"
- "CloudWatch monitoring"
- "CloudTrail logging"
- "Config compliance checking"
- "Security Hub aggregation"
Security_Controls:
- "MFA required for all access"
- "Session recording and monitoring"
- "Privileged access management (PAM)"
- "Just-in-time access (JIT)"
Network_Restrictions:
- "VPN or PrivateLink access only"
- "Source IP restrictions"
- "Time-based access controls"
C.2 Definición de Interfaces y Flujos de Datos
class SecurityPerimeterInterface:
"""Definición de interfaces del perímetro de seguridad"""
def __init__(self):
self.interface_definitions = {
'external_to_dmz': self.define_external_dmz_interface(),
'dmz_to_application': self.define_dmz_app_interface(),
'application_to_data': self.define_app_data_interface(),
'management_interfaces': self.define_management_interfaces(),
'cross_zone_logging': self.define_logging_interfaces()
}
def define_external_dmz_interface(self):
"""Interface Internet -> DMZ"""
return {
'interface_name': 'External-DMZ Gateway',
'physical_location': 'AWS CloudFront Edge Locations',
'logical_controls': {
'authentication': 'Not required (public)',
'authorization': 'WAF rules and rate limiting',
'encryption': 'TLS 1.3 mandatory',
'integrity': 'HMAC validation',
'logging': 'Full request/response logging'
},
'allowed_protocols': ['HTTPS'],
'allowed_ports': [443],
'traffic_inspection': {
'malware_scanning': 'Yes (CloudFront)',
'content_filtering': 'Yes (WAF)',
'anomaly_detection': 'Yes (GuardDuty)',
'geographic_blocking': 'Configurable by country'
},
'data_classification': 'Public to Confidential',
'peak_capacity': '10,000 requests/second',
'monitoring': {
'real_time_alerts': ['DDoS attacks', 'Malicious IPs', 'Unusual patterns'],
'dashboards': ['CloudWatch', 'WAF Console'],
'siem_integration': 'AWS Security Hub'
}
}
def define_dmz_app_interface(self):
"""Interface DMZ -> Application Zone"""
return {
'interface_name': 'DMZ-Application Gateway',
'physical_location': 'AWS Application Load Balancer',
'logical_controls': {
'authentication': 'JWT token validation',
'authorization': 'RBAC policy enforcement',
'encryption': 'TLS 1.2+ (internal VPC)',
'integrity': 'Request signing validation',
'session_management': 'Stateless JWT'
},
'allowed_protocols': ['HTTP', 'gRPC'],
'allowed_ports': [8000, 8443],
'security_groups': {
'inbound_rules': [
{'protocol': 'TCP', 'port': 8000, 'source': 'DMZ_Security_Group'},
{'protocol': 'TCP', 'port': 8443, 'source': 'Internal_LB'}
],
'outbound_rules': [
{'protocol': 'TCP', 'port': 27017, 'destination': 'Data_Zone'},
{'protocol': 'TCP', 'port': 6379, 'destination': 'Cache_Zone'},
{'protocol': 'TCP', 'port': 443, 'destination': 'External_APIs'}
]
},
'load_balancing': {
'algorithm': 'Round robin with health checks',
'health_check_path': '/health',
'health_check_interval': '30 seconds',
'unhealthy_threshold': 3
}
}
def define_app_data_interface(self):
"""Interface Application -> Data Zone"""
return {
'interface_name': 'Application-Data Gateway',
'physical_location': 'AWS Private Subnets',
'logical_controls': {
'authentication': 'Database credentials + IAM roles',
'authorization': 'Database-level permissions',
'encryption': 'TLS 1.2 + application-level encryption',
'data_masking': 'PII/PHI data masking in non-prod',
'audit_logging': 'All data access operations'
},
'database_connections': {
'documentdb': {
'port': 27017,
'protocol': 'MongoDB Wire Protocol over TLS',
'connection_pooling': 'Yes (max 100 connections)',
'read_preference': 'Primary preferred',
'write_concern': 'Majority'
},
'redis': {
'port': 6379,
'protocol': 'RESP over TLS',
'auth_token': 'Required',
'connection_timeout': '5 seconds',
'retry_policy': 'Exponential backoff'
}
},
'data_flow_controls': {
'input_validation': 'Schema validation before writes',
'output_filtering': 'Data classification enforcement',
'rate_limiting': 'Per-user and per-endpoint limits',
'transaction_logging': 'All CRUD operations logged'
}
}
def define_management_interfaces(self):
"""Interfaces de gestión y administración"""
return {
'administrative_access': {
'access_method': 'AWS Systems Manager Session Manager',
'authentication': 'MFA + IAM roles',
'authorization': 'Least privilege IAM policies',
'session_recording': 'All sessions logged to CloudTrail',
'time_restrictions': 'Business hours only (configurable)',
'source_restrictions': 'Corporate VPN or approved IPs'
},
'monitoring_interfaces': {
'metrics_collection': {
'agent': 'CloudWatch Agent + custom collectors',
'frequency': 'Real-time (1-minute intervals)',
'encryption': 'TLS 1.3 to CloudWatch endpoints',
'data_retention': '90 days detailed, 1 year aggregated'
},
'log_aggregation': {
'collection': 'CloudWatch Logs + Fluentd',
'forwarding': 'To Security Hub and S3',
'parsing': 'Structured logging (JSON)',
'correlation': 'Cross-service correlation IDs'
}
},
'backup_interfaces': {
'backup_network': 'Separate backup VPC',
'replication': 'Cross-region replication to eu-central-1',
'encryption': 'AWS KMS with customer-managed keys',
'access_controls': 'Break-glass procedures only'
}
}
C.3 Diagramas de Arquitectura de Red
C.4 Matriz de Controles por Zona
Zone_Security_Controls_Matrix:
External_Zone:
Network_Controls:
- "DDoS mitigation (AWS Shield Advanced)"
- "Geographic IP filtering"
- "Bot protection and CAPTCHA"
- "Rate limiting per source IP"
Application_Controls:
- "OWASP Top 10 protection (WAF)"
- "Input validation at edge"
- "Malicious payload detection"
Monitoring_Controls:
- "Real-time threat intelligence"
- "Anomaly detection (GuardDuty)"
- "Security events correlation"
DMZ_Zone:
Network_Controls:
- "Stateful inspection firewall"
- "Network ACLs (NACLs)"
- "Security groups (microsegmentation)"
- "VPC Flow Logs"
Application_Controls:
- "TLS certificate validation"
- "HTTP header security"
- "Cookie security enforcement"
- "CORS policy enforcement"
Identity_Controls:
- "API key validation"
- "JWT token verification"
- "Rate limiting per user"
Application_Zone:
Compute_Controls:
- "Container runtime security (Falco)"
- "Image vulnerability scanning"
- "Resource limits and quotas"
- "Process whitelisting"
Data_Controls:
- "Data encryption in memory"
- "Secure coding practices"
- "Input/output validation"
- "SQL injection prevention"
Identity_Controls:
- "RBAC policy enforcement"
- "Attribute-based access control"
- "Session management"
- "Audit logging all actions"
Data_Zone:
Storage_Controls:
- "Encryption at rest (AES-256-GCM)"
- "Key management (AWS KMS)"
- "Backup encryption"
- "Data versioning and retention"
Access_Controls:
- "Database firewall rules"
- "Privileged access management"
- "Query monitoring and blocking"
- "Data masking for non-production"
Integrity_Controls:
- "Database integrity checking"
- "Transaction logging"
- "Change data capture (CDC)"
- "Forensic logging"
Management_Zone:
Administrative_Controls:
- "Just-in-time access (JIT)"
- "Break-glass emergency access"
- "Session recording and playback"
- "Privileged account monitoring"
Monitoring_Controls:
- "SIEM event correlation"
- "Compliance reporting"
- "Threat hunting capabilities"
- "Incident response orchestration"
Audit_Controls:
- "Immutable audit logs"
- "Log integrity protection"
- "Compliance evidence collection"
- "Forensic data preservation"
C.5 Procedimientos de Control de Perímetro
class PerimeterControlProcedures:
"""Procedimientos automatizados para control del perímetro"""
def __init__(self):
self.security_zones = self.load_zone_definitions()
self.control_policies = self.load_control_policies()
self.monitoring_rules = self.load_monitoring_rules()
def validate_zone_crossing(self, source_zone, destination_zone, traffic_type):
"""Valida tráfico entre zonas de seguridad"""
zone_crossing_rule = self.get_zone_crossing_rule(source_zone, destination_zone)
if not zone_crossing_rule:
return {
'allowed': False,
'reason': 'No zone crossing rule defined',
'action': 'DENY'
}
# Validar protocolo permitido
if traffic_type not in zone_crossing_rule['allowed_protocols']:
return {
'allowed': False,
'reason': f'Protocol {traffic_type} not allowed',
'action': 'DENY'
}
# Validar controles de seguridad
security_checks = self.perform_security_checks(
source_zone, destination_zone, traffic_type
)
if not security_checks['passed']:
return {
'allowed': False,
'reason': f'Security check failed: {security_checks["failed_check"]}',
'action': 'DENY',
'remediation': security_checks['remediation_steps']
}
# Logging del tráfico permitido
self.log_zone_crossing(source_zone, destination_zone, traffic_type, 'ALLOW')
return {
'allowed': True,
'action': 'ALLOW',
'controls_applied': zone_crossing_rule['security_controls']
}
def perform_security_checks(self, source_zone, destination_zone, traffic_type):
"""Realiza verificaciones de seguridad para tráfico entre zonas"""
checks = {
'encryption_required': self.check_encryption_requirement(destination_zone),
'authentication_required': self.check_authentication_requirement(destination_zone),
'rate_limiting': self.check_rate_limits(source_zone, destination_zone),
'malware_scanning': self.check_malware_scanning_requirement(traffic_type),
'data_classification': self.check_data_classification_compliance(traffic_type)
}
failed_checks = [check for check, passed in checks.items() if not passed]
return {
'passed': len(failed_checks) == 0,
'failed_check': failed_checks[0] if failed_checks else None,
'all_checks': checks,
'remediation_steps': self.get_remediation_steps(failed_checks)
}
def monitor_perimeter_violations(self):
"""Monitorea violaciones del perímetro de seguridad"""
violation_indicators = [
self.detect_unauthorized_zone_crossing(),
self.detect_protocol_violations(),
self.detect_encryption_violations(),
self.detect_authentication_bypasses(),
self.detect_data_exfiltration_attempts()
]
active_violations = [v for v in violation_indicators if v['detected']]
for violation in active_violations:
self.handle_perimeter_violation(violation)
return {
'monitoring_timestamp': datetime.utcnow().isoformat(),
'violations_detected': len(active_violations),
'violation_details': active_violations,
'automated_responses': [v['automated_response'] for v in active_violations]
}
def handle_perimeter_violation(self, violation):
"""Maneja violación del perímetro detectada"""
severity = violation['severity']
# Respuesta inmediata
if severity == 'CRITICAL':
self.block_source_immediately(violation['source'])
self.alert_security_team(violation, urgency='HIGH')
elif severity == 'HIGH':
self.apply_rate_limiting(violation['source'])
self.alert_security_team(violation, urgency='MEDIUM')
else:
self.log_security_event(violation)
# Investigación automatizada
investigation_results = self.initiate_automated_investigation(violation)
# Actualización de reglas de seguridad
if investigation_results['confidence'] > 0.8:
self.update_security_rules(violation, investigation_results)
return {
'violation_id': violation['id'],
'response_taken': violation['automated_response'],
'investigation_initiated': True,
'rules_updated': investigation_results['confidence'] > 0.8
}
Referencias Normativas y Guías
Normativa Principal
- Real Decreto 311/2022, de 3 de mayo, por el que se regula el Esquema Nacional de Seguridad
- Reglamento (UE) 2017/745 sobre productos sanitarios (MDR)
- Directiva (UE) 2022/2555 (NIS2) sobre ciberseguridad
Guías CCN-STIC Aplicables
- CCN-STIC-803: Valoración de sistemas en el ENS
- CCN-STIC-804: Guía de implantación del ENS
- CCN-STIC-806: Plan de adecuación del ENS
- CCN-STIC-809: Declaración y certificación de conformidad
- CCN-STIC-811: Interconexión de sistemas
- CCN-STIC-812: Seguridad en entornos y aplicaciones web
- CCN-STIC-821: Normas de seguridad en el ENS
- CCN-STIC-823: Utilización de servicios en la nube
Documentación Relacionada
- GP-110: Procedimiento principal del ENS
- T-110-001: Plan de implementación del ENS
- T-110-002: Guía de implementación CCN-STIC
- T-110-003: Matriz de cumplimiento ENS
- R-TF-013-002: Registro de análisis de riesgos
Anexo D: Sistema de Interfaces
D.1 Catálogo de Interfaces del Sistema
System_Interfaces_Catalog:
# Interfaces de Usuario (Human Interfaces)
User_Interfaces:
Web_Portal_HCP:
Interface_Type: "HTTPS Web Application"
Users: "Healthcare Professionals"
Security_Level: "High"
Authentication: "SAML SSO + MFA"
Data_Classification: "Confidential (PHI)"
Protocols: ["HTTPS", "WebSocket Secure"]
Controls:
- "Session timeout: 30 minutes"
- "Concurrent session limit: 3"
- "Strong password policy"
- "Account lockout after 5 failures"
Mobile_App_Patient:
Interface_Type: "Mobile Application (iOS/Android)"
Users: "Patients"
Security_Level: "High"
Authentication: "OAuth 2.0 + Biometric"
Data_Classification: "Confidential (Personal Health)"
Protocols: ["HTTPS", "HTTP/2"]
Controls:
- "Certificate pinning"
- "App attestation"
- "Root/jailbreak detection"
- "Runtime application self-protection (RASP)"
# Interfaces de Sistema (System-to-System)
System_Interfaces:
FHIR_R4_API:
Interface_Type: "RESTful API"
Purpose: "Healthcare data interoperability"
Security_Level: "High"
Authentication: "OAuth 2.0 client credentials"
Data_Classification: "Confidential (PHI)"
Protocols: ["HTTPS", "HTTP/2"]
Standards_Compliance: ["FHIR R4", "SMART on FHIR"]
Controls:
- "API rate limiting: 1000 requests/minute"
- "Request/response validation"
- "Audit logging all transactions"
- "Data minimization policies"
HL7_v2_Integration:
Interface_Type: "Message-based Integration"
Purpose: "Legacy system integration"
Security_Level: "Medium-High"
Authentication: "VPN + Mutual TLS"
Data_Classification: "Confidential (Clinical Data)"
Protocols: ["MLLP over TLS", "HTTPS"]
Standards_Compliance: ["HL7 v2.5", "HL7 v2.8"]
Controls:
- "Message encryption at rest and transit"
- "Digital signatures for message integrity"
- "Sequence number validation"
- "Acknowledgment tracking"
DICOM_Imaging:
Interface_Type: "Medical Imaging Protocol"
Purpose: "Medical image exchange"
Security_Level: "High"
Authentication: "Application Entity (AE) Title + TLS"
Data_Classification: "Confidential (Medical Images)"
Protocols: ["DICOM over TLS", "DICOMweb"]
Standards_Compliance: ["DICOM 3.0", "IHE profiles"]
Controls:
- "Image de-identification"
- "Audit trail (DICOM Structured Reports)"
- "Storage commitment verification"
- "Patient privacy filters"
# Interfaces de Administración
Administrative_Interfaces:
AWS_Management_Console:
Interface_Type: "Web-based Management"
Users: "Cloud Administrators"
Security_Level: "High"
Authentication: "IAM + MFA + SAML Federation"
Data_Classification: "Confidential (Infrastructure)"
Protocols: ["HTTPS"]
Controls:
- "IP address restrictions"
- "Time-based access controls"
- "Session recording"
- "Least privilege IAM policies"
Systems_Manager_Session:
Interface_Type: "Secure Shell Access"
Users: "System Administrators"
Security_Level: "High"
Authentication: "IAM roles + MFA"
Data_Classification: "Confidential (System Access)"
Protocols: ["SSM Session Manager"]
Controls:
- "No direct SSH access"
- "All sessions logged and recorded"
- "Just-in-time access"
- "Session timeout: 1 hour"
D.2 Flujos de Datos entre Interfaces
D.3 Documentación de Interfaces de Datos
Data_Interface_Documentation:
FHIR_R4_Implementation:
Base_URL: "https://api.legitimhealth.com/fhir/R4"
Supported_Resources:
- "Patient (demographics, identifiers)"
- "DiagnosticReport (dermatology findings)"
- "Media (clinical images)"
- "Observation (clinical measurements)"
- "Condition (diagnoses and differential)"
Security_Implementation:
OAuth_2_Scopes:
- "patient/*.read (patient data access)"
- "user/*.write (healthcare professional access)"
- "system/*.read (system integration)"
SMART_on_FHIR: "Full compliance with SMART App Launch"
Audit_Events: "FHIR AuditEvent resources for all access"
Data_Privacy:
Consent_Management: "FHIR Consent resource implementation"
Data_Segmentation: "Patient-level access control"
Anonymization: "Configurable de-identification"
HL7_v2_Implementation:
Message_Types:
ADT_A01: "Patient admission notification"
ORU_R01: "Observation result unsolicited"
MDM_T02: "Medical document management"
ACK: "General acknowledgment message"
Transport_Layer:
MLLP_over_TLS: "Minimal Lower Layer Protocol over TLS 1.3"
Connection_Management: "Persistent connections with heartbeat"
Error_Handling: "Automatic retry with exponential backoff"
Message_Security:
Encryption: "AES-256-GCM for message payload"
Digital_Signatures: "RSA-PSS signatures for integrity"
Sequence_Validation: "Message sequence number tracking"
DICOM_Implementation:
Service_Classes:
Storage_SCP: "C-STORE operations for image receipt"
Query_Retrieve_SCP: "C-FIND and C-MOVE operations"
Verification_SCP: "C-ECHO for connectivity testing"
Transfer_Syntaxes:
- "Explicit VR Little Endian"
- "JPEG 2000 Lossless"
- "JPEG Lossless"
- "Uncompressed"
Privacy_Implementation:
De_identification: "DICOM Supplement 142 compliance"
Audit_Trail: "DICOM Structured Reports for access"
Access_Control: "Application Entity Title validation"
Referencias cruzadas
Controles ENS Relacionados
- OP.PL.1: Análisis de riesgos base para diseño de arquitectura
- OP.ACC.*: Controles de acceso implementados en cada capa
- OP.EXP.*: Controles operacionales para gestión de la arquitectura
- MP.COM.*: Protección de comunicaciones entre componentes
- MP.EQ.*: Protección de equipos en la arquitectura cloud
- OP.CONT.*: Continuidad del servicio mediante arquitectura resiliente
Documentos QMS
- R-TF-013-002: Análisis de riesgos que informa decisiones arquitectónicas
- T-024-006: Plan de gestión de riesgos de ciberseguridad
- T-024-007: Modelo de amenazas alineado con arquitectura
- GP-013: Marco general de ciberseguridad
- GP-001: Control documental para documentación de arquitectura
Estándares y Regulaciones
- Real Decreto 311/2022: Artículo 12 - Arquitectura de seguridad
- CCN-STIC 811: Interconexiones en el ENS
- CCN-STIC 821: Medidas de seguridad nivel medio
- ISO/IEC 27001:2022: Controls A.8.9 (Configuration management)
- NIST SP 800-53: SA-8 Security Engineering Principles
- MDR (EU) 2017/745: Anexo I, 17.2 (Software lifecycle)
Registros y Evidencias
- R-110-008: Documentación de arquitectura de seguridad
- R-110-009: Evidencias de implementación de controles
- R-110-010: Registros de cambios arquitectónicos
- R-110-011: Validaciones de seguridad de la arquitectura
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