Skip to content

EVD-SECURE-DEV — Evidencia de Desarrollo Seguro

CampoValor
DocumentoEVD-SECURE-DEV
Version1.0
ClasificacionInterno — Confidencial
Fecha de emision2026-04-03
Proxima revision2027-04-03
PropietarioCISO / Lider de Desarrollo
Requisito PCI DSS6.1, 6.2, 6.3, 6.4, 6.5
Preguntas ControlCaseQ35, Q37, Q38, Q39, Q40, Q42, Q43, Q1030
Politica de referenciaPOL-005-SDLC_CHANGE_MANAGEMENT
OrganizacionFintrixs SAS
InfraestructuraDigitalOcean Kubernetes (DOKS) / AWS EKS

Indice de Preguntas ControlCase

PreguntaTituloSeccion
Q35Politica de SDLC y Desarrollo Seguro2. Q35
Q37Revision de Codigo y Escaneo de Vulnerabilidades3. Q37
Q38Separacion de Entornos (prod/dev)4. Q38
Q39Separacion de Funciones (prod vs dev users)5. Q39
Q40Datos de Prueba y Limpieza Pre-produccion6. Q40
Q42Entrenamiento de Codificacion Segura7. Q42
Q43WAF para Aplicaciones Web Publicas8. Q43
Q1030Scripts de Pagina de Pago9. Q1030

1. Contexto de la Plataforma

Fintrixs opera una plataforma de procesamiento de pagos construida con una arquitectura de microservicios NestJS (TypeScript) sobre Kubernetes. El stack completo:

CapaTecnologia
RuntimeNode.js 20+, TypeScript 5.3+ (strict: true)
FrameworkNestJS 10.3 con Guards, Interceptors, Pipes
Base de datosPostgreSQL 16 con Row-Level Security (RLS)
MensajeriaApache Kafka (KafkaJS 2.2.4) — patron Outbox + Inbox
API GatewayKong 3.5 (declarativo, deck sync)
OrquestacionKubernetes (DigitalOcean DOKS / AWS EKS)
CI/CDGitHub Actions
FrontendVue 3 (Composition API), Vite 5, Pinia, TailwindCSS
RepositorioGitHub — Fintrixs-SAS/backend_fintrixs_pay

Microservicios en Scope PCI


2. Q35 — Politica de SDLC y Desarrollo Seguro

2.1 Politica Formal

Fintrixs mantiene la politica POL-005: Politica de SDLC Seguro y Gestion de Cambios (version 1.0, emitida 2026-03-13), que define el ciclo de vida completo de desarrollo seguro alineado con PCI DSS Requisito 6.

Ubicacion del documento: docs/security/policies/POL-005-SDLC_CHANGE_MANAGEMENT.md

2.2 Fases del SDLC

2.3 Controles Tecnicos Implementados en el SDLC

ControlImplementacionEvidencia
TypeScript estricto"strict": true en tsconfig.json de cada serviciobackend/apps/*/tsconfig.json, backend/packages/*/tsconfig.json
Validacion de inputsDTOs con class-validator en todos los endpointsbackend/apps/payments-api/src/payment-intent/dto/create-payment-intent.dto.ts, backend/apps/merchants/src/merchant-features/merchant-features.dto.ts
Queries parametrizadasTodos los accesos a PostgreSQL usan $1, $2... con pg poolbackend/apps/merchants/src/merchant-features/merchant-features.service.ts
Branch protectionmain protegido: requiere PR + review aprobadoGitHub Settings > Branch protection rules
CI automatizadoPipeline en cada push/PR: lint, audit, tests, build.github/workflows/backend-ci.yml, backend/.github/workflows/ci.yml
Security auditnpm audit --audit-level=high en CIbackend/.github/workflows/ci.yml (job: code-quality)
JWT RS256Autenticacion con clave asimetrica, verificacion en Guardsbackend/apps/payments-api/src/auth/jwt-auth.guard.ts

2.4 Ejemplo: DTO con Validacion (class-validator)

