Skip to content

Implementar gestión de secretos centralizada (Infisical como opción principal) #4

Description

@erickvasm

Contexto

Hoy los secretos de este proyecto viven en .env/.env.copy local, sin gestión centralizada, rotación, ni auditoría de acceso. Es el patrón estándar en todos los repos del org — este issue propone resolverlo con un vault dedicado, empezando aquí.

Opción principal: Infisical

Infisical — open source (MIT), self-hosted o cloud, hecho para equipos de desarrollo (no tan pesado como Vault, más flexible que Doppler).

Por qué Infisical y no las alternativas:

  • vs HashiCorp Vault: Vault es más potente (secretos dinámicos, PKI, transit encryption) pero requiere operar un cluster Raft y tiene curva de aprendizaje alta — sobra para el tamaño de estos proyectos.
  • vs Doppler: Doppler es SaaS puro, sin opción self-hosted — no sirve si en algún momento hay requisito de soberanía de datos. Infisical sí se puede self-hostear en una VPS con 2GB RAM (corre sobre Postgres + Redis, nada propietario).
  • Infisical tiene cifrado end-to-end del lado del cliente: aunque el servidor de Infisical se comprometa, un atacante solo obtiene blobs cifrados.
  • SDKs nativos para Node/TypeScript, CLI para inyectar secretos en runtime (infisical run -- <comando>), sin tocar código de la app.

Secretos que este proyecto manejaría en el vault

Basado en el stack (NestJS + Prisma + Postgres + JWT): DATABASE_URL, secreto de JWT, y cualquier credencial de terceros que se agregue a futuro. Actualmente todo vive en .env/.env.copy local sin rotación.

Beneficios concretos

  • Un solo lugar para rotar credenciales (hoy: cambiar .env a mano en cada máquina/entorno).
  • Auditoría de quién accede a qué secreto y cuándo.
  • Sincronización automática entre dev/staging/prod sin copiar .env files a mano.
  • Integración con CI (GitHub Actions) vía Infisical Action, sin guardar secretos como GitHub Secrets duplicados.
  • Elimina el riesgo de .env con credenciales reales terminando en un commit por accidente.

Alcance propuesto

  1. Levantar instancia de Infisical (self-hosted en Docker, o cloud free tier para validar primero).
  2. Migrar las variables de .env/.env.copy al vault.
  3. Actualizar scripts de arranque (dev, start, debug) para inyectar vía infisical run --.
  4. Documentar el flujo de onboarding (cómo un dev nuevo obtiene acceso a los secretos del proyecto).

No implementado — este issue es la propuesta/research, ejecutar bajo su propia rama cuando se priorice.

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions