Skip to content

PCI DSS Pregunta 12 — Evidencia Extractada de Dispositivos de Red

CampoValor
SolicitanteJosé David Álvarez — QSA ControlCase
Comentario QSA"Por favor adjuntar la información o evidencia extractada de los dispositivos de red o sistemas equivalentes en el entorno cloud (security groups, security lists, etc.)"
Fecha2026-05-26
Tipo de evidenciaCloud Firewalls + VPC + Load Balancers + K8s NetworkPolicies
EstadoRESUELTO — Evidencia extraída directamente de DO API + kubectl
Paquete adjuntoq12-network-evidence-20260526.tar.gz

Resumen ejecutivo: Fintrixs opera 100% en infraestructura cloud (DigitalOcean). Los "dispositivos de red" tradicionales son reemplazados por Cloud Firewalls (security groups), VPC con CIDR segregados, Load Balancers gestionados, y Kubernetes NetworkPolicies (microsegmentación). Esta evidencia se extrajo directamente de las APIs nativas de cada uno (no son configuraciones documentadas, sino el estado real en producción).


1. Mapeo de "dispositivos de red" en entorno cloud

Dispositivo tradicionalEquivalente cloud en FintrixsCantidad
Firewall hardwareDigitalOcean Cloud Firewalls (Security Groups)14 firewalls
VLAN/VRFDigitalOcean VPC con CIDR isolation1 VPC PCI + 3 default
Switch L3 con ACLsKubernetes NetworkPolicies12 policies en 4 namespaces
Load Balancer hardwareDigitalOcean Managed Load Balancers2 LBs
IDS/IPSFalco DaemonSet (4 nodos)Real-time

2. VPC Configuration (Network Segmentation)

VPC de producción PCI

json
{
  "name": "fintrix-production-vpc",
  "id": "402acbe1-7336-4fde-ad20-e890013b8214",
  "ip_range": "10.100.0.0/16",
  "region": "nyc1",
  "default": true
}

Miembros de la VPC PCI (extraído de GET /v2/vpcs/{id}/members)

TipoRecursoURN
kubernetesfintrix-production-k8sdo:kubernetes:a19e81ac-537a-44ed-a228-8010f561a530
dropletfintrix-production-cdd (ControlCase CDD VM)do:droplet:07a04dfd-4068-4750-9f9b-5efd2a0f9d2a
dropletfintrix-production-collector (SIEM/Wazuh)do:droplet:856849d5-c815-4b31-97a5-e918f1f6d05f
dropletfintrix-production-vapt (ControlCase VAPT VM)do:droplet:d737662b-fa71-40b3-a9d3-d6941f3254d1
dbaasfintrix-production-fintrix-pci (PostgreSQL)do:dbaas:061abee8-1d2c-49f4-be08-55f0054288cb
dropletbitwarden (password manager)do:droplet:5b39985c-176c-401a-bf23-0537c1a42497

Archivos: 02-vpcs-pretty.json, 03-vpc-members-pretty.json


3. Cloud Firewalls (Security Groups) — Inventario

Resumen de los 14 firewalls

#Firewall NameInbound RulesOutbound RulesTagsPCI Scope
1k8s-...-worker (managed)33k8sSí (K8s)
2k8s-public-access-...63k8s
3fintrix-production-cdd-fw23-Sí (CDD VM)
4fintrix-production-collector-fw243-Sí (SIEM)
5fintrix-production-vapt-fw25-Sí (VAPT VM)
6fintrix-production-cde-fw94fintrix-cdeSí (CDE)
7fintrix-production-dmz-fw22fintrix, pci-dss
8fintrix-production-app-fw85fintrix-app
9fintrix-production-mgmt-fw63fintrix-mgmt
10smtp114-No
11SUpabase811-No
12PatroniIvory1819-No
13stackgres1012-No
14PGCluster56-No

4. CDE Firewall (Cardholder Data Environment) — Detalle Completo

Este es el firewall más crítico para PCI DSS porque protege el CDE:

Metadata

json
{
  "id": "89879427-5319-4a4e-a4b2-9262a725b7a3",
  "name": "fintrix-production-cde-fw",
  "status": "succeeded",
  "tags": ["fintrix-cde"]
}

Inbound Rules (9 reglas)

#ProtocolPortsSourcesPurpose
1ICMP0tag compliance-scannerControlCase VAPT/CDD scanning
2TCP1-65535tag compliance-scannerFull port scan from ControlCase VMs
3TCP44310.100.1.0/24 (DMZ)HTTPS from Kong
4TCP351010.100.10.0/24 (CDE internal)card-vault-service
5TCP360010.100.10.0/24, 10.100.20.0/24 (CDE + APP)tokenization-service
6TCP370010.100.10.0/24, 10.100.20.0/24auth-service
7TCP800010.100.1.0/24 (DMZ)Kong proxy
8TCP10250-1025510.100.0.0/16 (full VPC)K8s kubelet/system
9(See JSON)