El siguiente fragmento muestra como se valida la creacion de un PaymentIntent — cada campo tiene decoradores que rechazan datos invalidos antes de llegar al servicio:

typescript
// backend/apps/payments-api/src/payment-intent/dto/create-payment-intent.dto.ts
export class CreatePaymentIntentDto {
  @IsUUID()
  merchant_id: string;

  @IsInt()
  @Min(1, { message: 'Amount must be greater than 0' })
  amount: number;

  @IsEnum(CurrencyCode)
  @IsOptional()
  currency?: CurrencyCode = CurrencyCode.USD;

  @IsString()
  @IsOptional()
  description?: string;
}

2.5 Ejemplo: Queries Parametrizadas (SQL Injection Prevention)

Todos los servicios que acceden directamente a PostgreSQL usan queries parametrizadas con placeholders posicionales ($1, $2, etc.). Nunca se concatenan strings para construir SQL:

typescript
// backend/apps/merchants/src/merchant-features/merchant-features.service.ts
const res = await this.db.pool.query(
  `SELECT * FROM ${this.schema}.payment_links WHERE id = $1 AND merchant_id = $2`,
  [id, merchantId],
);

2.6 Flujo de Trabajo Git (Branch Protection)


3. Q37 — Revision de Codigo y Escaneo de Vulnerabilidades

3.1 Proceso de Code Review

RequisitoImplementacion
HerramientaGitHub Pull Requests
Revisores requeridosMinimo 1 persona diferente al autor
Calificacion del revisorExperiencia demostrable en seguridad de aplicaciones
Alcance de la revisionVulnerabilidades OWASP, logica de negocio, manejo de datos sensibles
Bloqueo de mergePR no puede hacer merge sin review aprobado + CI verde
HistorialTodo queda registrado en el historial de PRs de GitHub

3.2 Pipeline de Seguridad Automatizado (CI/CD)

Pipelines activos:

PipelineArchivoTriggerComprobaciones
Code Quality & Lintingbackend/.github/workflows/ci.ymlPush a main, develop, feature/**; PRsESLint, npm audit --audit-level=high
Backend CI.github/workflows/backend-ci.ymlPush/PR a backend/Build, tests de service-factory, validacion de contratos
Security Scan (Trivy)backend/.github/workflows/ci.yml (job: security-scan)Push a main/developTrivy vulnerability scanner en imagenes Docker
Microservices Deploy.github/workflows/microservices-eks-deploy.ymlPush a main, workflow_dispatchBuild Docker, push ECR, deploy EKS via Helm

3.3 Herramientas de Seguridad

HerramientaPropositoEstadoEvidencia
npm auditVulnerabilidades en dependenciasActivo en CIbackend/.github/workflows/ci.yml job code-quality
ESLintAnalisis estatico de codigoActivo en CInpm run lint en pipeline
TrivyEscaneo de vulnerabilidades en imagenes DockerActivo en CIbackend/.github/workflows/ci.yml job security-scan
GitHub Security (SARIF)Dashboard de vulnerabilidadesActivoUpload de resultados Trivy a GitHub Security
SonarQubeSAST integralPendiente de implementacionRecomendacion: integrar sonarcloud-github-action
SnykSCA + SAST en tiempo realPendiente de implementacionRecomendacion: snyk test en CI

Nota: Se recomienda la implementacion de SonarQube Cloud y/o Snyk como capas adicionales de SAST/SCA para complementar npm audit y Trivy. Estas herramientas proporcionarian cobertura mas profunda de codigo fuente y dependencias transitivas.

3.4 Cobertura OWASP Top 10

#Vulnerabilidad OWASPControl en FintrixsEvidencia
A01Broken Access ControlRLS en PostgreSQL, JWT RS256 Guards, RBACbackend/db/*/core/*.sql (politicas RLS), backend/apps/payments-api/src/auth/jwt-auth.guard.ts
A02Cryptographic FailuresAES-256-GCM en vault, JWT RS256, TLS 1.2+card-vault-service, auth-service, Kong TLS config
A03Injection (SQL, NoSQL)Queries parametrizadas ($1, $2...), ORM TypeORM, DTOs class-validatormerchant-features.service.ts, create-payment-intent.dto.ts
A04Insecure DesignThreat modeling en fase de diseno, separacion CDE/AppPOL-005 seccion 2.2
A05Security MisconfigurationHardening de imagenes Docker (npm ci --omit=dev), no defaultsbackend/apps/*/Dockerfile
A06Vulnerable Componentsnpm audit, Trivy en CI, GitHub DependabotCI pipeline, GitHub Security tab
A07Auth FailuresJWT RS256, Argon2id para passwords, MFA, account lockout, session managementauth-service
A08Data Integrity FailuresEvent Outbox transaccional, inbox idempotente, firma de webhooks@fintrix/event-bus, @fintrix/event-inbox-pg
A09Logging Failures@fintrix/logging estructurado, PCI-safe (masking de PAN), audit triggersbackend/packages/logging/
A10SSRFValidacion de URLs en webhooks, Kong rate limitingwebhooks-service, Kong plugins

