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: whoami3. 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