[CHANGELOG] Mejoras de Seguridad y Limpieza - Diciembre 2024 #1

Open
opened 2025-12-24 15:41:31 +00:00 by admin · 0 comments
Owner

Resumen

Documentación de cambios realizados al sistema TZZR Orchestrator durante la sesión de auditoría y mejoras de diciembre 2024.


1. Mejoras de Seguridad en ARCHITECT

1.1 Encriptación de Credenciales con pgcrypto

Archivo: /home/orchestrator/architect-app/app.py

Cambio: Las credenciales almacenadas en PostgreSQL ahora usan encriptación simétrica con pgcrypto.

# Antes
password_hash = generate_password_hash(pin)

# Después
from cryptography.fernet import Fernet
cipher = Fernet(PG_CREDS_KEY)
encrypted = cipher.encrypt(data.encode())

Key location: /home/orchestrator/.secrets/pg_creds_key

1.2 Flask Secret Key Persistente

Problema: app.secret_key se regeneraba en cada reinicio, invalidando sesiones.

Solución: Secret key almacenada en archivo persistente.

SECRET_KEY_FILE = "/home/orchestrator/.secrets/flask_secret_key"
if os.path.exists(SECRET_KEY_FILE):
    with open(SECRET_KEY_FILE) as f:
        app.secret_key = f.read().strip()
else:
    app.secret_key = secrets.token_hex(32)
    with open(SECRET_KEY_FILE, "w") as f:
        f.write(app.secret_key)

1.3 Cookies Seguras

Cambio: Agregado flag secure=True a las cookies de sesión.

response.set_cookie(
    "session_token",
    token,
    httponly=True,
    secure=True,  # <-- NUEVO
    samesite="Lax",
    max_age=86400
)

2. Limpieza de HST

2.1 Eliminación de Contenedor Directus

ssh root@72.62.2.84
docker stop directus_hst
docker rm directus_hst

2.2 Eliminación de Base de Datos NocoDB

sudo -u postgres psql -c "DROP DATABASE nocodb;"

2.3 Limpieza de Tablas Directus en hst_images

-- Eliminadas todas las tablas directus_*
DROP TABLE directus_users CASCADE;
DROP TABLE directus_sessions CASCADE;
-- ... etc

3. Fix Bug image_server.py

Archivo: /root/image_server.py en HST (72.62.2.84)

Problema: API retornaba {"grupos": []} después de eliminar nocodb.

Causa: Faltaba conn.rollback() en bloques except, causando que transacciones fallidas bloquearan queries subsiguientes.

Fix:

except Exception as e:
    conn.rollback()  # <-- AGREGADO
    return jsonify({"error": str(e)}), 500

3.1 Creación de Servicio Systemd

# /etc/systemd/system/image_server.service
[Unit]
Description=HST Image Server
After=network.target postgresql.service

[Service]
Type=simple
User=root
WorkingDirectory=/root
ExecStart=/usr/bin/python3 /root/image_server.py
Restart=always
RestartSec=5

[Install]
WantedBy=multi-user.target

4. Especificación Architect App v5.0

Archivo: /home/orchestrator/architect-app/SPEC_ARCHITECT_APP_v5.md

Se creó especificación técnica completa (3,106 líneas) cubriendo:

  • Arquitectura (Flask blueprints, services, repositories)
  • Modelo de datos PostgreSQL (schema completo)
  • API Specification (todos los endpoints)
  • Seguridad (autenticación, rate limiting, headers)
  • Frontend (wireframes, componentes, CSS)
  • Integraciones (Claude CLI, PostgreSQL)
  • Operaciones (deployment, monitoring)
  • Testing (estrategia, fixtures)

Versión 5.0.1 incluye:

  • Documentación riesgo --dangerously-skip-permissions
  • SSE reconnect y offline handling
  • Message retry mechanism
  • Export endpoint (json/markdown/txt)
  • Migration strategy con Alembic

5. Archivos Modificados

Servidor Archivo Cambio
ARCHITECT /home/orchestrator/architect-app/app.py Seguridad, encriptación
ARCHITECT /home/orchestrator/.secrets/flask_secret_key Nuevo archivo
ARCHITECT /home/orchestrator/.secrets/pg_creds_key Nuevo archivo
ARCHITECT /home/orchestrator/architect-app/SPEC_ARCHITECT_APP_v5.md Nuevo archivo
HST /root/image_server.py Fix rollback bug
HST /etc/systemd/system/image_server.service Nuevo servicio

6. Próximos Pasos

  • Implementar Architect App v5.0 según SPEC
  • Migrar datos SQLite a PostgreSQL
  • Configurar Alembic para migrations
  • Tests automatizados

Fecha: 2024-12-24
Ejecutado por: Orchestrator Agent (Claude Opus 4.5)