3.5 Ejemplo: Row-Level Security (RLS)

Las tablas con datos por merchant implementan RLS para que cada query solo acceda a datos del merchant autenticado, sin depender de WHERE en el codigo aplicativo:

sql
-- backend/db/merchants_db/core/006_merchant_features.sql
-- Ejemplo: tabla payment_links con RLS
ALTER TABLE merchants_core.payment_links ENABLE ROW LEVEL SECURITY;

La variable de sesion app.current_merchant_id se inyecta desde el JWT via el paquete @fintrix/tenant-context.


4. Q38 — Separacion de Entornos

4.1 Entornos Definidos

EntornoPropositoInfraestructuraDatosAcceso
Desarrollo (local)Codificacion, unit testsDocker Compose localDatos sinteticos (seed scripts)Desarrolladores
CI (GitHub Actions)Tests automatizadosRunners ubuntu-latest + PostgreSQL 16 efimeroDatos generados por fixturesAutomatizado (sin acceso humano)
StagingPruebas de integracionDOKS / EKS cluster fintrix-staging-eksDatos sinteticosDev + QA
ProduccionOperacion realDOKS / EKS cluster fintrix-prod-eksDatos reales de tarjetahabientesDevOps restringido (con MFA)

4.2 Arquitectura de Separacion

4.3 Controles de Separacion

ControlImplementacionEvidencia
Bases de datos separadasCada entorno tiene su propia instancia de Managed PostgreSQLTerraform configs en backend/infra/terraform/
Credenciales diferentesCada entorno usa Kubernetes Secrets / ConfigMaps unicosConfigService de NestJS lee process.env inyectado por K8s
Namespaces K8sNamespaces separados por servicio/entornokubectl get ns — namespaces: kong, payments-api, auth-service, etc.
Network Policiesdefault-deny-all en namespace CDEbackend/infra/kubernetes/network-policies.yaml
Cloud FirewallsReglas de firewall independientes por subnetdocs/pci-dss/firewall_rules.md
Node Pools aisladosCDE en nodos con taint pci-scope=true:NoScheduledocs/pci-dss/scope_definition.md
VPN para managementAcceso administrativo via WireGuard (:51820)docs/pci-dss/network_diagram.md

4.4 Configuracion por Entorno (ConfigService)

Todos los servicios NestJS obtienen su configuracion via @nestjs/config (ConfigService), que lee variables de entorno inyectadas por Kubernetes Secrets/ConfigMaps. Nunca se usa process.env directamente en el codigo aplicativo:

typescript
// Patron estandar en todos los servicios
constructor(private readonly configService: ConfigService) {
  this.schema = this.configService.get('DB_SCHEMA', 'merchants_core');
  this.kongProxyUrl = this.configService.get('KONG_PROXY_URL', 'http://localhost:8000');
}

Variables criticas por entorno:

VariableDesarrolloStagingProduccion
DATABASE_URLlocalhost:5432Managed PG stagingManaged PG produccion
KAFKA_BROKERSlocalhost:9092Kafka cluster stagingKafka cluster produccion
JWT_PUBLIC_KEYClave de desarrolloClave stagingClave produccion (RS256)
KONG_PROXY_URLlocalhost:8000Kong interno stagingKong interno produccion
ENCRYPTION_KEYClave efimera de devClave stagingClave produccion (HSM)

5. Q39 — Separacion de Funciones

5.1 Matriz de Acceso por Rol

RolDesarrolloStagingProduccionDescripcion
DesarrolladorRead/WriteReadSin accesoEscribe codigo, crea PRs
QAReadRead/WriteSin accesoValida en staging
DevOps / SREReadReadRead/Write (MFA)Opera produccion
CI/CD PipelineN/ADeploy autoDeploy auto (con aprobacion)Automatizado
CISOReadReadRead (audit only)Supervision de seguridad

5.2 Flujo de Deploy a Produccion

5.3 Controles Implementados

ControlMecanismoEvidencia
Branch protectionmain protegido: no push directo, requiere PR + reviewGitHub Settings → Branch protection rules
PR reviews obligatoriosMinimo 1 reviewer diferente al autorGitHub Branch protection: "Require pull request reviews"
CI gateMerge bloqueado si CI falla (lint, tests, audit).github/workflows/backend-ci.yml, ci.yml
Environment protectionDeploy a produccion requiere aprobacion explicita.github/workflows/microservices-eks-deploy.yml linea environment: production
RBAC en KubernetesGitHubActions role no puede crear namespaces (cluster-scope limitado)Pipeline: kubectl get ns "$NS" verifica pre-existencia
Runners diferenciadosStaging: self-hosted fintrix-vpc/staging; Produccion: fintrix-vpc/productionmicroservices-eks-deploy.yml linea 36
AWS IAM roles separadosStaging: AWS_ROLE_ARN_STAGING; Produccion: AWS_ROLE_ARN_PRODUCTIONOIDC federation en pipeline
Sin acceso directo a prod DBDesarrolladores no tienen credenciales de produccionSecrets gestionados via K8s Secrets, no compartidos

5.4 Evidencia: GitHub Actions Environment Protection

El pipeline microservices-eks-deploy.yml implementa separacion de entornos a nivel de GitHub:

yaml
# .github/workflows/microservices-eks-deploy.yml
environment: ${{ (github.event_name == 'workflow_dispatch'
  && github.event.inputs.environment == 'production')
  && 'production' || 'staging' }}

Produccion requiere aprobacion manual en GitHub Environment "production" antes de ejecutar el deploy.


6. Q40 — Datos de Prueba y Limpieza Pre-produccion

6.1 Generacion de Datos Sinteticos

Fintrixs genera datos de prueba exclusivamente sinteticos para entornos de desarrollo, CI y staging. Nunca se usan datos reales de tarjetahabientes en entornos inferiores.

Seed scripts:

