Seguridad y confianza

Tu informacion financiera y de proyectos merece proteccion real, no promesas genericas. Aqui detallamos exactamente como protegemos tus datos, con las configuraciones reales de nuestra infraestructura.

Resumen ejecutivo

Nube
Google Cloud Platform
Base de datos
PostgreSQL 15 (Cloud SQL)
Encriptacion
TLS 1.3 + AES-256
Backups
Diarios + PITR 7 dias

Infraestructura

  • Google Cloud Platform como proveedor de nube
  • Region southamerica-east1 (Sao Paulo) -- la mas cercana a Peru con servicios completos
  • Cloud Run v2 como plataforma de ejecucion (managed, serverless)
  • Servicio dedicado: lumini-erp con 2 vCPU y 2 GB RAM por instancia
  • Service account aislado (lumini-erp-runner) con permisos minimos (principio de menor privilegio)
  • Conexion a base de datos via Cloud SQL Auth Proxy (socket Unix, sin red publica)
  • Infraestructura definida como codigo (Terraform) -- reproducible y auditable

Base de datos

  • PostgreSQL 15 gestionado por Cloud SQL (parches y actualizaciones automaticas de Google)
  • Disco SSD (PD_SSD) con autoresize habilitado
  • Sin IP publica (ipv4_enabled = false) -- solo accesible via Cloud SQL Auth Proxy
  • Maximo 100 conexiones configuradas a nivel de instancia
  • Proteccion contra borrado activada (deletion_protection = true)
  • Cada cliente opera en su propia base de datos, completamente separada (multi-tenant por subdominio)

Encriptacion

  • En transito: TLS 1.3 gestionado por Cloudflare (proxy activado en DNS)
  • En reposo: AES-256 por defecto en Cloud SQL y discos de Cloud Run (encryption at rest de GCP)
  • Firma digital de comprobantes electronicos con certificado PFX (RSA-SHA256)
  • Certificados PFX almacenados como secretos en GCP Secret Manager, nunca en disco
  • Headers de seguridad forzados: X-Forwarded-Proto https en toda comunicacion interna

Backups

  • Backups automaticos diarios a las 03:00 UTC (configurado en Cloud SQL)
  • Retencion de 7 backups completos
  • Point-in-Time Recovery (PITR) habilitado con 7 dias de transaction logs
  • Permite restaurar la base de datos a cualquier segundo dentro de la ventana de 7 dias
  • Proteccion contra borrado accidental de la instancia (deletion_protection = true)
  • Disco con autoresize para evitar problemas de espacio durante backups

Acceso y autenticacion

  • 3 roles de acceso: Usuario de Construccion, Residente de Obra, Gerente de Construccion
  • Cada rol define que puede ver, crear, editar y eliminar
  • Aprobaciones multinivel para ordenes de compra y valorizaciones (basado en OCA base_tier_validation)
  • Umbrales configurables por monto (ej: OC > $10,000 requiere aprobacion de gerente)
  • Audit trail completo via chatter de Odoo: cada cambio, aprobacion y comentario queda registrado con usuario, fecha y hora
  • Portal de proveedores con credenciales unicas y aislamiento total entre proveedores

Red y perimetro

  • Cloudflare como proxy frontal (proxied = true en DNS) con proteccion DDoS incluida
  • Wildcard DNS (*.erp.lumini.dev) para aislamiento multi-tenant por subdominio
  • Security headers en Nginx: X-Content-Type-Options nosniff, X-Frame-Options SAMEORIGIN, X-XSS-Protection 1; mode=block
  • Base de datos sin IP publica -- imposible acceder desde internet
  • Preparado para whitelist de IPs de Cloudflare (bloquear trafico directo al origen)
  • Proxy mode activado en Odoo (proxy_mode = True) para detectar IPs reales detras de Cloudflare

Secretos

  • GCP Secret Manager para almacenar credenciales sensibles
  • Contrasena de base de datos inyectada como secret_key_ref en Cloud Run (nunca como variable de entorno plana)
  • Replicacion automatica de secretos (replication auto) para alta disponibilidad
  • Acceso restringido: solo el service account lumini-erp-runner tiene rol secretmanager.secretAccessor
  • Ningun secreto se almacena en codigo fuente, archivos de configuracion ni imagenes Docker

Aislamiento multi-tenant

  • Cada cliente tiene su propia base de datos PostgreSQL, completamente separada
  • Mapeo automatico por subdominio: vertice.lumini-erp.com conecta a la BD 'vertice'
  • Filtro de base de datos estricto (dbfilter = ^%d$) -- un subdominio solo puede acceder a su BD
  • Listado de bases de datos deshabilitado (list_db = False) -- no se puede descubrir que otros clientes existen
  • Datos, usuarios, permisos y configuraciones totalmente independientes entre clientes

Disponibilidad

  • Auto-scaling de 1 a 5 instancias en Cloud Run segun demanda
  • Health checks (liveness probe) cada 30 segundos en /web/health
  • Startup probe con 30s de espera inicial y 5 reintentos antes de declarar fallo
  • Restart automatico de instancias que no responden al health check
  • Timeout de 1200 segundos para operaciones largas (generacion de reportes, importacion masiva)
  • 100% del trafico dirigido a la ultima revision estable

Cumplimiento normativo

  • Facturacion electronica SUNAT conforme a UBL 2.1
  • 4 tipos de comprobante: Factura (01), Boleta (03), Nota de Credito (07), Nota de Debito (08)
  • Firma digital con certificado PFX (RSA-SHA256) validado por SUNAT
  • Envio directo a SUNAT o via OSE (Nubefact, eFact)
  • Almacenamiento de CDR (Constancia de Recepcion) con estado: Aceptada, Rechazada, Con observaciones
  • Formula Polinomica segun D.S. 011-79-VC con indices INEI para reajuste de precios en obra publica
  • Plan contable peruano localizado (l10n_pe) con tipos de documento, impuestos y RUC/DNI

Toda la infraestructura esta definida como codigo (Terraform) y es auditada periodicamente. Si tienes preguntas sobre seguridad o necesitas documentacion adicional para tu proceso de evaluacion, contactanos.