EIVUS

Gestión de secretos en servidores

Almacene e inyecte claves API y credenciales de forma segura; evite .env en el repo.

Volver al blog

Use un gestor de secretos (Vault, proveedor cloud o servicio dedicado) e inyecte en runtime. Nunca haga commit de secretos en git. Rote credenciales periódicamente. En Kubernetes use Secrets u operador externo.

Por qué no .env ni repo

  • Riesgo: .env o archivos de config con secretos en el repo pueden filtrarse por historial git, backup o copia. Una vez en commit considere el secreto comprometido; rote y elimine del historial.
  • Buenas prácticas: Los secretos viven en un almacén dedicado. La aplicación o script de arranque los obtiene en runtime e inyecta en entorno o config. Sin secretos en código ni en repo.
  • CI/CD: Los pipelines también necesitan secretos. Use almacén de secretos del pipeline; nunca haga echo ni log.

Gestor de secretos e inyección

  • Vault: Almacene secretos, credenciales dinámicas (ej. BD), cifrado como servicio. La app se autentica y lee vía API. Integre con init container o sidecar que escribe env o archivos antes de que la app arranque.
  • Cloud: AWS Secrets Manager, Azure Key Vault, GCP Secret Manager. Integración nativa con cargas en la misma nube; IAM controla quién puede leer. Obtenga en arranque o vía SDK en runtime.
  • Inyección: Escriba en variables de entorno, archivos temporales (con permisos seguros) o monte como volúmenes (Kubernetes Secrets). La app lee de env o archivo. Restrinja acceso al filesystem y proceso.

Rotación y acceso

  • Rotación: Cambie contraseñas de BD, claves API y certs en cronograma o tras incidente. El gestor puede soportar rotación (ej. credenciales dinámicas de BD con TTL corto). Actualice la app o reinicie para tomar nuevos valores.
  • Control de acceso: Solo la app (o el conjunto mínimo de procesos) debe tener acceso de lectura. Use IAM, políticas de Vault o permisos de archivo. Audite quién accedió a qué secreto y cuándo. Revoque cuando alguien se vaya o se desmantelen servicios.
  • Kubernetes: Use Kubernetes Secrets (codificados en base64; considere cifrado en reposo) o almacén externo con operador. No ponga secretos crudos en Helm values o ConfigMaps en git.

Resumen

Use un gestor de secretos e inyecte en runtime. Nunca haga commit de secretos en git. Rote credenciales periódicamente. En Kubernetes use Secrets u operador externo. Restrinja y audite acceso.

Clientes que confían en nosotros