Descripción general
La arquitectura de seguridad de Matcher está construida en varias capas. Cada solicitud de API pasa por múltiples puntos de control de seguridad antes de llegar a tus datos.
1
Primero, TLS cifra la conexión.
2
Luego la autenticación verifica quién eres:
- El aislamiento de inquilinos asegura que solo veas tus propios datos.
- RBAC verifica si tienes permiso para realizar la acción.
3
Finalmente, el sistema registra todo para propósitos de auditoría.
Protección por capas
Autenticación
Matcher usa la biblioteca compartida
lib-auth para el control de acceso basado en JWT. Matcher delega toda la validación criptográfica de JWT a un proveedor de autenticación externo y no guarda ningún secreto JWT local propio.
Configuración
Estas variables de entorno controlan la autenticación:AUTH_ENABLED y AUTH_SERVICE_ADDRESS se aceptan como alias heredados de PLUGIN_AUTH_ENABLED y PLUGIN_AUTH_ADDRESS. Establecer un alias y su forma actual con valores en conflicto se rechaza durante el arranque.PLUGIN_AUTH_ENABLED=false (solo desarrollo), Matcher usa un ID de inquilino predeterminado (11111111-1111-1111-1111-111111111111) y omite las verificaciones de autorización.
Estructura del token JWT
ConAUTH_PROVIDER=plugin-auth, la validación criptográfica se delega al servicio plugin-auth; con AUTH_PROVIDER=workos, Matcher verifica localmente los JWT de token de acceso de WorkOS contra el JWKS en caché. En cualquier caso, el token debe incluir claims de identificación de inquilino:
Encabezados requeridos
Todas las solicitudes de API deben incluir autenticación:Validación de token
Matcher valida los tokens en cada solicitud:- Verificación de firma: Delegada al proveedor de autenticación configurado (servicio
plugin-autho JWKS de WorkOS) — Matcher no guarda ningún secreto de firma local - Verificación de expiración: Rechaza tokens expirados (claim
exp) - Verificación de not-before: Rechaza tokens usados antes de su tiempo
nbf - Extracción de inquilino: Extrae
tenant_idpara resolver el pool de base de datos del inquilino
Autorización (RBAC)
El control de acceso basado en roles protege todos los endpoints de API. Matcher delega la autorización a un servicio de auth externo vía
lib-auth. Los permisos son granulares y siguen el patrón de dos partes resource:action.
Estructura de permisos
contexts:create— Crear contextos de conciliaciónmatch-runs:run— Ejecutar ejecuciones de coincidenciaexceptions:resolve— Resolver excepciones
Lista completa de permisos
Matcher define un conjunto plano de aproximadamente 35 recursos — no hay agrupación en dominios. Cada endpoint requiere un permisoresource:action específico verificado contra el servicio de autorización externo. Las tablas a continuación están agrupadas solo para facilitar la lectura; los slugs en sí no llevan ningún calificador de dominio.
Configuration
Ingestion
Matching
Excepciones y disputas
Los callbacks entrantes de sistemas externos se autentican mediante un token bearer opaco, no mediante RBAC, por lo que no existe un permiso
callbacks:process. Los permisos callback-credentials:* protegen únicamente la superficie protegida por JWT que genera, rota, lista y revoca esos tokens.Reportes y analíticas
Gobernanza y privacidad
Discovery
System
Gestión de roles
El servicio de autorización externo gestiona los roles, no Matcher en sí. Configura los roles y sus permisos asociados en tu proveedor de identidad o servicio de auth. Matcher verifica los permisos en cada solicitud llamando al servicio de auth con el recurso y la acción requeridos.Aislamiento de inquilinos
Matcher usa aislamiento pool-por-inquilino en PostgreSQL: los datos de cada inquilino viven en su propia base de datos, proporcionando una fuerte separación de datos entre inquilinos.
Cómo funciona
Cuando llega una solicitud, Matcher extrae el ID del inquilino del token JWT (nunca de parámetros de consulta o encabezados que tú controlas). Luego resuelve el pool de conexiones dedicado a la base de datos de ese inquilino, por lo que cada consulta se ejecuta contra la base de datos propia del inquilino en completo aislamiento. No hay cambio de esquema compartido — no se usaSET search_path.
Como los datos de cada inquilino viven en una base de datos físicamente separada, un bug en la capa de aplicación aún no puede alcanzar los datos de otro inquilino.
- ID de inquilino solo desde JWT: Nunca aceptado desde parámetros de solicitud
- Resolución automática de pool: El pool de conexiones de la base de datos del inquilino se resuelve desde el contexto
- Aislamiento físico: Las consultas de cada inquilino se ejecutan contra su propia base de datos, no una compartida
- Sin acceso entre inquilinos: Las bases de datos físicamente separadas imponen el aislamiento
Garantías de aislamiento
Pista de auditoría
Matcher registra todas las acciones en un log de auditoría inmutable de solo anexión para cumplimiento y análisis forense.
Eventos auditados
Consultar logs de auditoría
Usa los endpoints de logs de auditoría de gobernanza para recuperar registros de auditoría:Mapeos de actores y privacidad
Los mapeos de actores asocian identificadores del sistema (como los claims
sub de JWT) con nombres legibles y direcciones de correo electrónico. Esto mejora la legibilidad de los logs de auditoría sin almacenar datos personales en cada entrada de log.
Gestionar mapeos de actores
El parámetro de ruta del ID de actor acepta hasta 255 caracteres (coincidiendo con la restricción de columna de base de datos). Los espacios en blanco iniciales y finales se recortan automáticamente. Los valores que excedan este límite se rechazan con un error400 Bad Request.
cURL
Pseudonimización GDPR
Para cumplir con las solicitudes de derecho al olvido, pseudonimiza un actor para reemplazar sus datos personales con[REDACTED]. La pseudonimización no es reversible desde la aplicación; los registros subyacentes pueden conservarse según la política de cumplimiento y auditoría.
cURL
Archivos de logs de auditoría
Los logs de auditoría históricos se comprimen periódicamente y se mueven a almacenamiento a largo plazo. Usa los endpoints de archivos para listar y descargar datos archivados para revisiones de cumplimiento.cURL
Cifrado de datos
Cifrado en tránsito
TLS cifra todos los datos transmitidos hacia y desde Matcher.Cifrado en reposo
Cumplimiento SOX
Matcher mantiene registros para los requisitos de auditoría SOX (Sarbanes-Oxley).
Características de control SOX
Seguridad de API
Limitación de tasa
Algunos endpoints incluyen limitación de tasa adicional para proteger contra abuso:Protección SSRF
Matcher bloquea las solicitudes HTTP salientes a rangos de IP privados al despachar excepciones a sistemas externos. Esto previene ataques de Server-Side Request Forgery (SSRF). Los rangos bloqueados incluyen10.0.0.0/8, 172.16.0.0/12, 192.168.0.0/16, 127.0.0.0/8 y equivalentes IPv6.
Verificación de firma de webhooks
Matcher firma los payloads de webhooks salientes con HMAC-SHA256 usando un secreto compartido por destino. La firma aparece en el encabezadoX-Signature-256, con el formato sha256=<hex-digest>, permitiendo a los receptores verificar la autenticidad. (El despacho también establece un encabezado X-Idempotency-Key para entrega como máximo una vez).
Mejores prácticas
Usa acceso de mínimo privilegio
Usa acceso de mínimo privilegio
Otorga a los usuarios solo los permisos que necesitan. Comienza con acceso mínimo y agrega permisos según sea necesario.
Rota credenciales regularmente
Rota credenciales regularmente
Implementa rotación automática para credenciales de servicio y secretos JWT. Usa tokens de corta duración cuando sea posible.
Habilita el registro de auditoría
Habilita el registro de auditoría
Mantén los logs de auditoría habilitados y revísalos regularmente. Configura alertas para actividad sospechosa.
Usa limitación de tasa
Usa limitación de tasa
Mantén los límites de tasa predeterminados habilitados para proteger contra abuso. Ajusta los umbrales según los patrones de tráfico esperados.
Revisa el acceso regularmente
Revisa el acceso regularmente
Realiza revisiones periódicas de acceso. Elimina el acceso rápidamente cuando los usuarios cambien de rol o se vayan.
Verifica firmas de webhooks
Verifica firmas de webhooks
Valida siempre las firmas HMAC-SHA256 en los payloads de webhooks para confirmar que se originan de Matcher.
Monitorea eventos de seguridad
Monitorea eventos de seguridad
Configura monitoreo y alertas en tiempo real para eventos de seguridad. Investiga anomalías de inmediato.
Próximos pasos
Reglas de coincidencia
Configura reglas de coincidencia de forma segura.
Enrutamiento de excepciones
Configura flujos de trabajo de excepciones seguros.

