Skip to content
StackPractices
intermediate Por Mathias Paulenko

Cumplimiento SOC 2 — Básicos para Equipos de Ingeniería

Guía práctica de SOC 2 Tipo II para desarrolladores: Criterios de Servicios de Confianza, recolección de evidencias y construcción de sistemas conformes desde el día uno.

Temas: security

Nota para desarrolladores hispanohablantes: Esta guía incluye ejemplos y convenciones de nomenclatura adaptadas a equipos que trabajan en español. Cuando existen diferencias significativas en terminología técnica entre el inglés y el español, se indican explícitamente para facilitar la comunicación en equipos multiculturales.

Visión General

SOC 2 (Service Organization Control 2) es un marco de auditoría desarrollado por el AICPA que evalúa cómo las organizaciones de servicios gestionan los datos de los clientes. A diferencia de las listas de verificación de cumplimiento, SOC 2 Tipo II requiere demostrar que tus controles operan bien a lo largo del tiempo. Para equipos de ingeniería, esto significa construir sistemas con seguridad, disponibilidad, integridad del procesamiento, confidencialidad y privacidad — y probar que funcionan mediante evidencias.

Cuándo Usar

  • For alternatives, see Compliance Gap Analysis Template.

  • Tu organización necesita un informe SOC 2 para vender a clientes empresariales

  • Estás diseñando sistemas que serán auditados

  • Necesitas implementar controles de seguridad que satisfagan a los auditores

  • Quieres alinear las prácticas de ingeniería con criterios de confianza de la industria

Criterios de Servicios de Confianza

SOC 2 evalúa cinco categorías. La mayoría de las startups comienzan con Seguridad (Criterios Comunes).

CriterioEnfoqueAcciones del Desarrollador
Seguridad (CC)El sistema está protegido contra acceso no autorizadoIAM, cifrado, logging, pruebas de penetración
DisponibilidadEl sistema está operativo y accesibleMonitoreo de uptime, recuperación ante desastres, planificación de capacidad
Integridad del ProcesamientoEl procesamiento de datos es completo, válido y precisoValidación de entradas, reconciliación, manejo de errores
ConfidencialidadLos datos designados están protegidosCifrado, controles de acceso, clasificación de datos
PrivacidadLa información personal se maneja según el aviso de privacidadGestión de consentimientos, retención de datos, derechos del sujeto

Construcción de Sistemas Conformes

Controles de Acceso (CC6)

Implementa control de acceso basado en roles con mínimo privilegio y revisiones regulares.

# Exigir MFA para acceso a producción
@mfa_required
def deploy_to_production(user, artifact):
    if not user.has_role("production_deployer"):
        raise Forbidden("Privilegios insuficientes")
    
    audit_log.record(
        actor=user.id,
        action="deploy",
        resource=artifact.id,
        timestamp=datetime.utcnow()
    )
    
    return deploy(artifact)

Operaciones del Sistema (CC7)

Monitorea, detecta y responde a eventos de seguridad.

# Detección automatizada de anomalías
def monitor_privilege_escalation():
    for event in auth_logs.recent(hours=24):
        if event.action == "role_change" and event.new_role == "admin":
            if event.old_role != "admin":
                alert_security_team(
                    f"Escalamiento de privilegios: {event.user_id} a admin"
                )

Gestión de Cambios (CC8)

Todos los cambios a producción deben estar autorizados, probados y documentados.

# GitHub Actions: requerir aprobación para producción
name: Deploy to Production
on:
  workflow_dispatch:
    inputs:
      approved_by:
        required: true
        description: "Aprobador del equipo de seguridad"

jobs:
  deploy:
    environment: production  # Requiere aprobación manual
    steps:
      - uses: actions/checkout@v4
      - run: ./scripts/verify-change-ticket.sh ${{ github.sha }}
      - run: ./scripts/deploy.sh production

Mitigación de Riesgos (CC9)

Identifica, evalúa y mitiga riesgos para el sistema.

