Siguiendo el dodecadalogo de Twelve Factor App para la construcción de aplicaciones en la nube, uno de los puntos clave habla sobre la configuración de nuestras piezas software.
Siguiendo el dodecadalogo de Twelve Fctor App para la construcción de aplicaciones en la nube, uno de los puntos clave habla sobre la configuración de nuestras piezas software. Este punto habla sobre la estricta separación de la configuración y el código que debemos de tener en cuenta. La configuración puede variar sustancialmente en cada despliegue, pero el código base no y por ello, casi convertido en standard, nos apoyamos en variables de entorno.
Las variables de entorno (envvars) son la mejor manera de almacenar la configuración que depende de dónde se ejecute la aplicación; por ejemplo, una clave API que se puede establecer en un valor mientras se desarrolla localmente y otro valor en la producción. Cuando estos valores son confidenciales y deben mantenerse privados, puede almacenarlos de forma segura utilizando un sistema de gestión de secrets también conocidos como vaults.
Muchos frameworks ya están incorporando la gestión de secrets entre sus funcionalidades. Por ejemplo, en mi stack habitual, el framework Symfony ha incluido en su versión 4.4 la posibilidad de gestionar los secrets con su componente de Configuration. A través de la generación de unas claves criptográficas se pueden mantener dichos secrets gestionados por la propia aplicación.
Sin embargo, vamos a ver herramientas de gestión de secrets que nos proporciona cada nube, y las ventajas de utilizar dichos sistemas si utilizamos cada una de estas infraestructuras.
Las herramientas de gestión de secrets son aquellas que encriptan, almacenan, gestionan y controla el acceso a secretos de aplicaciones e infraestructuras. Habitualmente estos secrets se utilizan para recuperarlos en el proceso de integración continua o despliegue continuo antes de ejecutar un build o de poner una release en producción con la configuración adecuada. Además estos secrets pueden compartirse entre distintas piezas de nuestra infraestructura.
Principalmente entre las ventajas que nos ofrece este tipo de sistemas nos encontramos:
A continuación, se verá un ejemplo de manejo de secretos con el CLI de cada nube en cada una de las herramientas de Gestión de secretos que nos proporciona Google Cloud, Azure o Amazon Web Services.