StackPractices
intermediate Por Mathias Paulenko

Plantilla de Analisis de Brechas de Cumplimiento

Una plantilla para mapear controles de seguridad actuales a marcos de cumplimiento como SOC 2, ISO 27001 y PCI-DSS.

Descripcion General

Un Analisis de Brechas de Cumplimiento compara tus controles de seguridad actuales contra los requisitos de un marco objetivo, como SOC 2, ISO 27001, PCI-DSS o GDPR. Esta plantilla captura el requisito, el control que lo satisface, la evidencia disponible, cualquier pieza faltante y un plan para cerrar las brechas. Es un insumo estandar para la preparacion de auditorias y hojas de ruta de certificacion. Documentos relacionados: Implementar Rate Limiting de APIs con Redis, Autenticacion y Patrones de Seguridad para WebSockets y Cómo hashear contraseñas (Python, JavaScript, Java).

Cuando Usar

  • For alternatives, see Access Control Review Template.

  • Prepararse para una auditoria o certificacion inicial.

  • Renovar una certificacion e identificar cambios desde la ultima auditoria.

  • Fusionar empresas o integrar nuevas unidades de negocio.

  • Despues de un cambio importante en arquitectura, procesos o proveedores.

  • Construir una hoja de ruta de seguridad vinculada a obligaciones de cumplimiento.

Prerequisitos

  • El marco objetivo y version, como SOC 2 Trust Services Criteria 2017.
  • Un inventario de politicas, controles y procesos de seguridad.
  • Acceso a repositorios de evidencia, sistemas de tickets y consolas cloud.
  • Un equipo multifuncional de seguridad, ingenieria, legal y RRHH.

Solucion

Plantilla

1. Vision General del Compromiso

CampoDescripcionValor
MarcoEstandar de cumplimiento objetivoSOC 2 Tipo II
VersionVersion o criterios especificosTrust Services Criteria 2017
AlcanceSistemas, equipos o ubicaciones cubiertasAmbiente cloud de produccion
Fecha de evaluacionCuando se realizo el analisis2026-06-27
DuenoPersona responsable del analisisGerente de cumplimiento
Fecha objetivo de auditoriaCertificacion o auditoria planeada2027-03-31

2. Mapeo de Controles

ID RequisitoObjetivo de ControlControl ActualEvidenciaEstadoBrechaDuenoFecha Limite
CC6.1Acceso logicoPolitica RBAC aplicadaDoc de politica RBAC, config IAMParcialMFA no aplicada a todos los roles adminEquipo IAM2026-08-15
CC6.6Monitoreo de sistemasLogs centralizados en SIEMDashboard SIEM, politica de retencionCumpleNingunaEquipo de seguridadN/A
CC7.1Gestion de vulnerabilidadesEscaneos trimestralesReporte del escanerParcialSin SLA de remediacionEquipo de gestion de vulnerabilidades2026-09-01
A.12.3.1Respaldo de informacionPolitica de backup existePolitica de backup, prueba de restauracionCumpleNingunaEquipo DevOpsN/A
A.9.2.3Derechos de accesoProceso de revision de accesoRevisiones trimestrales de accesoParcialRevisiones no documentadasGerentes de ingenieria2026-07-30

3. Resumen de Brechas

CategoriaTotalCumpleParcialNo CumpleRiesgo
Control de acceso12741Alto
Monitoreo8620Medio
Gestion de cambios6321Alto
Gestion de proveedores5221Medio
Respuesta a incidentes7511Alto
Total3823114Alto

4. Plan de Remediacion

ID BrechaDescripcionAccionDuenoFecha LimitePrioridadEvidencia Requerida
GAP-01MFA faltante para roles adminAplicar MFA en todas las cuentas privilegiadasEquipo IAM2026-08-15AltaReporte de inscripcion MFA
GAP-02Sin SLA de remediacion de vulnerabilidadesDefinir y aprobar SLA por severidadEquipo de seguridad2026-09-01AltaDocumento de SLA
GAP-03Revisiones de acceso no documentadasUsar plantilla de revision de acceso trimestralGerentes de ingenieria2026-07-30MediaAtestaciones firmadas
GAP-04Sin evaluacion formal de proveedoresAdoptar plantilla de evaluacion de proveedoresCompras2026-10-01MediaEvaluaciones completadas

5. Seguimiento de Evidencia

ID RequisitoUbicacion de EvidenciaUltima ActualizacionRevisorNotas
CC6.1/policies/rbac-policy2026-06-01Lider de seguridadAprobado y publicado
CC6.6/siem/retention-config2026-05-15Analista SOCRetencion de 12 meses confirmada
A.12.3.1/runbooks/backup-restore-test2026-06-20Lider DevOpsPrueba trimestral de restauracion exitosa

Explicacion