# Pipeline de gestión de vulnerabilidades
def vulnerability_scan():
    results = {
        "dependency_check": run_snyk(),
        "container_scan": run_trivy(),
        "secrets_scan": run_trufflehog(),
    }
    
    for tool, findings in results.items():
        for finding in findings.critical:
            create_jira_ticket(
                summary=f"[CRITICAL] {finding.title}",
                assignee="security-team",
                due_date=now() + timedelta(days=1)
            )

Recolección de Evidencias

Los auditores necesitan prueba de que los controles están operando. Automatiza las evidencias donde sea posible.

ControlTipo de EvidenciaAutomatización
Revisiones de accesoInformes trimestrales de acceso de usuariosExportar desde IAM; comparar con trimestre anterior
Pruebas de penetraciónInforme de prueba de tercerosProgramar anualmente; rastrear hallazgos hasta su cierre
Restauración de copiasPrueba mensual de restauraciónPrueba automatizada con registro de éxito/fracaso
Revisión de códigoRastro de auditoría de aprobaciones de PRExportar de API de GitHub las aprobaciones y rechazos
Respuesta a incidentesDocumentos de postmortemBasados en plantilla; rastrear tiempo de resolución

Monitoreo del Sistema

# Logging de auditoría centralizado
class AuditEvent(BaseModel):
    timestamp: datetime
    actor: str
    action: str
    resource: str
    result: str  # success / denied / error
    ip_address: str
    user_agent: str
    correlation_id: str

def log_audit_event(event: AuditEvent):
    # Escribir en almacenamiento de logs resistente a alteraciones
    audit_store.append(event.json())
    
    # Alertar sobre patrones sospechosos
    if event.result == "denied" and event.action == "admin_access":
        alert_security_team(f"Acceso admin denegado: {event.actor}")

Gestión de Proveedores

SOC 2 requiere diligencia debida en proveedores de terceros.

Lista de Verificación de Integración de Proveedor:
- [ ] Revisar informe SOC 2 del proveedor (preferiblemente Tipo II)
- [ ] Documentar datos compartidos con el proveedor
- [ ] Firmar DPA (Acuerdo de Procesamiento de Datos)
- [ ] Verificar cifrado en tránsito y en reposo
- [ ] Confirmar SLA de notificación de incidentes
- [ ] Programar revisión anual

Errores Comunes

  • Tratar SOC 2 como un proyecto único — es continuo; los auditores revisan 3-12 meses de evidencias
  • Depender de capturas de pantalla manuales para evidencias — automatiza la recolección donde sea posible
  • No tener plan de respuesta a incidentes — los auditores preguntarán cómo manejaste incidentes pasados
  • Ignorar la baja de empleados — ex empleados con acceso persistente es un hallazgo común
  • Faltar gestión de cambios para infraestructura — los cambios de Terraform también necesitan aprobación y rastro de auditoría

Troubleshooting

  • Authentication bypass in tests: ensure test users cannot reach production endpoints. Use separate credentials and environments for CI.
  • False positives in scanning tools: tune rules against the risk profile. Distinguish between reachable vulnerabilities and theoretical issues.
  • Secrets appear in logs: configure log filters to redact tokens, passwords, and keys. Audit log sinks for sensitive patterns.
  • CSP breaks legitimate functionality: use report-only mode first, then enforce. Iterate on allowed sources based on real violations.
  • Incident response stalls: run tabletop exercises. Document escalation paths, evidence collection steps, and communication templates in advance.

FAQ

Cuánto tiempo toma SOC 2 Tipo II? Típicamente 3-6 meses de preparación, luego un período de observación de 3-12 meses antes de que se emita el informe de auditoría.

Cuál es la diferencia entre Tipo I y Tipo II? Tipo I evalúa los controles en un punto en el tiempo. Tipo II evalúa los controles a lo largo de un período (usualmente 3-12 meses) y requiere evidencia de operación continua.

Necesito una auditoría separada para cada cliente? No. Un único informe SOC 2 puede compartirse con todos los clientes, aunque algunos pueden solicitar cuestionarios suplementarios.

¿Cómo empiezo con esto en un proyecto existente?

Empieza con una parte pequeña y aislada de tu codebase. Aplica los conceptos de esta guía a un módulo o servicio. Mide el impacto, luego expande a otras áreas.

