Cómo gestionar secretos en producción: acceso, rotación y auditoría
Saca credenciales del repositorio, limita quién puede leerlas, rota sin caída y evita que logs, builds o previews conviertan un secreto en un dato permanente.
Trata cada secreto como una credencial con propietario
Una clave de API, contraseña o token debe tener servicio propietario, finalidad, entorno, permisos, fecha de creación y procedimiento de revocación. Evita compartir una credencial de administrador entre aplicaciones. Las identidades de workload o tokens breves reducen el valor de una filtración frente a claves permanentes.
La guía OWASP Secrets Management Cheat Sheet cubre ciclo de vida, rotación y auditoría. Guardar un valor en una variable de entorno puede ser parte de la entrega, pero no resuelve quién lo cifra, quién lo lee ni cómo se sustituye.
Separa almacenamiento, entrega y uso
Conserva secretos cifrados en un sistema diseñado para ello. Autoriza al runtime mediante una identidad de servicio, no con otra clave incrustada en la imagen. Entrega únicamente los valores necesarios para ese proceso y entorno. Un preview nunca debería heredar automáticamente credenciales de producción.
No incluyas secretos en argumentos de línea de comandos, artefactos de build o archivos enviados al navegador. Limita acceso humano y registra lecturas administrativas. Para desarrollo local, ofrece valores aislados o emuladores en vez de copiar producción.
Evita filtraciones por observabilidad
Los datos sensibles aparecen con frecuencia en logs de excepciones, cabeceras HTTP, trazas y herramientas de soporte. Redacta por nombre y por estructura, pero no dependas de una lista perfecta. Registra el identificador de una credencial o sus últimos caracteres, nunca el valor completo.
Revisa integraciones de error, pipelines y cachés. Un secreto impreso una vez puede replicarse a varios proveedores y backups. Define retención y un canal rápido para eliminar o restringir evidencia sensible durante un incidente.
Rota como una operación normal
Diseña consumidores que acepten una transición de dos credenciales. Crea la nueva, actualiza servicios gradualmente, verifica que la usan y revoca la anterior. Para firmas o cifrado, conserva la clave antigua solo durante el periodo necesario para verificar o descifrar datos existentes, con permisos separados.
Automatiza expiración y alertas, pero prueba dependencias olvidadas. Una rotación que solo existe en un documento no funcionará bajo presión. Mantén un inventario de dónde se utiliza cada secreto y una ruta de rollback que no reactive indefinidamente una clave comprometida.
Responde a una exposición con revocación y alcance
Si una clave aparece en Git o un log, asume que pudo copiarse. Revócala, busca actividad asociada, identifica datos y acciones accesibles, corrige el origen y documenta la línea temporal. Reescribir el historial puede reducir exposición futura, pero no reemplaza la revocación.
Mide secretos sin propietario, edad, permisos excesivos, rotaciones fallidas y accesos anómalos. La meta no es ocultar cadenas de texto: es limitar lo que cada identidad puede hacer y reducir el tiempo durante el cual una credencial robada conserva valor.
Preguntas frecuentes
¿Una variable de entorno es un gestor de secretos?
No por sí sola. Es un mecanismo de entrega; todavía necesitas almacenamiento cifrado, autorización, auditoría y rotación.
¿Qué hago si un secreto llegó a Git?
Revócalo primero, investiga el uso y después limpia el historial si corresponde; borrar el archivo no invalida copias anteriores.
¿Cómo se rota una clave sin detener el servicio?
Permite temporalmente clave antigua y nueva, despliega consumidores, verifica uso y revoca la anterior dentro de una ventana corta.