El analisis de brechas convierte el cumplimiento en un proyecto útil. Al mapear cada requisito a un control, evidencia y estado, puedes priorizar el trabajo basado en riesgo y cronograma de auditoria. El plan de remediacion se convierte en la hoja de ruta que impulsa las tareas de ingenieria, seguridad y legal hacia la certificacion.

Variantes

  • Evaluacion de preparacion SOC 2: Enfocada en Trust Services Criteria con controles y evidencia comunes.
  • Analisis de brechas ISO 27001: Mapeado a controles del Anexo A y planes de tratamiento de riesgo.
  • Analisis de brechas PCI-DSS: Centrado en el entorno de datos de tarjetahabientes, cifrado y acceso.
  • Mapeo de cumplimiento GDPR: Rastrea derechos de los titulares de datos, registros de procesamiento y consentimiento.
  • Mapeo multi-marco: Una matriz unificada mostrando cobertura entre SOC 2, ISO 27001 y PCI-DSS.

Lo que funciona

  • Usa la version oficial del marco para evitar requisitos obsoletos.
  • Involucra a los duenos de los controles, no solo al equipo de cumplimiento, en la evaluacion.
  • Recolecta evidencia durante el analisis, no despues.
  • Califica las brechas por riesgo y preparacion para auditoria, no solo por volumen.
  • Rastrea la remediacion como un proyecto con duenos, fechas y entregables.
  • Vuelve a ejecutar el analisis trimestralmente o despues de cambios mayores.
  • Manten una fuente unica de verdad para ubicaciones de evidencia.

Errores Comunes

  • Tratar el cumplimiento como un proyecto de una sola vez en lugar de un programa continuo.
  • Mapear controles a requisitos sin revisar la evidencia real.
  • Asignar remediacion a equipos sin capacidad o autoridad.
  • Usar versiones obsoletas de marcos.
  • Sobre-documentar controles triviales mientras se omiten brechas criticas.
  • No vincular el analisis de brechas con historial de incidentes o evaluaciones de riesgo.

Soluciones Avanzadas

Recoleccion automatizada de evidencia con AWS Config

Automatiza la recoleccion de evidencia para SOC 2 e ISO 27001 usando AWS Config rules:

#!/bin/bash
set -euo pipefail

# Export AWS Config compliance data for audit evidence
aws configservice select-aggregate-resource-config \
  --configuration-aggregator-name "OrganizationConfigAggregator" \
  --expression '
    SELECT
      resourceId,
      resourceType,
      configurationItemStatus,
      configuration,
      tags
    WHERE
      resourceType = "AWS::Config::ConfigRule"
      AND configurationItemStatus = "OK"
  ' \
  --limit 100 > config-compliance-evidence.json

# Generate MFA enforcement evidence for CC6.1
aws iam get-account-summary > iam-account-summary.json
aws iam list-virtual-mfa-devices > mfa-devices.json

# Check root account MFA status
ROOT_MFA=$(aws iam get-account-summary --query 'SummaryMap.AccountMFAEnabled' --output text)
echo "Root MFA enabled: $ROOT_MFA" >> mfa-evidence.txt

# Generate S3 bucket encryption evidence for CC6.7
aws s3api list-buckets --query 'Buckets[].Name' --output text | \
  tr '\t' '\n' | \
  while read bucket; do
    ENC=$(aws s3api get-bucket-encryption --bucket "$bucket" --query 'ServerSideEncryptionConfiguration.Rules[0].ApplyServerSideEncryptionByDefault.SSEAlgorithm' --output text 2>/dev/null || echo "None")
    echo "$bucket: $ENC" >> s3-encryption-evidence.txt
  done

# Generate CloudTrail logging evidence for CC7.2
aws cloudtrail describe-trails --query 'trailList[].{Name:Name,IsLogging:IsLogging,S3Bucket:S3BucketName}' --output table > cloudtrail-evidence.txt

Matriz de mapeo de controles multi-marco

Crea un mapeo unificado entre SOC 2, ISO 27001 y PCI-DSS para evitar trabajo duplicado:

import json
from pathlib import Path

FRAMEWORK_MAPPING = {
    "MFA enforcement": {
        "soc2": "CC6.1",
        "iso27001": "A.9.4.2",
        "pci": "8.3.1",
        "control": "Multi-factor authentication for all privileged accounts",
        "evidence": ["IAM MFA config", "Enrollment report", "Root MFA status"],
    },
    "Encryption at rest": {
        "soc2": "CC6.7",
        "iso27001": "A.10.1.1",
        "pci": "3.4",
        "control": "AES-256 encryption for all data stores",
        "evidence": ["KMS key policy", "S3 encryption config", "RDS encryption status"],
    },
    "Centralized logging": {
        "soc2": "CC7.2",
        "iso27001": "A.12.4.1",
        "pci": "10.1",
        "control": "All systems forward logs to centralized SIEM",
        "evidence": ["SIEM ingestion config", "Log source inventory", "Retention policy"],
    },
    "Vulnerability scanning": {
        "soc2": "CC7.1",
        "iso27001": "A.12.6.1",
        "pci": "11.2",
        "control": "Quarterly vulnerability scans with remediation SLA",
        "evidence": ["Scanner reports", "Remediation tickets", "SLA document"],
    },
    "Access reviews": {
        "soc2": "CC6.3",
        "iso27001": "A.9.2.5",
        "pci": "8.2.4",
        "control": "Quarterly access reviews with documented attestation",
        "evidence": ["Review records", "Manager sign-off", "Removal tickets"],
    },
}

