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 sus datos.
Luego la autenticación verifica quién es usted:
- El aislamiento de inquilinos asegura que solo vea sus propios datos.
- RBAC verifica si tiene permiso para realizar la acción.
Protección por capas
| Capa | Protección |
|---|---|
| Transporte | Cifrado TLS 1.2+ |
| Autenticación | Tokens JWT vía lib-auth |
| Aislamiento de inquilinos | PostgreSQL con esquema por inquilino |
| Autorización | Control de acceso basado en roles |
| Auditoría | Logs inmutables de solo anexión |
| Almacenamiento | Cifrado en reposo |
Autenticación
Matcher usa la biblioteca compartida
lib-auth para autenticación, soportando OAuth 2.0 y control de acceso basado en JWT.
Métodos de autenticación soportados
| Método | Caso de uso |
|---|---|
| OAuth 2.0 + JWT | Autenticación de usuario vía IdP |
| Client Credentials | Autenticación servicio a servicio |
| API Keys | Acceso programático |
Estructura del token JWT
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: Valida la firma JWT contra la clave pública
- Verificación de expiración: Rechaza tokens expirados
- Validación de emisor: Confirma que el token es de un emisor confiable
- Extracción de inquilino: Extrae tenant_id para aislamiento de esquema
Autenticación servicio a servicio
Para servicios backend que se integran con Matcher:Respuesta
Autorización (RBAC)
El control de acceso basado en roles protege todos los endpoints de API. Los permisos son granulares y siguen el patrón
dominio:recurso:acción.
Estructura de permisos
ingestion:import:create- Crear importacionesmatching:job:run- Ejecutar trabajos de coincidenciaexception:item:resolve- Resolver excepciones
Lista completa de permisos
Ingesta
| Permiso | Descripción |
|---|---|
ingestion:import:create | Cargar archivos de transacciones |
ingestion:import:read | Ver estado de importación |
ingestion:import:cancel | Cancelar importaciones en progreso |
ingestion:source:create | Crear fuentes de datos |
ingestion:source:read | Ver configuración de fuente |
ingestion:source:update | Modificar configuración de fuente |
ingestion:source:delete | Eliminar fuentes de datos |
Coincidencias
| Permiso | Descripción |
|---|---|
matching:job:run | Ejecutar trabajos de coincidencia |
matching:job:read | Ver estado de trabajo |
matching:job:cancel | Cancelar trabajos en ejecución |
matching:match:read | Ver resultados de coincidencias |
matching:match:confirm | Confirmar coincidencias propuestas |
matching:match:reject | Rechazar coincidencias propuestas |
matching:rule:create | Crear reglas de coincidencia |
matching:rule:update | Modificar reglas de coincidencia |
matching:rule:delete | Eliminar reglas de coincidencia |
Excepciones
| Permiso | Descripción |
|---|---|
exception:item:read | Ver excepciones |
exception:item:resolve | Resolver excepciones |
exception:item:assign | Asignar excepciones |
exception:item:escalate | Escalar excepciones |
exception:routing:manage | Configurar reglas de enrutamiento |
Gobernanza
| Permiso | Descripción |
|---|---|
governance:report:read | Ver reportes |
governance:report:create | Generar reportes |
governance:report:export | Exportar datos de reportes |
governance:audit:read | Ver logs de auditoría |
governance:context:create | Crear contextos |
governance:context:update | Modificar contextos |
governance:context:delete | Eliminar contextos |
Administración
| Permiso | Descripción |
|---|---|
admin:user:manage | Gestionar acceso de usuarios |
admin:role:manage | Gestionar roles |
admin:tenant:configure | Configurar ajustes del inquilino |
admin:system:monitor | Ver salud del sistema |
Roles integrados
| Rol | Permisos | Caso de uso |
|---|---|---|
reconciliation_viewer | Acceso de solo lectura a coincidencias y excepciones | Auditores |
reconciliation_analyst | Ver + resolver excepciones | Equipo de finanzas |
reconciliation_admin | Acceso completo excepto admin del sistema | Líderes de equipo |
system_admin | Todos los permisos | Administradores de TI |
Aislamiento de inquilinos
Matcher usa aislamiento de esquema por inquilino en PostgreSQL, 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 usted controla). Luego establece la conexión de base de datos para usar el esquema de ese inquilino, por lo que cada consulta se ejecuta en completo aislamiento.Incluso si existiera un bug en la capa de aplicación, la base de datos impone la separación.
- ID de inquilino solo desde JWT: Nunca aceptado desde parámetros de solicitud
- Selección automática de esquema: Aplicado vía
auth.ApplyTenantSchema() - Aislamiento de consultas: Todas las consultas tienen alcance al esquema del inquilino
- Sin acceso entre inquilinos: La base de datos impone el aislamiento
Estructura del esquema de base de datos
Garantías de aislamiento
| Garantía | Implementación |
|---|---|
| Aislamiento de datos | Esquemas PostgreSQL separados |
| Alcance de consultas | search_path establecido por conexión |
| Sin suplantación de inquilino | Inquilino solo desde JWT |
| Separación de auditoría | Tablas de auditoría por inquilino |
Verificar aislamiento de inquilino
Pista de auditoría
Todas las acciones se registran en un log de auditoría inmutable de solo anexión para cumplimiento y análisis forense.
Eventos auditados
| Categoría | Eventos |
|---|---|
| Autenticación | Login, logout, refresh de token, intentos fallidos |
| Acceso a datos | Ver coincidencias, ver excepciones, exportar datos |
| Modificación de datos | Crear coincidencia, resolver excepción, actualizar reglas |
| Configuración | Crear contexto, modificar fuente, cambiar configuración |
| Administración | Gestión de usuarios, cambios de roles, otorgamiento de permisos |
Estructura del log de auditoría
Consultar logs de auditoría
Use el endpoint de logs de auditoría para recuperar registros de auditoría.Retención de logs de auditoría
| Entorno | Retención | Archivo |
|---|---|---|
| Producción | 7 años | Almacenamiento frío después de 1 año |
| Staging | 90 días | Sin archivo |
| Desarrollo | 30 días | Sin archivo |
Cifrado de datos
Cifrado en tránsito
Todos los datos transmitidos hacia y desde Matcher están cifrados usando TLS.| Requisito | Configuración |
|---|---|
| Protocolo | TLS 1.2 o superior |
| Suites de cifrado | Solo cifrados fuertes |
| Certificado | Certificado válido firmado por CA |
| HSTS | Habilitado con max-age de 1 año |
Cifrado en reposo
| Tipo de datos | Método de cifrado |
|---|---|
| Base de datos | PostgreSQL TDE (Cifrado de datos transparente) |
| Almacenamiento de archivos | Cifrado AES-256 |
| Respaldos | Cifrados antes de almacenamiento |
| Secretos | Vault con cifrado de sobre |
Cifrado de campos sensibles
Campos sensibles específicos se cifran a nivel de aplicación:Gestión de claves
| Práctica | Implementación |
|---|---|
| Rotación de claves | Rotación automática cada 90 días |
| Almacenamiento de claves | HashiCorp Vault o AWS KMS |
| Control de acceso | Principio de mínimo privilegio |
| Auditoría | Todo acceso a claves se registra |
Cumplimiento SOX
Matcher mantiene registros para los requisitos de auditoría SOX (Sarbanes-Oxley).
Características de control SOX
| Control | Característica de Matcher |
|---|---|
| Segregación de funciones | RBAC con permisos granulares |
| Gestión de cambios | Pista de auditoría para todos los cambios de configuración |
| Control de acceso | Autenticación JWT con aplicación de roles |
| Pista de auditoría | Logs inmutables con retención de 7 años |
| Integridad de datos | Checksums y validación de transacciones |
Principio de cuatro ojos
Imponga aprobación dual para acciones sensibles:Seguridad de API
Limitación de tasa
Proteja contra abuso con límites de tasa:| Tipo de endpoint | Límite |
|---|---|
| Operaciones de lectura | 1000/minuto |
| Operaciones de escritura | 100/minuto |
| Generación de reportes | 10/minuto |
| Cargas de archivos | 20/minuto |
Encabezados de límite de tasa
Lista de IPs permitidas
Restrinja el acceso a la API a rangos de IP conocidos:Firma de solicitudes
Para entornos de alta seguridad, habilite la firma de solicitudes:Mejores prácticas
Use acceso de mínimo privilegio
Use acceso de mínimo privilegio
Otorgue a los usuarios solo los permisos que necesitan. Comience con acceso mínimo y agregue permisos según sea necesario.
Rote credenciales regularmente
Rote credenciales regularmente
Implemente rotación automática para claves de API y credenciales de servicio. Use tokens de corta duración cuando sea posible.
Habilite el registro de auditoría
Habilite el registro de auditoría
Mantenga los logs de auditoría habilitados y revíselos regularmente. Configure alertas para actividad sospechosa.
Implemente lista de IPs permitidas
Implemente lista de IPs permitidas
Restrinja el acceso a la API a rangos de IP conocidos, especialmente para entornos de producción.
Use autenticación fuerte
Use autenticación fuerte
Requiera MFA para cuentas de usuario. Use autenticación basada en certificados para cuentas de servicio cuando sea posible.
Revise el acceso regularmente
Revise el acceso regularmente
Realice revisiones periódicas de acceso. Elimine el acceso rápidamente cuando los usuarios cambien de rol o se vayan.
Cifre datos sensibles
Cifre datos sensibles
Habilite el cifrado a nivel de campo para datos de transacciones sensibles más allá del cifrado de base de datos.
Monitoree eventos de seguridad
Monitoree eventos de seguridad
Configure monitoreo y alertas en tiempo real para eventos de seguridad. Investigue anomalías de inmediato.

