Eduardo Estrada

Key Vault para resguardar y administrar configuraciones

Una de las categorias de los aspectos del proceso de DevOps es el proceso de construcción y la principal característica es la automatización de TODO lo que se pueda automatizar, asimismo la seguridad de nuestras aplicaciones es algo que no debemos de pasar por alto. 

Cuando tenemos que administrar las liberaciones de una aplicación ya sea porque esta es muy grande o porque pasa a través de diversos ambientes y más aún cuando no debemos de tener acceso por políticas de seguridad a determinados ambientes, la administración de la configuración es crucial. 

KeyVault es un almacenamiento de llaves criptográficas y otros secretos los cuales los cuales podemos usar para obtener las llaves y sus valores los cuales usaremos como las llaves de la configuración de nuestra aplicación. 

Comenzamos por crear el KeyVault posteriormente creamos el secreto, el cual usaremos para almacenar alguna cadena de conexión la cual usaremos como ejemplo. 

Obtenemos la URL y el Identificador del KeyVualt asi como la contraseña del usuario de AD de azure que le adignamos al KeyVault. 

El usuario se asigna en el apartado de politicas del KeyVault y le damos permisos de obtener y listar en el apartado de secretos 

Posteriormente podemos agregar la referencia del KeyVault como provider de la configuración en el build del constructor de la clase Startup en este caso de una aplicación en NetCore 

En el ejemplo del código anterior podemos ver como tenemos 3 fuentes de configuración, el achivo appSettings.json el archivo appSettings con sufijo según el nombre del ambiente que se definió en las variables de ambiente y finalmente todos los secretos de nuestro KeyVault usando las llaves y los valores como nuestra configuración. 

Asi como en la segunda fuente estamos definiendo de que appSettings se está tomando una configuración basada en una variable de ambiente podemos definir con una variable de configuración la URL del KeyVault que usaremos para cada determinado ambiente. 

Ahora como buenos DevOps debemos definir el proceso en el cual los desarrolladores notificaran sobre las nuevas configuraciones que se vayan agregando durante la vida de nuestra aplicación.