Tema
Migración de Infraestructura: AWS → DigitalOcean
Última revisión: 2026-03-13
Estado: Completada
Este documento describe la migración de proveedor de nube realizada
por Fintrixs SAS y demuestra que todos los controles de seguridad PCI DSS
fueron replicados o mejorados en la plataforma destino.
1. Resumen de la Migración
| Aspecto | Detalle |
|---|---|
| Plataforma origen | Amazon Web Services (AWS) |
| Plataforma destino | DigitalOcean |
| Período AWS | Dic 17 – Dic 23, 2025 (scaffold/baseline) |
| Decisión de migrar | Post diciembre 2025 |
| Producción en DO | Q1 2026 — 32 recursos desplegados (tfstate serial 67) |
| Región actual | NYC1 (New York City 1) |
| Razón principal | Optimización de costos (~$370/mes vs ~$2,000+/mes) manteniendo controles PCI DSS |
2. Cronología
3. Commits relevantes en AWS (referencia histórica)
| Fecha | Commit | Descripción |
|---|---|---|
| 2025-12-17 | 921eeea | CDE vault docs + K8s NetworkPolicies + EKS scaffold |
| 2025-12-17 | 4f88484 | Phase 25: AWS EKS baseline (VPC, SGs, cluster) |
| 2025-12-18 | 7b21ee1 | Phase 28: card-vault service + CDE segmentation |
| 2025-12-19 | 127851f | OIDC Terraform workflow + Kong Helm module |
| 2025-12-20 | f71d613 | CloudTrail baseline + KMS |
| 2025-12-20 | 6c5b4ec | 🔒 Restricción egress RDS/MSK a VPC CIDR |
| 2025-12-21 | e6175f2 | Self-hosted runner en VPC (staging/prod) |
| 2025-12-23 | 28ee0a6 | Último cambio AWS (runner hardening) |
4. Comparativa de Controles de Seguridad
| Control de Seguridad | AWS (Anterior) | DigitalOcean (Actual) | Resultado |
|---|---|---|---|
| Segmentación de red | VPC 10.10.0.0/16, subredes público/privado | VPC 10.100.0.0/16, 4 zonas explícitas (DMZ/CDE/App/Mgmt) | ✅ Mejorado |
| Firewall perimetral | Security Groups (por recurso) | Cloud Firewalls (4 zonas + 3 VM FW) | ✅ Mejorado |
| Kubernetes | EKS (API privada) | DOKS (VPC nativo, 3 pools con taints PCI) | ✅ Mejorado |
| Base de datos | RDS PostgreSQL, SG ingress VPC, cifrado KMS, Multi-AZ | Managed PostgreSQL, DB Firewall (K8s+CDE only), cifrado nativo, HA standby | ✅ Mejorado |
| Cifrado at-rest | KMS CMK con rotación | DO Managed (transparente) | ✅ Equivalente |
| Aislamiento CDE | Nodos en subred privada | Node pool con taint pci-scope=true:NoSchedule | ✅ Mejorado |
| K8s NetworkPolicies | default-deny CDE/App | Mismas políticas migradas | ✅ Equivalente |
| API Gateway | Kong vía Helm en EKS | Kong vía Helm en DOKS | ✅ Equivalente |
| Egress DB/Broker | RDS: VPC only, MSK: VPC only | DB FW: solo K8s + CDE CIDR | ✅ Más restrictivo |
| Escáner de cumplimiento | ❌ No implementado | 3 VMs dedicadas (Collector/VAPT/CDD) | ✅ Nuevo |
| Registro de contenedores | ECR (vía runner) | DO Container Registry (profesional) | ✅ Equivalente |
| Auditoría API | CloudTrail + KMS | DO Audit log (nativo) | ✅ Equivalente |
| Runner CI/CD | EC2 sin ingress, SSM only | GitHub hosted | ✅ Equivalente |
| Anti-spoofing | VPC nativo | Hypervisor nativo DO | ✅ Equivalente |
Conclusión
Ningún control de seguridad se perdió en la migración. Se agregaron controles nuevos (VMs de cumplimiento) y se mejoró la segmentación de red con zonas explícitas y node pools con taints PCI.
5. Recursos Desplegados en DigitalOcean (Producción)
Extraídos del terraform.tfstate (serial 67, Terraform 1.5.7):
5.1 Red y Firewalls
| Recurso | Descripción |
|---|---|
digitalocean_vpc.main | VPC principal 10.100.0.0/16 |
digitalocean_firewall.dmz | Firewall zona DMZ |
digitalocean_firewall.cde | Firewall zona CDE |
digitalocean_firewall.app | Firewall zona App |
digitalocean_firewall.mgmt | Firewall zona Mgmt |
5.2 Kubernetes (DOKS)
| Recurso | Descripción |
|---|---|
digitalocean_kubernetes_cluster.main | Clúster DOKS, K8s 1.32.10-do.3 |
digitalocean_kubernetes_node_pool.cde | Node pool PCI (taint pci-scope=true) |
digitalocean_kubernetes_node_pool.app | Node pool App (autoscale 2–6) |
5.3 Base de Datos
| Recurso | Descripción |
|---|---|
digitalocean_database_cluster.postgres | PostgreSQL managed, HA 2 nodos |
digitalocean_database_firewall.firewall | DB Firewall (K8s + CDE CIDR) |
digitalocean_database_db.databases | auth_db, vault_db, fintrix_payments |
digitalocean_database_user.app_user | Usuario fintrix_app (RW) |
digitalocean_database_user.readonly_user | Usuario fintrix_readonly (RO) |
digitalocean_database_connection_pool.pool | Connection pooling por BD |
5.4 Cumplimiento (ControlCase)
| Recurso | Descripción |
|---|---|
digitalocean_droplet.collector | VM Collector — recolección de logs |
digitalocean_droplet.vapt | VM VAPT — escaneo de vulnerabilidades |
digitalocean_droplet.cdd | VM CDD — descubrimiento de datos |
digitalocean_firewall.collector_fw | Firewall dedicado Collector |
digitalocean_firewall.vapt_fw | Firewall dedicado VAPT |
digitalocean_firewall.cdd_fw | Firewall dedicado CDD |
digitalocean_reserved_ip.* | 3 IPs estáticas reservadas |
digitalocean_volume.* | 3 volúmenes de 200 GB |
5.5 Otros
| Recurso | Descripción |
|---|---|
digitalocean_container_registry.registry | Registry Docker (plan profesional) |
digitalocean_container_registry_docker_credentials | Credenciales Docker |
Total: 32 recursos activos en producción.
6. Infraestructura AWS (Referencia Histórica)
Ya no activa
El código Terraform de AWS permanece en backend/infra/terraform/aws/ como referencia histórica. Estos recursos ya no están desplegados.
Componentes que existían:
- VPC
10.10.0.0/16con subredes público/privado - EKS (API privada,
endpoint_public_access = false) - RDS PostgreSQL (cifrado KMS, multi-AZ, backup 35 días)
- MSK Kafka (Security Group restringido a VPC)
- CloudTrail + KMS (auditoría, cifrado, 400 días retención)
- GitHub Runner EC2 (sin ingress, SSM only)
- Kong API Gateway (Helm en EKS)
Cambio de seguridad relevante antes de migrar
Commit
6c5b4ec(2025-12-20):security(prod): restrict RDS/MSK SG egress to VPC CIDR
diff
# RDS PostgreSQL — egress
- cidr_blocks = ["0.0.0.0/0"]
+ cidr_blocks = ["10.10.0.0/16"]
# MSK Kafka — egress
- cidr_blocks = ["0.0.0.0/0"]
+ cidr_blocks = [var.vpc_cidr]Este hardening se realizó antes de la decisión de migrar, demostrando cultura de mejora continua. En DigitalOcean, el DB Firewall nativo ya es más restrictivo (solo K8s + CDE CIDR, no todo el VPC).
7. Historial de Revisiones
| Fecha | Revisor | Cambios |
|---|---|---|
| 2026-03-13 | Equipo de Infraestructura | Documento inicial con análisis completo de migración |
