ShFlow — Dossier Técnico de Cumplimiento ENS y RGPD

Versión evaluada: 1.8.0 Autor: Luis GuLo Licencia: GPLv3 Ubicación del código: Servidor GIT privado Fecha de evaluación: Noviembre 2025


1. Introducción

ShFlow es un sistema modular de automatización declarativa en Shell, orientado a tareas reproducibles, trazables y seguras. Su arquitectura permite ejecutar playbooks YAML sobre hosts remotos, con interpolación de variables, cifrado de secretos y control granular de salida.

Este documento evalúa el cumplimiento de ShFlow frente al Esquema Nacional de Seguridad (ENS) y el Reglamento General de Protección de Datos (RGPD), con el objetivo de facilitar su adopción en entornos públicos, comerciales o sensibles.


2. Cumplimiento ENS

2.1 Clasificación del sistema

  • Nivel aplicable: Medio
  • Justificación: ShFlow puede operar sobre sistemas que gestionan datos personales, credenciales, configuraciones sensibles o infraestructura crítica. Su uso en entornos públicos o empresariales requiere trazabilidad, control de acceso y protección frente a errores o código malicioso.

2.2 Medidas técnicas aplicadas (Anexo II del RD 311/2022)

Categoría ENS Medida aplicada en ShFlow
Control de acceso SSH por usuario (REMOTE_USER), vault cifrado, separación por host
Trazabilidad Logs por host, por tarea, por módulo (echolog, capture_log, register)
Protección frente a errores set -euo pipefail, validación defensiva de argumentos ("${arg:-}")
Protección frente a código malicioso Módulos aislados, ejecución controlada, sin eval dinámica ni sustitución insegura
Gestión de vulnerabilidades Refactor modular, pruebas regresivas (tests/), control de versiones
Disponibilidad y recuperación Ejecución paralela (parallelism: true), aislamiento por host, logs temporales (/tmp)
Seguridad en el ciclo de vida Documentación bilingüe, changelogs trazables, validación por versión (expected/)

2.3 Evidencias de cumplimiento

  • echolog() con control por nivel (TASK_VERBOSITY, SHFLOW_VERBOSITY)
  • Validación defensiva de argumentos:
if [[ -z "${2:-}" || "${2:-}" == -* ]]; then
  echo " Falta argumento tras $1"
  exit 1
fi
  • Vault cifrado:
secret=$(gpg --quiet --batch --yes --passphrase-file "$VAULT_KEY" -d "$VAULT_DIR/$key.gpg")
  • Captura de salida:
- name: Verificar usuario
  module: run
  args: { cmd: "whoami" }
  capture_log: user_check
  register: user_output
  • Trazabilidad por host:
 Host: servidor1
 Ejecutando tarea: "Verificar usuario"
 Comando interpolado: whoami

3. Cumplimiento RGPD

3.1 Rol del software

ShFlow no almacena datos personales directamente, pero puede operar sobre sistemas que los gestionan. Su rol es el de herramienta auxiliar, y debe ser evaluado en función del contexto de uso.


3.2 Medidas de protección de datos

  • Cifrado de secretos: Vault con GPG y clave externa (VAULT_KEY)
  • Interpolación segura: sin persistencia de datos sensibles
  • Control de acceso: ejecución por usuario remoto (REMOTE_USER)
  • Captura controlada: capture_log, capture_err, register

3.3 Trazabilidad y rectificación

  • Variables registradas accesibles por clave (shflow_vars["user_output"])
  • Logs por host y por tarea, exportables
  • Posibilidad de anonimización en módulos personalizados

3.4 Evaluación de impacto (EIPD)

Plantilla de Evaluación de Impacto RGPD para ShFlow:

### Evaluación de Impacto sobre la Protección de Datos (EIPD)

**Sistema evaluado:** ShFlow  
**Responsable del tratamiento:** [Nombre de la entidad usuaria]  
**Finalidad del tratamiento:** Automatización de tareas sobre sistemas que pueden contener datos personales  
**Tipo de datos tratados:** Credenciales, logs, configuraciones, variables interpoladas  
**Medidas de seguridad aplicadas:**
- Vault cifrado con GPG
- Control de acceso por usuario remoto
- Trazabilidad por host y por tarea
- Captura controlada de errores y salida

**Riesgos identificados:**
- Ejecución sobre sistemas con datos personales sin cifrado
- Exposición de trazas si no se configura correctamente la verbosidad

**Medidas de mitigación:**
- Uso obligatorio de `--quiet` en entornos sensibles
- Revisión de logs antes de exportar
- Documentación de buenas prácticas

**Conclusión:** ShFlow puede usarse en entornos con datos personales siempre que se configure adecuadamente y se documente su uso.

4. Documentación y anexos

  • docs/engine/verbosity.md: sistema de trazas por nivel
  • docs/tests/README.md: lote de pruebas funcionales
  • vault/: ejemplo de cifrado y recuperación
  • logs/: ejemplos de trazas por host y por tarea
  • expected/: resultados esperados por versión
  • docs/compliance/ENS-RGPD.md: este documento

5. Recomendaciones finales

  • Realizar auditoría externa ENS si se busca certificación oficial
  • Incluir cláusulas RGPD en contratos si se comercializa o integra en SaaS
  • Refuerzo de trazabilidad en módulos críticos (run, vault, assert)
  • Validación continua con lote de pruebas tras cada release
  • Documentar el ciclo de vida del software y sus cambios