Skip to content
GitHub

Seguridad de Infraestructura

La seguridad de infraestructura sigue el modelo de responsabilidad compartida, aprovechando las capacidades de nuestros proveedores Cloud (Cloudflare, Render, Neon).

El tráfico entrante pasa primero por la red global de Cloudflare, que provee:

  • Protección DDoS: Mitigación automática de ataques volumétricos L3/L4.
  • WAF (Web Application Firewall): Reglas gestionadas para bloquear exploits comunes (OWASP Top 10).
  • SSL/TLS Offloading: Terminación segura de conexiones HTTPS.
  • HSTS: Forzamos Strict-Transport-Security para asegurar que los navegadores solo conecten vía HTTPS.

El servicio Orchestrator corre en un entorno contenerizado aislado.

  • Rate Limiting: Implementado para prevenir abuso de endpoints críticos (/auth/login).

El Cross-Origin Resource Sharing (CORS) es una defensa del navegador, pero debe ser configurada correctamente en el servidor para permitir la interactividad segura.

Recuerda que en producción NO debes usar wildcards (*) si manejas credenciales o cookies.

import cors from 'cors';

const whitelist = [
  'https://jean-d-arc.pages.dev', // Producción
  'http://localhost:4321'         // Desarrollo local
];

const corsOptions: cors.CorsOptions = {
  origin: (origin, callback) => {
    // Permitir requests sin 'origin' (como curl o Postman)
    if (!origin || whitelist.indexOf(origin) !== -1) {
      callback(null, true);
    } else {
      callback(new Error('Bloqueado por CORS policy'));
    }
  },
  credentials: true, // Permitir envío de Cookies/Auth Headers
  methods: ['GET', 'POST', 'PUT', 'PATCH', 'DELETE', 'OPTIONS'],
  allowedHeaders: [
    'Content-Type', 
    'Authorization', 
    'X-Requested-With',
    'Accept'
  ],
  maxAge: 86400 // Cachear resultado de preflight (OPTIONS) por 24 horas
};

app.use(cors(corsOptions));
HeaderValor RecomendadoPropósito
Access-Control-Allow-OriginDominio específicoDefine quién puede leer la respuesta.
Access-Control-Allow-CredentialstrueNecesario para enviar cookies o headers Authorization.
Access-Control-Allow-MethodsGET, POST...Lista blanca de verbos HTTP permitidos.
  • Conexiones Seguras: Solo se permiten conexiones vía SSL/TLS.
  • Connection Pooling: Uso de pg-pool para manejar eficientemente conexiones y prevenir ataques de agotamiento de recursos (DoS).
  • Aislamiento: Cada Tenant opera lógica y/o físicamente separado para garantizar la integridad de los datos.

Se recomienda configurar alertas para:

  • Picos inusuales de tráfico (posible DDoS).
  • Tasa elevada de errores 401/403 (posible ataque de fuerza bruta).
  • Latencia anómala en base de datos.