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