def generate_mapping_report(mapping: dict) -> str:
    lines = []
    lines.append("| Control | SOC 2 | ISO 27001 | PCI-DSS | Evidence |")
    lines.append("|---------|-------|-----------|---------|----------|")
    for name, data in mapping.items():
        evidence = ", ".join(data["evidence"])
        lines.append(
            f"| {name} | {data['soc2']} | {data['iso27001']} | "
            f"{data['pci']} | {evidence} |"
        )
    return "\n".join(lines)

report = generate_mapping_report(FRAMEWORK_MAPPING)
Path("multi-framework-mapping.md").write_text(report)
print(report)

Monitoreo continuo de cumplimiento con OPA

Usa Open Policy Agent (OPA) para verificar continuamente controles de cumplimiento en Kubernetes:

# OPA Gatekeeper policy: Enforce MFA-required labels on all deployments
apiVersion: templates.gatekeeper.sh/v1
kind: ConstraintTemplate
metadata:
  name: k8srequiredlabels
spec:
  crd:
    spec:
      names:
        kind: K8sRequiredLabels
      validation:
        openAPIV3Schema:
          type: object
          properties:
            labels:
              type: array
              items:
                type: string
  targets:
    - target: admission.k8s.gatekeeper.sh
      rego: |
        package k8srequiredlabels

        violation[{"msg": msg, "details": {"missing_labels": missing}}] {
          provided := {label | input.review.object.metadata.labels[label]}
          required := {label | label := input.parameters.labels[_]}
          missing := required - provided
          count(missing) > 0
          msg := sprintf("Missing required labels: %v", [missing])
        }
---
apiVersion: constraints.gatekeeper.sh/v1beta1
kind: K8sRequiredLabels
metadata:
  name: require-compliance-labels
spec:
  match:
    kinds:
      - apiGroups: ["apps"]
        kinds: ["Deployment"]
  parameters:
    labels: ["compliance-scan", "data-classification", "owner-team"]

Mejores Practicas Adicionales

  1. Usa un enfoque de compliance-as-code. Define controles como codigo (politicas OPA, AWS Config rules, politicas Sentinel de Terraform) para que el cumplimiento se verifique continuamente, no solo se evalue anualmente:
# Sentinel policy for Terraform: Enforce encryption on all S3 buckets
import "tfplan"

main = rule when tfplan.resource_changes is not empty {
  all tfplan.resource_changes as _, rc {
    rc.type is "aws_s3_bucket" implies
    rc.change.after.server_side_encryption_configuration is not null
  }
}
  1. Manten un repositorio de evidencia vivo. Almacena toda la evidencia en un repositorio versionado con actualizaciones automatizadas. Esto elimina la recoleccion de evidencia de ultimo momento antes de auditorias:
#!/bin/bash
set -euo pipefail

EVIDENCE_DIR="compliance-evidence/$(date +%Y-%m)"
mkdir -p "$EVIDENCE_DIR"

# Auto-collect monthly evidence snapshots
aws configservice get-discovery-summary > "$EVIDENCE_DIR/config-summary.json"
kubectl get compliance-scores -A -o json > "$EVIDENCE_DIR/k8s-compliance.json"
npm audit --json > "$EVIDENCE_DIR/npm-audit.json"
trivy image --format json myapp:latest > "$EVIDENCE_DIR/trivy-scan.json"

git add "$EVIDENCE_DIR"
git commit -m "compliance: monthly evidence snapshot $(date +%Y-%m)"

Preguntas frecuentes

Cuanto tiempo toma un analisis de brechas?

Una evaluacion enfocada para un estandar tipicamente toma de 2 a 4 semanas, dependiendo del alcance, madurez y disponibilidad de evidencia. Los mapeos multi-marco toman mas tiempo.

Quien debe ser dueno del analisis de brechas?

Un gerente de cumplimiento o riesgo usualmente posee el documento, pero cada requisito debe tener un dueno del control que valide la evidencia y se comprometa con la remediacion.

Que cuenta como evidencia?

Politicas, capturas de configuracion, logs de auditoria, registros de tickets, atestaciones firmadas, registros de capacitacion completada, resultados de pruebas e informes de terceros. La evidencia debe estar fechada y ser atribuible.