ScriptUbicacionContenido
Seed de payment intentsbackend/db/payments_db/core/002_seed_payment_intents.sql53 transacciones con datos ficticios
Seed de merchant featuresbackend/db/merchants_db/core/007_seed_merchant_features.sqlDatos ficticios de merchants
Seeds de servicios generadosbackend/db/*/core/generated/001_tables.sqlTablas + datos para service factory

6.2 PANs de Prueba

Se utilizan exclusivamente PANs de prueba estandar de la industria. Los PANs de prueba no son numeros de tarjeta reales y son reconocidos por todos los procesadores como datos de test:

PAN de PruebaMarcaProposito
4111 1111 1111 1111VisaAprobacion exitosa
5500 0000 0000 0004MastercardAprobacion exitosa
visa_4242Visa (tokenizado)Referencia en metadata de seed
mastercard_5555Mastercard (tokenizado)Referencia en metadata de seed

Evidencia en seed scripts — los datos usan referencias tokenizadas, nunca PANs completos:

sql
-- backend/db/payments_db/core/002_seed_payment_intents.sql
methods TEXT[] := ARRAY[
  'visa_4242','mastercard_5555','pse','visa_4242','nequi', ...
];
-- Solo se almacenan referencias tokenizadas, no PANs reales

6.3 Datos Ficticios en Seeds

Los scripts de seed usan nombres, emails y montos completamente ficticios:

sql
customers TEXT[] := ARRAY[
  'Carlos Rodriguez','Maria Lopez','TechCorp SAS','Ana Martinez', ...
];
emails TEXT[] := ARRAY[
  'carlos@email.com','maria@email.com','billing@techcorp.co', ...
];

6.4 Controles de Limpieza Pre-produccion

ControlImplementacionVerificacion
No seed en produccionLos scripts de seed (002_seed_*.sql) no se ejecutan en produccionPipeline de deploy no incluye paso de seed
No datos hardcodeadosCI verifica que no existan credenciales ni datos reales en codigonpm audit + code review
No cuentas de prueba en prodUsuarios de test solo existen en dev/stagingRevision pre-deploy
Variables correctasConfigService garantiza que cada entorno apunta a su propia infraestructuraK8s Secrets por namespace
CI efimeroPostgreSQL de CI es un service container que se destruye al terminar el jobbackend/.github/workflows/ci.yml — servicio postgres efimero

6.5 Flujo de Validacion Pre-produccion


7. Q42 — Entrenamiento de Codificacion Segura

7.1 Estado Actual

AspectoEstado
Plataforma de entrenamientoControlCase — pendiente de completar registro
Material preparadoOWASP Top 10, PCI DSS for developers, NestJS security best practices
Equipo objetivoTodo el equipo de desarrollo y QA
Frecuencia planificadaAnual + onboarding de nuevos miembros

7.2 Composicion del Equipo

RolCantidadResponsabilidad PCI
Lider de Desarrollo / Arquitecto1Arquitectura CDE, threat modeling, code review
Desarrollador Backend Sr.2Desarrollo de microservicios en scope PCI
Desarrollador Frontend1Dashboard Vue 3, paginas de checkout
DevOps / SRE1Infraestructura K8s, pipelines CI/CD

7.3 Temas de Entrenamiento Planificados

TemaContenidoDuracion est.
OWASP Top 10 para Node.js/NestJSInjection, auth, XSS, SSRF aplicados al stack actual4 horas
PCI DSS para DesarrolladoresRequisitos 6.x, manejo de PAN, scope CDE3 horas
PostgreSQL SeguroQueries parametrizadas, RLS, gestion de privilegios2 horas
Gestion de SecretosVariables de entorno, ConfigService, K8s Secrets, nunca hardcodear1 hora
Secure Code ReviewQue buscar en un PR, patrones de riesgo, checklist2 horas
Docker/K8s SecurityHardening de imagenes, Network Policies, Pod Security Standards2 horas

7.4 Registros de Entrenamiento

Se mantendran registros de finalizacion con:

  • Nombre del participante
  • Fecha de finalizacion
  • Material cubierto
  • Resultado de evaluacion (cuando aplique)
  • Certificado de la plataforma ControlCase

Accion pendiente: Completar el proceso de registro en la plataforma ControlCase y programar las primeras sesiones de entrenamiento. Fecha objetivo: Q2 2026.


8. Q43 — WAF para Aplicaciones Web Publicas

8.1 Arquitectura de Proteccion Web

8.2 Kong como WAF (Implementacion Actual)

Kong Gateway actua como capa de proteccion WAF con los siguientes plugins configurados en backend/infra/kong/kong.yaml:

PluginFuncionConfiguracion
CORSControla origenes permitidos, metodos y headersActivo globalmente. Headers: Authorization, X-Merchant-Id, Content-Type, etc.
JWTValidacion de tokens RS256 en rutas protegidasclaims_to_verify: [exp], algorithm: RS256
Rate LimitingProteccion contra DDoS y abusoConfigurado por ruta critica
Request Size LimitingPreviene payloads excesivosLimite configurable por ruta
IP RestrictionWhitelist/blacklist de IPsDisponible para rutas administrativas
Bot DetectionIdentificacion de trafico automatizadoReglas basadas en User-Agent

8.3 Security Headers

Configurados en Kong para todas las respuestas HTTP:

HeaderValorProposito
Strict-Transport-Securitymax-age=31536000; includeSubDomainsForzar HTTPS
X-Content-Type-OptionsnosniffPrevenir MIME sniffing
X-Frame-OptionsDENYPrevenir clickjacking
X-XSS-Protection1; mode=blockFiltro XSS del navegador
Content-Security-Policydefault-src 'self'Restringir origenes de recursos
Referrer-Policystrict-origin-when-cross-originControlar informacion de referrer

8.4 DigitalOcean Cloud Firewall

Fintrixs utiliza Cloud Firewalls de DigitalOcean como primera capa de defensa perimetral:

FirewallSubnetRegla principal
DMZ FW10.100.1.0/24Solo acepta HTTPS 443 desde Internet
CDE FW10.100.10.0/24Solo acepta trafico desde LB y puertos especificos desde App
App FW10.100.20.0/24Trafico inter-servicio, sin acceso directo desde Internet
Mgmt FW10.100.30.0/24Solo VPN (WireGuard :51820)

Detalle completo: docs/pci-dss/firewall_rules.md

8.5 Recomendacion: WAF Dedicado

Si bien Kong proporciona funcionalidades de WAF basicas (rate limiting, headers, JWT), se recomienda implementar un WAF dedicado para cumplimiento completo de PCI DSS 6.4:

OpcionVentajasConsideraciones
Cloudflare WAFManaged rules OWASP, DDoS protection, bot managementRequiere cambiar DNS a Cloudflare
DigitalOcean App FirewallIntegracion nativa con DOKS, sin cambio de DNSFuncionalidades mas limitadas
AWS WAF (si en EKS)Integracion nativa con ALB/CloudFront, reglas managedSolo para workloads en AWS

Accion recomendada: Evaluar e implementar Cloudflare WAF como capa adicional frente al Load Balancer para obtener proteccion OWASP managed rules y DDoS avanzado.


9. Q1030 — Scripts de Pagina de Pago

9.1 Arquitectura de la Pagina de Pago

Fintrixs opera una SPA (Single Page Application) construida con Vue 3 que incluye funcionalidad de checkout/pago. La aplicacion se sirve como un bundle compilado por Vite:

9.2 Inventario de Scripts en Pagina de Pago

ScriptTipoOrigenJustificacionHash SRI
main.ts (Vue 3 app bundle)First-partyBuild ViteAplicacion principal del dashboard/checkoutGenerado en build
vue.runtime.esm-bundler.jsFirst-party (bundled)npm dependency, incluido en buildFramework de UIIncluido en bundle
piniaFirst-party (bundled)npm dependency, incluido en buildEstado global de la aplicacionIncluido en bundle
axiosFirst-party (bundled)npm dependency, incluido en buildCliente HTTP para API callsIncluido en bundle

9.3 Ausencia de Scripts de Terceros

La pagina de pago de Fintrixs no carga scripts de terceros (no hay Google Analytics, Facebook Pixel, ni SDKs de payment processors externos en la pagina de checkout). Todas las dependencias se incluyen en el bundle de Vite durante el build:

html
<!-- frontend/apps/fintrix-dashboard/index.html -->
<!doctype html>
<html lang="es">
  <head>
    <meta charset="UTF-8" />
    <link rel="icon" type="image/svg+xml" href="/fintrix-logo.svg" />
    <meta name="viewport" content="width=device-width, initial-scale=1.0" />
    <title>Fintrix Dashboard - Pasarela de Pagos</title>
  </head>
  <body>
    <div id="app"></div>
    <script type="module" src="/src/main.ts"></script>
  </body>
</html>

Solo se carga un unico script (/src/main.ts compilado por Vite) — todos los demas modulos estan incluidos en el bundle.

9.4 Content Security Policy (CSP)

CSP se configura como header HTTP en Kong Gateway para restringir que scripts pueden ejecutarse:

Content-Security-Policy: default-src 'self';
  script-src 'self';
  style-src 'self' 'unsafe-inline';
  img-src 'self' data:;
  connect-src 'self' https://api.fintrixs.com;
  font-src 'self';
  frame-ancestors 'none';
DirectivaValorEfecto
default-src'self'Solo recursos del mismo origen por defecto
script-src'self'Solo scripts first-party; bloquea scripts externos e inline
connect-src'self' https://api.fintrixs.comSolo API calls al backend propio
frame-ancestors'none'Previene embedding en iframes (clickjacking)

9.5 Subresource Integrity (SRI)

Para assets servidos desde CDN (si aplica en produccion), se genera SRI hash durante el build de Vite:

MecanismoEstadoDescripcion
Vite build hashingActivoCada archivo incluye hash en el nombre (main.a1b2c3.js)
SRI tags en HTMLConfigurableDisponible via plugin vite-plugin-sri si se sirven desde CDN externo
Verificacion de integridadActivoVite genera hashes unicos por build; cualquier modificacion invalida el cache

9.6 Vite Proxy en Desarrollo

En desarrollo local, las llamadas API se proxean a Kong Gateway local, sin exponer endpoints directamente:

typescript
// frontend/apps/fintrix-dashboard/vite.config.ts
server: {
  port: 5173,
  proxy: {
    '/api': {
      target: 'http://localhost:8000', // Kong Gateway
      changeOrigin: true,
      secure: false
    }
  }
}

9.7 Proceso de Revision Trimestral de Scripts

PasoActividadResponsable
1Inventariar todos los scripts cargados en paginas de pagoDesarrollador Frontend
2Verificar que no se hayan agregado scripts de tercerosLider de Desarrollo
3Validar que CSP headers estan configurados correctamenteDevOps
4Revisar package.json por dependencias nuevasCode Review en PR
5Documentar cualquier cambio en este inventarioCISO

10. Resumen de Evidencias y Ubicaciones

EvidenciaUbicacion en el Repositorio
Politica SDLCdocs/security/policies/POL-005-SDLC_CHANGE_MANAGEMENT.md
Pipeline CI — Code Qualitybackend/.github/workflows/ci.yml
Pipeline CI — Backend.github/workflows/backend-ci.yml
Pipeline Deploy.github/workflows/microservices-eks-deploy.yml
Configuracion Kongbackend/infra/kong/kong.yaml
DTOs con class-validatorbackend/apps/payments-api/src/payment-intent/dto/create-payment-intent.dto.ts
DTOs merchant featuresbackend/apps/merchants/src/merchant-features/merchant-features.dto.ts
Queries parametrizadasbackend/apps/merchants/src/merchant-features/merchant-features.service.ts
JWT RS256 Guardbackend/apps/payments-api/src/auth/jwt-auth.guard.ts
Seed data (sintetico)backend/db/payments_db/core/002_seed_payment_intents.sql
RLS policiesbackend/db/merchants_db/core/006_merchant_features.sql, backend/db/*/core/*.sql
Network diagramdocs/pci-dss/network_diagram.md
Firewall rulesdocs/pci-dss/firewall_rules.md
Scope definitiondocs/pci-dss/scope_definition.md
Frontend SPAfrontend/apps/fintrix-dashboard/index.html
Vite configfrontend/apps/fintrix-dashboard/vite.config.ts
Trivy security scanbackend/.github/workflows/ci.yml (job: security-scan)

Historial de Revisiones

VersionFechaAutorCambios
1.02026-04-03Lider de Desarrollo / SeguridadDocumento inicial — evidencias Q35, Q37, Q38, Q39, Q40, Q42, Q43, Q1030

Aprobacion

RolNombreFirmaFecha
CISO / Oficial de Seguridad__________________________________//____
Lider de Desarrollo__________________________________//____
Gerencia Ejecutiva__________________________________//____

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