Arquitectura
Midaz usa una arquitectura segura. Aplicó security by design (seguridad por diseño) y threat modeling (modelado de amenazas) desde el inicio. Sigue aplicando ambos en cada nueva funcionalidad.
- Security by design: Midaz integra controles de seguridad a lo largo del ciclo de vida, desde el diseño hasta el despliegue. Sigue las directrices de OWASP como el OWASP Top 10 y el OWASP Application Security Verification Standard (ASVS).
- Threat Modeling: Un proceso estructurado identifica, evalúa y reduce los riesgos de seguridad antes de que un atacante los explote. Midaz usa la metodología STRIDE. STRIDE agrupa las amenazas en seis tipos:
- Spoofing/Suplantación (ej., autenticación falsa en una API bancaria).
- Tampering/Manipulación (ej., alterar datos de transacción a mitad de solicitud).
- Repudiation/Repudio (ej., falta de registros de auditoría para transacciones).
- Information Disclosure/Divulgación de información (ej., filtración de datos sensibles a través de respuestas API).
- Denial of Service/Denegación de servicio (ej., abrumar la API con solicitudes falsas).
- Elevation of Privilege/Elevación de privilegios (ej., explotar un error para obtener acceso de administrador).
Modelo de responsabilidad compartida
La seguridad es una responsabilidad compartida entre Lerian y el cliente. La división exacta depende de tu modelo de despliegue.
En el modelo BYOC
En BYOC (Bring Your Own Cloud), despliegas Lerian en tu propia infraestructura. Lerian asegura la capa de aplicación. Tú aseguras el entorno. Lo que Lerian asegura:- Servicios seguros por diseño.
- Corrección proactiva de vulnerabilidades.
- Actualizaciones de seguridad: actualizaciones de dependencias, parches de seguridad y mejoras.
- Infraestructura: Endurece el SO y las imágenes de contenedor, gestiona los parches y aplica configuraciones seguras en la plataforma de hosting.
- Red: Implementa segmentación, firewalls y sistemas IDS/IPS. Adopta principios de Zero Trust para proteger la comunicación interna y externa.
- Base de datos: Configura copias de seguridad y registro de auditoría. Sigue las mejores prácticas de seguridad para el almacenamiento de datos.
- Gestión de Identidad y Acceso: Controla el acceso al entorno. Usa las funciones RBAC de Midaz para aplicar políticas de mínimo privilegio dentro de la plataforma.
- Cifrado: Cifra los datos sensibles en reposo y en tránsito. Considera tokenización o anonimización cuando sea apropiado.
- Datos de usuario: Todos los datos de usuario que Midaz almacena o procesa permanecen bajo tu control y responsabilidad.
- Monitoreo: Establece herramientas de monitoreo que detecten patrones de acceso inusuales o comportamiento sospechoso.
- Capas de seguridad adicionales: Refuerza las defensas con Web Application Firewalls (WAF), mecanismos anti-DDoS y herramientas de mitigación de bots.
En el modelo SaaS
En SaaS, Lerian gestiona toda la infraestructura. Lerian asume una mayor parte de la responsabilidad de seguridad. Lo que Lerian asegura:- Todo lo de la capa de aplicación del BYOC, más:
- Infraestructura cloud, red y entorno de cómputo.
- Aprovisionamiento de base de datos, cifrado en reposo y respaldos automatizados.
- Parcheo de SO y contenedores.
- Monitoreo, alertas y respuesta a incidentes.
- Alta disponibilidad y recuperación ante desastres.
- Control de acceso a nivel de negocio: Gestiona usuarios, roles y permisos dentro de la plataforma.
- Seguridad de integración vía API: Asegura la comunicación entre tus sistemas y las APIs de Lerian.
- Gobernanza de datos de usuario: Define y aplica políticas de manejo de datos que cumplan tus obligaciones regulatorias.
- Cumplimiento: Asegúrate de que tu uso de la plataforma esté alineado con los requisitos regulatorios de tu institución.
Gestión de identidad y acceso
Midaz acepta un JWT Bearer emitido por un proveedor OAuth 2.0 / OpenID Connect. La autenticación está desactivada a menos que definas
PLUGIN_AUTH_ENABLED=true — y Midaz se niega a arrancar sin ella cuando ENV_NAME=production o la multi-tenancy está habilitada. Tú eliges cómo gestionar la identidad y el acceso. Tienes dos opciones:
- Usa tu propia solución IAM externa (Identity and Access Management).
- Usa el Plugin Access Manager nativo de Lerian: una buena opción para clientes sin un sistema IAM existente, o para quienes quieren una experiencia completamente integrada.
Opción 1: IAM externo
Si integras tu propio proveedor de IAM, asegúrate de que siga prácticas modernas de seguridad. Para mantener Midaz seguro, te recomendamos:- Usar protocolos probados como OAuth 2.0 y OpenID Connect.
- Requerir Autenticación Multifactor (MFA).
- Aplicar algoritmos robustos de hashing de contraseñas, como bcrypt o argon2.
- Aplicar controles de acceso detallados con RBAC, ABAC o modelos similares.
- Gestionar las sesiones de forma segura, con reglas de expiración y políticas de refresh tokens.
- Proteger los endpoints de ataques de fuerza bruta y replay.
- Habilitar y revisar los registros de acceso regularmente.
Opción 2: Plugin Access Manager
El Plugin Access Manager gestiona la autenticación y la autorización dentro de Midaz. Está completamente integrado y ofrece:- Gestión del ciclo de vida del usuario
- Manejo de tokens de sesión
- Rotación de refresh tokens
- Registro y gestión de aplicaciones
Aislamiento de tenants en despliegues multi-tenant
En Lerian SaaS o BYOC Multi-Tenant, Midaz aísla todos los recursos por tenant a nivel de aplicación. Esto abarca organizaciones, ledgers, cuentas y transacciones. Tu token de acceso JWT lleva el contexto de tenant. En cada solicitud, el middleware de la plataforma resuelve el tenant a partir del claim
tenantId del token. Tus llamadas de API nunca ven datos de otros tenants. Otros tenants nunca ven tus datos.
Este aislamiento funciona de forma independiente de la jerarquía de organizaciones. Dos tenants pueden crear estructuras organizativas similares, y sus datos permanecen completamente separados. En modo DATABASE (modos de aislamiento), cada tenant usa su propia base de datos dedicada. En modo SCHEMA, los tenants comparten una base de datos, pero los datos de cada tenant permanecen aislados detrás de sus propias credenciales distintas.
Aislamiento de credenciales
Cada tenant tiene sus propias credenciales. Midaz nunca las comparte entre tenants, tanto en modoDATABASE como en modo SCHEMA (modos de aislamiento). En modo SCHEMA, los tenants comparten una instancia de base de datos. Aun así, el acceso de cada tenant usa sus propias credenciales distintas. Un tenant nunca puede autenticarse en los datos de otro tenant.
Midaz genera las credenciales durante el aprovisionamiento automático. Las almacena en un vault de credenciales, no en archivos de configuración o variables de entorno. Puedes rotar las credenciales bajo demanda mientras la plataforma sigue atendiendo solicitudes. La rotación no causa tiempo de inactividad ni interrumpe las operaciones del tenant.
Límites de recursos por tenant
Los despliegues multi-tenant aplican límites de recursos para que ningún tenant degrade a los demás. Este es el problema del vecino ruidoso (noisy neighbor):- Límites de recursos de Kubernetes — los límites de CPU y memoria en cada workload limitan cuánto cómputo puede consumir. Esto acota el impacto de un pico o de una carga descontrolada.
- Statement timeout de PostgreSQL — Midaz no lo define por sí mismo. Configura
statement_timeouten tus roles o bases de datos de PostgreSQL para que ninguna consulta pueda retener recursos indefinidamente. - Pool de conexiones por servicio — cada servicio mantiene su propio pool de conexiones, con un pool por tenant activo. Los límites de pool por tenant vienen de la configuración de conexión que cada tenant lleva en Tenant Manager, y los pools de tenants inactivos se desalojan con el tiempo. Esto acota la capacidad de conexión por tenant. Un tenant no puede agotar las conexiones de base de datos que los demás necesitan.
Estos límites complementan el aislamiento de datos anterior. El aislamiento de datos protege los datos de cada tenant frente a otros tenants. Los límites de recursos protegen el rendimiento y la disponibilidad de cada tenant frente a la carga de otros tenants.
Protección de datos
Midaz aplica principios de partida doble por diseño. Cada transacción debe tener débitos y créditos balanceados. Midaz rechaza cualquier entrada que falle esta validación. Esto protege la integridad del Ledger. También protege el sistema contra vulnerabilidades de condición de carrera y discrepancias de registro.
Salvaguardas integradas
Midaz aplica validación estricta en todos los flujos de transacciones para mantener los datos consistentes y prevenir errores lógicos:- Midaz bloquea los saldos negativos, a menos que los permitas explícitamente.
- Midaz verifica el estado de la cuenta antes de cualquier operación.
- Midaz requiere un activo registrado y válido antes de registrar una entrada.
Cumplimiento con LGPD y GDPR
Midaz maneja la validación de transacciones y la comunicación segura sobre TLS 1.2 y 1.3. Tú proteges la información de identificación personal (PII). Para mantenerte en cumplimiento con LGPD, GDPR y leyes de protección de datos similares, te recomendamos:- Aplicar cifrado a los datos sensibles, en reposo y en tránsito.
- Usar tokenización o anonimización cuando sea apropiado.
- Almacenar y gestionar los datos de clientes bajo políticas de seguridad claramente definidas.
Política de divulgación responsable
La transparencia genera confianza. Compartimos abiertamente todas las mejoras y correcciones de seguridad conocidas en nuestras GitHub Discussions. Esto mantiene a la comunidad informada sobre parches y mejoras de seguridad. Si encuentras una vulnerabilidad de seguridad en Midaz, repórtala directamente a nuestro equipo antes de hacerla pública. Apoyamos la divulgación responsable. Investigamos y resolvemos los problemas de forma rápida y exhaustiva.
No divulgues públicamente ningún hallazgo hasta que lo revisemos y lo abordemos.
1
Reportar
Envíanos un correo a security@lerian.studio.
2
Reconocimiento
Respondemos dentro de 24 horas.
3
Verificación
Nuestro equipo valida el reporte.
4
Evaluación de impacto
Determinamos la severidad e impacto.
5
Resolución
Corregimos el problema y notificamos al reportero.
6
Divulgación pública
Coordinamos la divulgación con el investigador.