Política por defecto: DENY ALL (todo lo no explícitamente permitido se rechaza). Este es el principio de "default deny" requerido por PCI DSS 1.2.1.

Archivos: firewalls-individual/fintrix-production-cde-fw.json


5. Kubernetes NetworkPolicies — Microsegmentación

Resumen (12 policies activas)

NAMESPACE    NAME                       POD-SELECTOR
app          allow-app-internal-kafka   <none>
app          allow-dns                  <none>
app          allow-egress-cde           <none>
app          allow-from-kong            <none>
app          default-deny-all           <none>
cde          allow-cde-internal         <none>
cde          allow-dns                  <none>
cde          allow-egress-kafka         kafka-client=true
cde          allow-egress-pci-db        <none>
cde          allow-from-kong            <none>
cde          default-deny-all           <none>
monitoring   allow-prometheus-scrape    app=prometheus

Pilar de seguridad: default-deny-all

yaml
apiVersion: networking.k8s.io/v1
kind: NetworkPolicy
metadata:
  name: default-deny-all
  namespace: cde
spec:
  podSelector: {}
  policyTypes:
    - Ingress
    - Egress

Esta política rechaza todo el tráfico hacia/desde pods del namespace cde (CDE). Solo se permite explícitamente lo definido en las otras policies.

Reglas de allow específicas para CDE

PolicyPermite
allow-from-kongSolo Kong (DMZ) puede llegar a pods CDE
allow-cde-internalPods CDE pueden hablarse entre ellos
allow-egress-pci-dbPods CDE pueden conectar a la DB managed
allow-egress-kafkaSolo pods con label kafka-client=true pueden hablar a Kafka
allow-dnsDNS lookups permitidos

Archivos: 05-k8s-networkpolicies.yaml, 05-k8s-networkpolicies.json


6. Load Balancers

LBs gestionados (DigitalOcean)

Name (ID)IPPurpose
Kong Proxy LB129.212.199.126Tráfico HTTP/HTTPS público → Kong → microservicios
Kong Admin LB129.212.199.127Administración Kong (acceso interno)

Cada LB tiene su propio firewall config integrado (campos firewall.allow y firewall.deny en la API). En nuestra config actual, los LBs no tienen ACLs adicionales (allow=[], deny=[]) porque el filtrado se realiza en los Cloud Firewalls y en los pods Kong (con plugins de rate-limit y IP restriction).

Archivos: 04-load-balancers-pretty.json


7. Capturas de Pantalla del Panel DigitalOcean

