top of page
Foto del escritorAlejandro Caravantes Molina

Azure Key Vault para securizar Environment Variables


¡¡Vamos con el primer post del año 2022!! Si has trabajado desarollando componentes sobre Azure, seguro que Azure Key Vault te suena mucho en relación a temas de securización de datos y parámetros sensibles o como almacén de claves y certificados. Gracias a este componente, lo de almacenar cadenas de conexión a una base de datos en los ficheros de configuración de un App Service o una Azure Function ha pasado a mejor vida. Datos como las cadenas de conexión o cualquier información susceptible de ser securizada, puede ser almacenada de forma segura en este componente (en forma de secreto) de tal forma que se reduce enormemente el riesgo de seguridad que implica que información sensible de este tipo pueda quedar expuesta a algún usuario o aplicación indebido. Te dejo la documentación oficial de este componente que puede ser de gran ayuda en múltiples escenarios.


En este post vamos a ver cómo podemos hacer uso de Azure Key Vault para securizar las variables de entorno que vayamos creando en Power Platform. De esta forma el valor de la variable de entorno no va a quedar expuesto a todos los usuarios que tengan permisos para leer la tabla Environment Variable Value, si no que el valor de estas variables va a ser almacenado de forma segura en Azure Key Vault y sólo los usuarios con el acceso específico de lectura de secretos van a tener acceso a la información sensible.


Lo primero que tenemos que comprobar es si en la suscripción de Azure donde vamos a crear nuestro Key Vault tenemos registrado Microsoft.PowerPlatform como resource provider. Para ello dirígete al portal de Azure, selecciona la suscripción deseada y ve a la opción Resources Providers. En la barra de búsqueda introduce Microsoft.PowerPlatform y si el estado es NotRegistered, seleccionalo y haz clic en Register.


Lo siguiente que vamos a hacer es crear un grupo de recursos si no dispones de uno ya, y crear el componente Key Vault. Introduce un nombre descriptivo y crea el componente. Una vez se haya creado el recurso, necesitamos realizar dos configuraciones de seguridad sobre el propio Key Vault:


La primera configuración necesaria para que el usuario que desde Power Platform pueda consumir los secretos del Key Vault, es asociar a este usuario y en el propio recurso el rol de seguridad Key Vault Reader. Para ello accede al Key Vault que acabas de crear y en la opción Access Control (IAM) selecciona la opción Add y seguidamente Add Role Assignment. Haz clic sobre el rol de seguridad Key Vault Reader y en la siguiente ventana podrás indicar el usuario al que se le va a asociar este rol. En mi caso voy a crear un flujo de Power Automate que va a consultar el secreto almacenado en el Key Vault por lo que mi usuario configurado en este paso será el mismo usuario que ejecute el flujo de Power Automate.


La segunda configuración de seguridad que vamos a realizar es la creación de una política de acceso al Key Vault para que el service principal de Dataverse pueda leer los secretos almacenados en el propio recurso Key Vault. Para esto desde la ventana de detalle del Key Vault haz clic en Access Policies y selecciona la opción Add Access Policy. En el desplegable con nombre Secret permissions, selecciona la opción Get. Dirígete a la sección Select principal y haz clic en None selected. En la barra de búsqueda de la nueva ventana emergente que aparece a la derecha escribe Dataverse y selecciona el service principal con id 00000007-0000-0000-c000-000000000000. Por último haz clic en el botón Select y posteriormente en el botón Add. No te olvides de hacer clic en el bóton Save para que se guarden los cambios.


Ya tenemos toda la configuración necesaria realizada, por lo que a continuación solo nos falta crear el secreto pertinente con la información sensible a securizar. Para ello desde la ventana del Key Vault haz clic en la opción Secrets y a continuación en Generate/Import. En el campo Name introduce un nombre descriptivo para el secreto y en el campo Value , la información sensible que queremos securizar. En mi caso una vez creado, el secreto tiene el siguiente aspecto.


Ya hemos terminado en el portal de Azure. Lo siguiente que vamos a hacer es crear la variable de entorno en una solución desde el portal de Power Platform y configurar esta variable de entorno para que apunte al secreto que acabamos de crear. Para ello desde una solución, selecciona New, More y Environment Variable. En el nuevo panel emergente de la derecha, verás que el último campo con nombre Data Type ofrece distintas opciones: desde crear una variable de entorno de texto plano, pasando por un valor en formato JSON, etc. Selecciona la última opción con nombre Secret. Como puedes ver al seleccionar Azure Key Vault como Secret Store y al hacer clic sobre New Azure Key Vault secret reference aparecen nuevos campos donde lo único que tenemos que hacer es introducir la información del secreto al que vamos a apuntar desde nuestra nueva variable. Estos nuevos campos son el Azure Subscription Id que contiene el Key Vault que hemos creado, el grupo de recursos donde reside el propio Key Vault, el nombre del recurso y el nombre del secreto. En mi caso la configuración es como la que puedes ver en la imagen.


Antes de seguir, vamos a hacer un pequeño paréntesis y consulta por favor la tabla Environment Variable Values. Observa que donde antes se almacenaba el valor en texto plano que establecíamos en nuestras variables de entorno, ahora se está guardando el endpoint del secreto que hemos indicado cuando hemos creado la variable.


Continuemos con la prueba de concepto que estamos haciendo hoy que ya estamos casi al final 💪.


Lo siguiente que voy a hacer es crear un flujo de Power Automate que va a trabajar con la variable de entorno que hemos creado. Algo muy sencillito a modo prueba de concepto. Te adelanto que para trabajar con las variables de entorno que apuntan a secretos almacenados en Azure Key Vault vas a tener que trabajar con las unbound actions de Dataverse. Concretamente con la que se llama: RetrieveEnvironmentVariableSecretValue. Añade una nueva acción al flujo de Power Automate y utiliza el conector de Dataverse. La acción que has de seleccionar se llama Perform an unbound action. Cuando aparezcan las unbound actions disponibles selecciona la que comento un poquito mas arriba. Por último en el campo nombre, indica el nombre interno de la variable de entorno que has creado. En mi caso la configuración del flujo es parecida a la que se ve a continuación.

No te olvides de securizar los outputs de esta acción desde las opciones de la propia acción, si estás construyendo un flujo para algo que no sea una prueba de concepto.


Si todo ha ido bien y no hay ningun problema de seguridad y/o configuración, al testear y ejecutar el flujo podrás ver que el valor del secreto consultado es devuelto al propio flujo en la variable con nombre EnvironmentVariableSecretValue.


¡Espero que esta lectura haya sido de ayuda! ¡¡Nos vemos en la siguiente!! ¡Feliz Año 2022!

Comments


bottom of page