> ## Documentation Index
> Fetch the complete documentation index at: https://docs.lerian.studio/llms.txt
> Use this file to discover all available pages before exploring further.

# Seguridad

> Comprende cómo Midaz protege tus operaciones financieras con seguridad por diseño, modelado de amenazas y controles alineados con OWASP.

La seguridad es la base de cualquier sistema financiero.

Midaz incorpora protecciones para la integridad de datos, el control de acceso y el aislamiento de tenants. Usa una sólida gestión de identidad, permisos detallados y prácticas estándar de la industria.

Esta página describe la arquitectura de seguridad que Midaz proporciona por defecto. También muestra cómo ejecutas operaciones seguras y conformes.

## 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:
  * **S**poofing/Suplantación (ej., autenticación falsa en una API bancaria).
  * **T**ampering/Manipulación (ej., alterar datos de transacción a mitad de solicitud).
  * **R**epudiation/Repudio (ej., falta de registros de auditoría para transacciones).
  * **I**nformation Disclosure/Divulgación de información (ej., filtración de datos sensibles a través de respuestas API).
  * **D**enial of Service/Denegación de servicio (ej., abrumar la API con solicitudes falsas).
  * **E**levation 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](/es/deployment-models).

| Lerian                                        | Cliente                        |
| --------------------------------------------- | ------------------------------ |
| Desarrollo de la aplicación                   | Infraestructura                |
| Actualizaciones de seguridad de la aplicación | Red                            |
|                                               | Base de datos                  |
|                                               | Gestión de Identidad y Acceso  |
|                                               | Cifrado                        |
|                                               | Datos de usuario               |
|                                               | Monitoreo                      |
|                                               | Capas de seguridad adicionales |

### 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.

**Lo que el cliente asegura:**

* **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.

**Lo que el cliente asegura:**

* **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.

<Tip>
  Para orientación paso a paso, consulta las [Recomendaciones de seguridad](/es/midaz/security-recommendations) en la sección de Instalación y Despliegue.
</Tip>

## 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](/es/platform/access-manager/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

Esta opción simplifica el control de acceso seguro. Se alinea con el sistema de permisos nativo de Midaz (RBAC).

## 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](/es/multi-tenancy#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 modo `DATABASE` como en modo `SCHEMA` ([modos de aislamiento](/es/multi-tenancy#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](/es/multi-tenancy/auto-provisioning). 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_timeout` en 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.

<Note>
  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.
</Note>

<Tip>
  Para una visión completa de multi-tenancy, consulta [Multi-tenancy](/es/multi-tenancy).
</Tip>

## 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.

Estas verificaciones reducen el riesgo. Mantienen las operaciones financieras alineadas con las reglas de negocio y las expectativas regulatorias.

### 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.

La protección de datos es un compromiso compartido, no una sola capa. Midaz proporciona la base. Tú construyes las salvaguardas.

## Política de divulgación responsable

***

La transparencia genera confianza. Compartimos abiertamente todas las mejoras y correcciones de seguridad conocidas en nuestras [**GitHub Discussions**](https://github.com/LerianStudio/midaz/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.

<Danger>
  No divulgues públicamente ningún hallazgo hasta que lo revisemos y lo abordemos.
</Danger>

Los pasos para reportar una vulnerabilidad:

<Steps>
  <Step title="Reportar">
    Envíanos un correo a [security@lerian.studio](mailto:security@lerian.studio).
  </Step>

  <Step title="Reconocimiento">
    Respondemos dentro de 24 horas.
  </Step>

  <Step title="Verificación">
    Nuestro equipo valida el reporte.
  </Step>

  <Step title="Evaluación de impacto">
    Determinamos la severidad e impacto.
  </Step>

  <Step title="Resolución">
    Corregimos el problema y notificamos al reportero.
  </Step>

  <Step title="Divulgación pública">
    Coordinamos la divulgación con el investigador.
  </Step>
</Steps>

<Warning>
  Usa una clave PGP para la comunicación segura. Priorizamos la confidencialidad y la resolución rápida de todos los reportes de seguridad.
</Warning>