Las siguientes capturas son evidencia visual complementaria, tomadas directamente desde el panel web de DigitalOcean (https://cloud.digitalocean.com). Cada una muestra el estado real de los dispositivos de red equivalentes en cloud.

7.1 Lista de Cloud Firewalls

Capturar desde: https://cloud.digitalocean.com/networking/firewallsMostrar: Lista completa de los 14 firewalls con sus nombres, # de reglas, droplets aplicados. Guardar como: screenshots/q12-network-devices/01-firewalls-list.png

Lista de Cloud Firewalls DigitalOcean

7.2 Detalle del CDE Firewall (PCI crítico)

Capturar desde: Click en fintrix-production-cde-fw → tab "Rules" Mostrar: Las 9 inbound rules y 4 outbound rules con sus sources/destinations. Guardar como: screenshots/q12-network-devices/02-cde-firewall-rules.png

Reglas del CDE Firewall

7.3 Detalle del APP Firewall

Capturar desde: Click en fintrix-production-app-fw → tab "Rules" Guardar como: screenshots/q12-network-devices/03-app-firewall-rules.png

Reglas del APP Firewall

7.4 Detalle del DMZ Firewall

Capturar desde: Click en fintrix-production-dmz-fw → tab "Rules" Guardar como: screenshots/q12-network-devices/04-dmz-firewall-rules.png

Reglas del DMZ Firewall

7.5 Detalle del Management Firewall

Capturar desde: Click en fintrix-production-mgmt-fw → tab "Rules" Guardar como: screenshots/q12-network-devices/05-mgmt-firewall-rules.png

Reglas del Management Firewall

7.6 VPC Configuration

Capturar desde: https://cloud.digitalocean.com/networking/vpcMostrar: Lista de VPCs con CIDR ranges. Click en fintrix-production-vpc para ver miembros. Guardar como: screenshots/q12-network-devices/06-vpc-list.png y 07-vpc-pci-members.png

Lista de VPCs

Miembros de la VPC PCI

7.7 Load Balancers

Capturar desde: https://cloud.digitalocean.com/networking/load_balancersMostrar: Los 2 LBs con sus IPs, forwarding rules, health checks. Guardar como: screenshots/q12-network-devices/08-load-balancers.png

Load Balancers

7.8 K8s NetworkPolicies (desde el cluster)

Capturar desde: Ejecutar en terminal kubectl get networkpolicies -A y tomar screenshot del output completo. Guardar como: screenshots/q12-network-devices/09-k8s-networkpolicies.png

K8s NetworkPolicies

Instrucciones para capturar

bash
# Para el screenshot #8 (kubectl), puedes hacerlo via terminal y captura de pantalla
kubectl get networkpolicies -A -o wide
# Luego screenshot del terminal (Cmd+Shift+4 en macOS)

# Para verificar el output exacto que debe aparecer:
kubectl get networkpolicies -A -o wide > /tmp/np-snapshot.txt
cat /tmp/np-snapshot.txt

Nota para el auditor: Si las imágenes no aparecen, es porque las capturas aún están pendientes de subir. La evidencia JSON cruda en q12-network-evidence-20260526.tar.gz es independiente y completa por sí misma.


8. Cómo verificar la evidencia (comandos para el auditor)

Re-extraer las reglas en cualquier momento

bash
# 1. Listar todos los firewalls
doctl compute firewall list --output json

# 2. Detalle de un firewall específico (ej: CDE)
doctl compute firewall get 89879427-5319-4a4e-a4b2-9262a725b7a3 --output json

# 3. Listar VPCs
doctl vpcs list --output json

# 4. Miembros de la VPC PCI
doctl vpcs get 402acbe1-7336-4fde-ad20-e890013b8214 --output json

# 5. K8s NetworkPolicies
kubectl get networkpolicies -A -o yaml

# 6. Load Balancers
doctl compute load-balancer list --output json

Via DigitalOcean Web Panel (audit log de cambios)

https://cloud.digitalocean.com/networking/firewalls
https://cloud.digitalocean.com/networking/vpc
https://cloud.digitalocean.com/networking/load_balancers
https://cloud.digitalocean.com/account/activity (historial de modificaciones)

9. Cumplimiento PCI DSS Pregunta 12

Requisito específicoCómo se cumpleEvidencia
Q12 — Reglas firewall entrantesCloud Firewalls con reglas explícitas allow + K8s NetworkPolicies01-do-cloud-firewalls.json, 05-k8s-networkpolicies.yaml
Q12 — Reglas firewall salientesOutbound rules en cada Cloud Firewall + egress en NetworkPoliciesMismos archivos (campos outbound_rules y egress)
Q12 — VLAN/SegmentaciónVPC con CIDR aislados + subnets internas (DMZ/CDE/APP/MGMT)02-vpcs.json, 03-vpc-members.json
Default denyPolítica default-deny-all en CDE y APP namespaces05-k8s-networkpolicies.yaml
Tags = security groupsDO usa tags (compliance-scanner, fintrix-cde, fintrix-app, etc.)Visible en cada firewalls-individual/*.json

10. Paquete de evidencia descargable

📥 Descargar evidencia completa (q12-network-evidence-20260526.tar.gz)

Contenido del archivo:

q12-network-evidence/
├── 00-RESUMEN-PCI-Q12.txt              ← Documento ejecutivo
├── 01-do-cloud-firewalls.json          ← Raw API response (14 firewalls)
├── 01-do-cloud-firewalls-pretty.json   ← Formatted JSON
├── 02-vpcs.json                        ← All VPCs
├── 02-vpcs-pretty.json
├── 03-vpc-members.json                 ← Members of PCI VPC
├── 03-vpc-members-pretty.json
├── 04-load-balancers.json              ← Load Balancers
├── 04-load-balancers-pretty.json
├── 05-k8s-networkpolicies.yaml         ← 12 NetworkPolicies (YAML)
├── 05-k8s-networkpolicies.json         ← Same (JSON)
└── firewalls-individual/
    ├── fintrix-production-cde-fw.json  ← CDE firewall (PCI critical)
    ├── fintrix-production-app-fw.json
    ├── fintrix-production-dmz-fw.json
    ├── fintrix-production-collector-fw.json
    ├── fintrix-production-vapt-fw.json
    ├── fintrix-production-cdd-fw.json
    ├── fintrix-production-mgmt-fw.json
    ├── k8s-*-worker.json
    └── k8s-public-access-*.json

Historial de revisiones

FechaRevisorCambios
2026-05-26Equipo FintrixsRe-extracción tras feedback QSA — toda la evidencia desde APIs nativas

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