Arquitectura & seguridad

La arquitectura es
seguridad

Lo que hay en la base de datos determina quién puede acceder — y quién no. Temporalis EMS separa los inquilinos físicamente, no lógicamente. Eso es caro de operar y barato de defender.

Aislamiento de inquilinos

Database-per-Tenant.
Ni Row-Level, ni Schema-Level.

Cada inquilino tiene su propia base de datos en nuestra Multi-Model-Database. Un filtro WHERE olvidado en el código no puede filtrar datos ajenos, porque la conexión ni siquiera apunta a esos datos.

Enfoque estándar

Una base para todos — columna TenantID

  • Cada consulta debe contener WHERE TenantID = ?.
  • Un error en el código o en una exportación de admin equivale inmediatamente a una fuga.
  • Restaurar un backup afecta a todos los inquilinos a la vez.
Nuestro enfoque

Una base por inquilino — separación física

  • Las consultas no necesitan filtro TenantID — la conexión ya está vinculada.
  • Bug en el código ≠ fuga cross-tenant. La base ajena ni siquiera está en el pool de conexiones.
  • Offboarding de un inquilino = un drop de base. Sin filas residuales en el sistema.
  • Backup/restauración individual por inquilino — sin efectos cruzados.

Implementado mediante EMS.Modules.Tenant.Abstraction y TenantClaimsTransformation. La asignación del inquilino se hace en el borde del sistema (claim JWT → conexión DB), antes incluso de tocar el primer query-builder.

Alojamiento

Servidores alemanes,
sin transferencias a terceros países

Todos los componentes centrales se ejecutan en Hetzner Online en Falkenstein (Vogtland) y Núremberg — dos centros de datos certificados ISO 27001 en Alemania. Sin edges de CloudFront, sin telemetría oculta, sin fallback a infraestructura US.

  • Geo-redundanciaFalkenstein + Núremberg, > 300 km de distancia
  • Transferencia a terceros paísesninguna — todos los subprocesadores en la UE
  • Certificación del proveedorHetzner: ISO 27001, DIN 18599, TÜV
  • Tránsito de redDE-CIX Fráncfort — sin enrutamiento por backbone US
Ver subprocesadores y DPA

Autenticación

Quién entra,
lo controláis vosotros

Sin sistema de login propietario. Keycloak en el backend, protocolos estándar — podéis seguir usando vuestro setup de identity-provider en lugar de mantener un universo paralelo.

OIDC + OAuth2

Login mediante OpenID Connect. Authorization-Code-Flow con PKCE, rotación de refresh-token, claims de sesión con asignación de inquilino.

SSO mediante SAML 2.0

Conectores enterprise para Azure AD/Entra, Okta, Keycloak, Google Workspace. Mapping de atributos para roles basados en grupos.

MFA + claves de hardware

TOTP (app authenticator) y WebAuthn/Passkeys (YubiKey, Windows Hello, Touch ID) listos de fábrica. Resistente al phishing.

Permisos granulares

Stack de permisos de proyecto de 17 niveles + visibilidad de campos financieros basada en roles y usuarios. Todo trazable en el audit-log.

Stack tecnológico

Estándares abiertos,
sin vendor-lock

Cada capa del stack es un estándar abierto y documentado. Caminos de exportación en ambas direcciones. Sin formatos propietarios que os aten a nosotros.

FrontendAngular 21

Server-Side-Rendering, módulos en lazy-load, componentes standalone.

Backend.NET 10

Minimal APIs, OpenAPI 3, logs estructurados (Serilog).

Base de datosMulti-Model-Database

Grafo + documento + key-value en un solo motor — para el grafo de proyectos con 49 propiedades.

IdentidadKeycloak

OIDC, SAML, federación LDAP. Auto-alojado en centro de datos UE.

InformesReport-Designer

Diseñador de informes visual integrado en el producto. Exportación a Excel, PDF, CSV.

OperaciónDocker + Kubernetes

Despliegues GitOps, rollbacks automáticos, infrastructure-as-code.

Observabilidad & auditoría

Cada cambio
queda trazable

Audit-log a nivel de entidad con snapshot antes/después, actor y marca de tiempo. Logs estructurados vía Serilog con IDs de correlación — veis una cadena de petición desde el borde hasta la consulta. Exportable para vuestra propia pipeline SIEM.

Para equipos de TI y seguridad

¿Auditoría técnica en profundidad?
Hablad directamente con nosotros.

Os mostramos el flujo de peticiones, os damos acceso al audit-log, discutimos vuestra integración IdP. Sin slides de marketing — solo respuestas reales.