Skip to content

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

AspectoDetalle
Plataforma origenAmazon Web Services (AWS)
Plataforma destinoDigitalOcean
Período AWSDic 17 – Dic 23, 2025 (scaffold/baseline)
Decisión de migrarPost diciembre 2025
Producción en DOQ1 2026 — 32 recursos desplegados (tfstate serial 67)
Región actualNYC1 (New York City 1)
Razón principalOptimización de costos (~$370/mes vs ~$2,000+/mes) manteniendo controles PCI DSS

2. Cronología


3. Commits relevantes en AWS (referencia histórica)

FechaCommitDescripción
2025-12-17921eeeaCDE vault docs + K8s NetworkPolicies + EKS scaffold
2025-12-174f88484Phase 25: AWS EKS baseline (VPC, SGs, cluster)
2025-12-187b21ee1Phase 28: card-vault service + CDE segmentation
2025-12-19127851fOIDC Terraform workflow + Kong Helm module
2025-12-20f71d613CloudTrail baseline + KMS
2025-12-206c5b4ec🔒 Restricción egress RDS/MSK a VPC CIDR
2025-12-21e6175f2Self-hosted runner en VPC (staging/prod)
2025-12-2328ee0a6Último cambio AWS (runner hardening)

4. Comparativa de Controles de Seguridad

Control de SeguridadAWS (Anterior)DigitalOcean (Actual)Resultado
Segmentación de redVPC 10.10.0.0/16, subredes público/privadoVPC 10.100.0.0/16, 4 zonas explícitas (DMZ/CDE/App/Mgmt)✅ Mejorado
Firewall perimetralSecurity Groups (por recurso)Cloud Firewalls (4 zonas + 3 VM FW)✅ Mejorado
KubernetesEKS (API privada)DOKS (VPC nativo, 3 pools con taints PCI)✅ Mejorado
Base de datosRDS PostgreSQL, SG ingress VPC, cifrado KMS, Multi-AZManaged PostgreSQL, DB Firewall (K8s+CDE only), cifrado nativo, HA standby✅ Mejorado
Cifrado at-restKMS CMK con rotaciónDO Managed (transparente)✅ Equivalente
Aislamiento CDENodos en subred privadaNode pool con taint pci-scope=true:NoSchedule✅ Mejorado
K8s NetworkPoliciesdefault-deny CDE/AppMismas políticas migradas✅ Equivalente
API GatewayKong vía Helm en EKSKong vía Helm en DOKS✅ Equivalente
Egress DB/BrokerRDS: VPC only, MSK: VPC onlyDB FW: solo K8s + CDE CIDR✅ Más restrictivo
Escáner de cumplimiento❌ No implementado3 VMs dedicadas (Collector/VAPT/CDD)Nuevo
Registro de contenedoresECR (vía runner)DO Container Registry (profesional)✅ Equivalente
Auditoría APICloudTrail + KMSDO Audit log (nativo)✅ Equivalente
Runner CI/CDEC2 sin ingress, SSM onlyGitHub hosted✅ Equivalente
Anti-spoofingVPC nativoHypervisor 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

RecursoDescripción
digitalocean_vpc.mainVPC principal 10.100.0.0/16
digitalocean_firewall.dmzFirewall zona DMZ
digitalocean_firewall.cdeFirewall zona CDE
digitalocean_firewall.appFirewall zona App
digitalocean_firewall.mgmtFirewall zona Mgmt

5.2 Kubernetes (DOKS)

RecursoDescripción
digitalocean_kubernetes_cluster.mainClúster DOKS, K8s 1.32.10-do.3
digitalocean_kubernetes_node_pool.cdeNode pool PCI (taint pci-scope=true)
digitalocean_kubernetes_node_pool.appNode pool App (autoscale 2–6)

5.3 Base de Datos

RecursoDescripción
digitalocean_database_cluster.postgresPostgreSQL managed, HA 2 nodos
digitalocean_database_firewall.firewallDB Firewall (K8s + CDE CIDR)
digitalocean_database_db.databasesauth_db, vault_db, fintrix_payments
digitalocean_database_user.app_userUsuario fintrix_app (RW)
digitalocean_database_user.readonly_userUsuario fintrix_readonly (RO)
digitalocean_database_connection_pool.poolConnection pooling por BD

5.4 Cumplimiento (ControlCase)

RecursoDescripción
digitalocean_droplet.collectorVM Collector — recolección de logs
digitalocean_droplet.vaptVM VAPT — escaneo de vulnerabilidades
digitalocean_droplet.cddVM CDD — descubrimiento de datos
digitalocean_firewall.collector_fwFirewall dedicado Collector
digitalocean_firewall.vapt_fwFirewall dedicado VAPT
digitalocean_firewall.cdd_fwFirewall dedicado CDD
digitalocean_reserved_ip.*3 IPs estáticas reservadas
digitalocean_volume.*3 volúmenes de 200 GB

5.5 Otros

RecursoDescripción
digitalocean_container_registry.registryRegistry Docker (plan profesional)
digitalocean_container_registry_docker_credentialsCredenciales 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/16 con 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

FechaRevisorCambios
2026-03-13Equipo de InfraestructuraDocumento inicial con análisis completo de migración

Documentación Confidencial — Solo para uso interno y auditoría PCI DSS