## Resumen Documentación de cambios realizados al sistema TZZR Orchestrator durante la sesión de auditoría y mejoras de diciembre 2024. --- ## 1. Mejoras de Seguridad en ARCHITECT ### 1.1 Encriptación de Credenciales con pgcrypto **Archivo:** `/home/orchestrator/architect-app/app.py` **Cambio:** Las credenciales almacenadas en PostgreSQL ahora usan encriptación simétrica con pgcrypto. ```python # Antes password_hash = generate_password_hash(pin) # Después from cryptography.fernet import Fernet cipher = Fernet(PG_CREDS_KEY) encrypted = cipher.encrypt(data.encode()) ``` **Key location:** `/home/orchestrator/.secrets/pg_creds_key` ### 1.2 Flask Secret Key Persistente **Problema:** `app.secret_key` se regeneraba en cada reinicio, invalidando sesiones. **Solución:** Secret key almacenada en archivo persistente. ```python SECRET_KEY_FILE = "/home/orchestrator/.secrets/flask_secret_key" if os.path.exists(SECRET_KEY_FILE): with open(SECRET_KEY_FILE) as f: app.secret_key = f.read().strip() else: app.secret_key = secrets.token_hex(32) with open(SECRET_KEY_FILE, "w") as f: f.write(app.secret_key) ``` ### 1.3 Cookies Seguras **Cambio:** Agregado flag `secure=True` a las cookies de sesión. ```python response.set_cookie( "session_token", token, httponly=True, secure=True, # <-- NUEVO samesite="Lax", max_age=86400 ) ``` --- ## 2. Limpieza de HST ### 2.1 Eliminación de Contenedor Directus ```bash ssh root@72.62.2.84 docker stop directus_hst docker rm directus_hst ``` ### 2.2 Eliminación de Base de Datos NocoDB ```bash sudo -u postgres psql -c "DROP DATABASE nocodb;" ``` ### 2.3 Limpieza de Tablas Directus en hst_images ```sql -- Eliminadas todas las tablas directus_* DROP TABLE directus_users CASCADE; DROP TABLE directus_sessions CASCADE; -- ... etc ``` --- ## 3. Fix Bug image_server.py **Archivo:** `/root/image_server.py` en HST (72.62.2.84) **Problema:** API retornaba `{"grupos": []}` después de eliminar nocodb. **Causa:** Faltaba `conn.rollback()` en bloques except, causando que transacciones fallidas bloquearan queries subsiguientes. **Fix:** ```python except Exception as e: conn.rollback() # <-- AGREGADO return jsonify({"error": str(e)}), 500 ``` ### 3.1 Creación de Servicio Systemd ```bash # /etc/systemd/system/image_server.service [Unit] Description=HST Image Server After=network.target postgresql.service [Service] Type=simple User=root WorkingDirectory=/root ExecStart=/usr/bin/python3 /root/image_server.py Restart=always RestartSec=5 [Install] WantedBy=multi-user.target ``` --- ## 4. Especificación Architect App v5.0 **Archivo:** `/home/orchestrator/architect-app/SPEC_ARCHITECT_APP_v5.md` Se creó especificación técnica completa (3,106 líneas) cubriendo: - Arquitectura (Flask blueprints, services, repositories) - Modelo de datos PostgreSQL (schema completo) - API Specification (todos los endpoints) - Seguridad (autenticación, rate limiting, headers) - Frontend (wireframes, componentes, CSS) - Integraciones (Claude CLI, PostgreSQL) - Operaciones (deployment, monitoring) - Testing (estrategia, fixtures) ### Versión 5.0.1 incluye: - Documentación riesgo `--dangerously-skip-permissions` - SSE reconnect y offline handling - Message retry mechanism - Export endpoint (json/markdown/txt) - Migration strategy con Alembic --- ## 5. Archivos Modificados | Servidor | Archivo | Cambio | |----------|---------|--------| | ARCHITECT | `/home/orchestrator/architect-app/app.py` | Seguridad, encriptación | | ARCHITECT | `/home/orchestrator/.secrets/flask_secret_key` | Nuevo archivo | | ARCHITECT | `/home/orchestrator/.secrets/pg_creds_key` | Nuevo archivo | | ARCHITECT | `/home/orchestrator/architect-app/SPEC_ARCHITECT_APP_v5.md` | Nuevo archivo | | HST | `/root/image_server.py` | Fix rollback bug | | HST | `/etc/systemd/system/image_server.service` | Nuevo servicio | --- ## 6. Próximos Pasos - [ ] Implementar Architect App v5.0 según SPEC - [ ] Migrar datos SQLite a PostgreSQL - [ ] Configurar Alembic para migrations - [ ] Tests automatizados --- **Fecha:** 2024-12-24 **Ejecutado por:** Orchestrator Agent (Claude Opus 4.5)
Sign in to join this conversation.
No Label
1 Participants
Notifications
Due Date
No due date set.
Dependencies

No dependencies set.

Reference: tzzr/orchestrator#1