Skip to content

Fintrixs Security Architecture

Overview

Este documento describe la arquitectura de seguridad implementada en la pasarela de pagos Fintrixs, diseñada para cumplir con los estándares PCI DSS y las mejores prácticas de seguridad en la industria de pagos.

Índice

  1. Principios de Seguridad
  2. Capas de Seguridad
  3. Autenticación y Autorización
  4. Tokenización
  5. Encriptación
  6. Auditoría y Logging
  7. Seguridad de Red
  8. Gestión de Secretos

Principios de Seguridad

Defense in Depth

Múltiples capas de seguridad para proteger los datos sensibles:

Least Privilege

  • Cada microservicio tiene acceso solo a los datos que necesita
  • Roles de base de datos específicos por servicio
  • Row Level Security (RLS) para aislamiento multi-tenant

Zero Trust

  • Autenticación en cada capa
  • No confiar en la red interna
  • Verificar siempre la identidad del servicio

Capas de Seguridad

1. API Gateway (Kong)

yaml
Funciones:
  - Rate Limiting
  - JWT/API Key Authentication
  - IP Restriction
  - Request/Response Transformation
  - TLS Termination
  - CORS Management

Configuración: infra/kong/kong.yaml

2. Service Mesh (Interno)

yaml
Funciones:
  - mTLS entre servicios
  - Service Discovery
  - Circuit Breaker
  - Load Balancing

3. Application Layer

yaml
Funciones:
  - Input Validation (DTOs)
  - Output Sanitization
  - Business Logic Authorization
  - Structured Logging

4. Database Layer

yaml
Funciones:
  - Row Level Security (RLS)
  - Column Encryption
  - Audit Triggers
  - Connection Pooling

Autenticación y Autorización

API Authentication

MétodoUsoImplementación
JWTDashboard, AppsRS256 con rotación de keys
API KeyServidor a ServidorSHA256 hash almacenado
mTLSServicios InternosCertificados PKI

Flujo de Autenticación

Database Roles

sql
-- Roles definidos en db/payments_db/core/migrations/005_create_rls_roles.sql

api_user    → Schema: payments_api (SELECT, INSERT)
core_user   → Schema: payments_core (FULL)
vault_user  → Schema: payments_vault (tokenize/detokenize only)

Tokenización

Arquitectura

Componentes:

  • apps/tokenization-service/ - Servicio de tokenización
  • db/payments_db/vault/ - Schema de vault encriptado

Documentación detallada: TOKENIZATION_FLOW.md


Encriptación

En Tránsito

ConexiónProtocoloVersión Mínima
Cliente → APITLS1.2
Servicio → ServiciomTLS1.2
Servicio → DatabaseTLS1.2

En Reposo

DatoAlgoritmoKey Management
PAN TokenizadoAES-256-GCMHashiCorp Vault
PasswordsArgon2idN/A
API KeysSHA256N/A
BackupsAES-256AWS KMS

Key Rotation

yaml
Frecuencia:
  - Master Keys: Anual
  - Data Keys: Mensual
  - JWT Keys: Semanal
  - Session Keys: Por sesión

Auditoría y Logging

Audit Log Schema

sql
-- db/payments_db/core/migrations/006_create_audit_triggers.sql

audit_log:
  - event_id
  - event_type (INSERT, UPDATE, DELETE, SELECT, LOGIN)
  - schema_name, table_name, record_id
  - old_values, new_values (masked)
  - user_id, session_id
  - client_ip, service_name
  - timestamp (with timezone)
  - sensitivity_level

Log Levels

LevelUsoRetención
DEBUGDesarrollo1 día
INFOOperacional7 días
WARNAlertas30 días
ERRORIncidentes90 días
AUDITCumplimiento1 año

Sensitive Data Masking

typescript
// packages/logging/src/logger.service.ts

const SENSITIVE_FIELDS = [
  'card_number', 'pan', 'cvv', 'cvc',
  'password', 'secret', 'token', 'key',
  'ssn', 'tax_id', 'account_number'
];

// Auto-redacted: "card_number": "[REDACTED]"

Seguridad de Red

Network Segmentation

Firewall Rules

yaml
DMZ:
  - Inbound: 443 (HTTPS only)
  - Outbound: App Zone ports

App Zone:
  - Inbound: DMZ only
  - Outbound: Data Zone, External APIs

Data Zone:
  - Inbound: App Zone only
  - Outbound: None

Gestión de Secretos

HashiCorp Vault (Recomendado)

yaml
Secretos Almacenados:
  - Database credentials
  - API keys
  - Encryption keys
  - JWT signing keys
  - Third-party credentials

Kubernetes Secrets (Alternativa)

yaml
# Encriptados con SOPS/Sealed Secrets
apiVersion: v1
kind: Secret
metadata:
  name: fintrix-secrets
type: Opaque
data:
  DATABASE_PASSWORD: <base64-encrypted>
  ENCRYPTION_KEY: <base64-encrypted>

Environment Variables

bash
# .env (desarrollo local)
# NUNCA en producción

DATABASE_URL=postgresql://...
ENCRYPTION_KEY=dev-only-key
JWT_SECRET=dev-secret

Compliance Checklist

PCI DSS Requirements

ReqDescripciónEstadoImplementación
1FirewallKong, Network Policies
2No defaultsCustom configs
3Protect stored dataTokenization, Encryption
4Encrypt transmissionTLS 1.2+
5Anti-virusContainer scanning
6Secure systemsHardened images
7Restrict accessRBAC, RLS
8Unique IDsJWT, API Keys
9Physical accessCloud provider
10Track accessAudit logs
11Test securityPenetration testing
12Security policyThis documentation

Documentación detallada: PCI_DSS_CONTROLS.md


Incident Response

Severity Levels

LevelDescripciónResponse Time
P1Data breach15 min
P2Service down30 min
P3Security alert2 hours
P4Minor issue24 hours

Response Procedure

  1. Detect - Alerting (Prometheus, PagerDuty)
  2. Contain - Isolate affected systems
  3. Investigate - Audit logs analysis
  4. Remediate - Fix and patch
  5. Report - Compliance notification if required

Referencias

Documentación Confidencial — Solo para uso interno y auditoría PCI DSS