¿Qué herramientas necesito?

Las herramientas mencionadas throughout esta guía se listan en cada sección. La mayoría son open-source y ampliamente adoptadas. Consulta los recursos relacionados para instrucciones de setup.

¿Cómo mido el éxito después de implementar esto?

Define métricas claras antes de empezar: benchmarks de rendimiento, tasas de error o indicadores de mantenibilidad. Compara antes y después. Itera basándote en datos, no en suposiciones.

Temas Avanzados

Escenario: Preparacion para Auditoria SOC2 Tipo II

Sistema: SaaS B2B, 30 empleados, 5 servicios
Objetivo: SOC2 Tipo II en 6 meses

Trust Service Criteria (TSC):
  | Criterio | Areas | Implementacion |
  |----------|-------|----------------|
  | Security | CC1-CC9 | Controles comunes |
  | Availability | A1 | SLA + monitoring |
  | Processing Integrity | PI1 | Validacion de datos |
  | Confidentiality | C1 | Cifrado + access control |
  | Privacy | P1-P8 | GDPR + data retention |

Controles comunes (CC1-CC9) implementados:
  CC1: Control environment
    - Politica de seguridad escrita y aprobada
    - Code of conduct firmado por empleados
    - Background checks en hiring

  CC2: Communication and information
    - Politicas publicadas en wiki interna
    - Training anual de seguridad
    - Canal de reporte de incidentes

  CC3: Risk assessment
    - Risk register actualizado quarterly
    - Threat modeling por feature nueva
    - Vendor risk assessment

  CC4: Monitoring activities
    - Audit log inmutable (append-only)
    - Alertas de seguridad 24/7
    - Quarterly access review

  CC5: Control activities
    - RBAC + least privilege
    - MFA obligatorio
    - Change management via PR + approval

  CC6: Logical and physical access
    - SSO + MFA
    - Access reviews quarterly
    - Offboarding automatizado (revoca access en 24h)

  CC7: System operations
    - Patch management (SLA: critical 48h, high 7d)
    - Vulnerability scanning semanal
    - Incident response plan documentado

  CC8: Change management
    - CI/CD con approval gates
    - Segregation of duties (dev != deploy)
    - Rollback plan documentado

  CC9: Risk mitigation
    - Disaster recovery plan
    - Backups cifrados, test quarterly
    - Business continuity plan

Timeline de auditoria:
  | Mes | Actividad |
  |-----|-----------|
  | 1-2 | Gap assessment + remediation plan |
  | 3-4 | Implementar controles faltantes |
  | 5 | Readiness assessment |
  | 6 | Auditoria (fieldwork) |
  | 7-8 | Reporte final |

Lecciones:
  - SOC2 es un proyecto de 6+ meses, no un sprint
  - Documentacion es tan importante como implementacion
  - Access reviews quarterly son obligatorias
  - Offboarding automatizado es el control mas auditado
  - El auditor prueba los controles, no solo lee politicas

Cuanto cuesta una auditoria SOC2?

Una auditoria SOC2 Tipo I cuesta $15K-$30K. Tipo II cuesta $30K-$60K por el primer ano, $20K-$40K en anos siguientes. Costos adicionales: herramientas (Drata, Vanta: $5K-$20K/ano), consultor de readiness ($10K-$25K), tiempo del equipo (200-400 horas). Presupuesta $50K-$80K para el primer ano completo.

Errores Comunes en Producción

  • Tratar la guía como un checklist para completar una vez en lugar de una práctica por evolucionar.
  • Adoptar cada recomendación de golpe en lugar de comenzar con un cambio medido.
  • Saltar la evaluación de madurez e imponer prácticas avanzadas a un equipo no preparado.
  • No actualizar runbooks y expectativas de guardia al introducir nuevas prácticas.
  • Ignorar datos reales de incidentes al priorizar qué partes de la guía aplicar primero.
  • No asignar un responsable que revise decisiones trimestralmente.
  • Copiar ejemplos sin adaptarlos a las herramientas y restricciones reales del equipo.
  • Olvidar medir resultados antes de agregar la siguiente mejora.