Saltar al contenido principal
Matcher implementa controles de seguridad integrales para proteger los datos de conciliación financiera. Esta guía cubre autenticación, autorización, aislamiento de inquilinos, cifrado y características de cumplimiento. Los datos de conciliación financiera se encuentran entre los más sensibles de cualquier organización — abarcan registros de transacciones, información de contrapartes y obligaciones regulatorias. Normativas como SOC 2, PCI DSS y los requisitos de las autoridades financieras locales exigen controles específicos en torno al acceso, el cifrado y la auditabilidad. Matcher está diseñado con estos requisitos en mente, proporcionando seguridad en profundidad en cada capa del sistema.

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

Con AUTH_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:
  1. Verificación de firma: Delegada al proveedor de autenticación configurado (servicio plugin-auth o JWKS de WorkOS) — Matcher no guarda ningún secreto de firma local
  2. Verificación de expiración: Rechaza tokens expirados (claim exp)
  3. Verificación de not-before: Rechaza tokens usados antes de su tiempo nbf
  4. Extracción de inquilino: Extrae tenant_id para 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

Los recursos son sustantivos de producto planos (en plural), sin prefijo de dominio ni segmento de sub-recurso. Las acciones son verbos que describen la operación realizada sobre el sustantivo. Ejemplos:
  • contexts:create — Crear contextos de conciliación
  • match-runs:run — Ejecutar ejecuciones de coincidencia
  • exceptions: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 permiso resource: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 usa SET 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.
Detalles de implementación
  1. ID de inquilino solo desde JWT: Nunca aceptado desde parámetros de solicitud
  2. Resolución automática de pool: El pool de conexiones de la base de datos del inquilino se resuelve desde el contexto
  3. Aislamiento físico: Las consultas de cada inquilino se ejecutan contra su propia base de datos, no una compartida
  4. 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:
Referencia de API: Listar logs 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 error 400 Bad Request.
cURL
La operación de upsert devuelve el mapeo de actor persistido directamente en la respuesta, para que puedas verificar los valores guardados sin una solicitud GET separada.

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
Referencia de API: Pseudonimizar actor

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
Referencia de API: Listar archivos | Descargar archivo

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 incluyen 10.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 encabezado X-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


Otorga a los usuarios solo los permisos que necesitan. Comienza con acceso mínimo y agrega permisos según sea necesario.
Implementa rotación automática para credenciales de servicio y secretos JWT. Usa tokens de corta duración cuando sea posible.
Mantén los logs de auditoría habilitados y revísalos regularmente. Configura alertas para actividad sospechosa.
Mantén los límites de tasa predeterminados habilitados para proteger contra abuso. Ajusta los umbrales según los patrones de tráfico esperados.
Realiza revisiones periódicas de acceso. Elimina el acceso rápidamente cuando los usuarios cambien de rol o se vayan.
Valida siempre las firmas HMAC-SHA256 en los payloads de webhooks para confirmar que se originan de Matcher.
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.