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.
Arquitectura & 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
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.
WHERE TenantID = ?. 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
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.
Autenticación
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.
Login mediante OpenID Connect. Authorization-Code-Flow con PKCE, rotación de refresh-token, claims de sesión con asignación de inquilino.
Conectores enterprise para Azure AD/Entra, Okta, Keycloak, Google Workspace. Mapping de atributos para roles basados en grupos.
TOTP (app authenticator) y WebAuthn/Passkeys (YubiKey, Windows Hello, Touch ID) listos de fábrica. Resistente al phishing.
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
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.
Server-Side-Rendering, módulos en lazy-load, componentes standalone.
Minimal APIs, OpenAPI 3, logs estructurados (Serilog).
Grafo + documento + key-value en un solo motor — para el grafo de proyectos con 49 propiedades.
OIDC, SAML, federación LDAP. Auto-alojado en centro de datos UE.
Diseñador de informes visual integrado en el producto. Exportación a Excel, PDF, CSV.
Despliegues GitOps, rollbacks automáticos, infrastructure-as-code.
Observabilidad & auditoría
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
Os mostramos el flujo de peticiones, os damos acceso al audit-log, discutimos vuestra integración IdP. Sin slides de marketing — solo respuestas reales.