Aislamiento entre tenants
Cada tabla de la base de datos con ámbito de tenant funciona con FORCE ROW LEVEL SECURITY de Postgres y WITH CHECK. El rol de base de datos en ejecución es NOSUPERUSER NOBYPASSRLS. El acceso a datos entre tenants se impide en la capa de la base de datos, no en la de la aplicación. El aislamiento entre tenants se verifica con una suite de tests de integración que se ejecuta contra una instancia real de Postgres mediante Testcontainers.
Postgres con dos roles
Separamos los permisos de migración de los permisos de ejecución. Las migraciones se ejecutan como el superusuario rekomi mediante una cadena de conexión explícita. Las consultas en ejecución corren como rekomi_app, que no puede saltarse RLS. Esto significa que una inyección SQL en el código de la aplicación no puede leer los datos de otro tenant.
Seguridad de los webhooks
Los webhooks de Stripe se verifican con EventUtility.ConstructEvent y una ventana de tolerancia de 300 segundos. Las repeticiones fuera de la ventana se rechazan. Cada ID de evento procesado se registra en billing_events con un índice UNIQUE, así que las entregas duplicadas no hacen nada. Los webhooks de Clerk usan la verificación de firma de Svix con la misma protección contra repeticiones.
Cifrado
Datos en reposo: AES-256 (gestionado por el proveedor de hosting). Datos en tránsito: TLS 1.3 obligatorio. Los secretos de firma de las claves de API se cifran en reposo mediante ASP.NET Core Data Protection con un almacén de claves persistente. El cifrado a nivel de campo de los datos identificativos de los formularios fiscales es un paso de refuerzo previsto.
Autenticación y acceso
Autenticación mediante Clerk (certificado SOC 2 Type 2). Los JWT de sesión se verifican en cada petición a la API. El SSO con SAML está en la hoja de ruta de Enterprise.
Registro de auditoría
Cada mutación en la app de administración se registra en una tabla audit_log de solo anexado por organización. Captura el actor, la acción, el objetivo, la marca de tiempo y el origen de la petición tal como se ve en nuestro edge. El registro se puede buscar desde la app de administración y exportar como CSV.
Informar de una vulnerabilidad
Consulta nuestra página de divulgación de seguridad para saber cómo informar de una vulnerabilidad, o escribe a support@rekomi.com. Acusamos recibo en un día laborable y corregimos los problemas críticos en 7 días.
Subencargados y residencia de datos
Lista completa de subencargados en /legal/subprocessors, con los detalles de residencia de datos y nuestra postura sobre el RGPD en nuestro centro de confianza.