Azure Key Vault en Azure Functions
Azure Key Vault en Azure Functions

Azure Key Vault en Azure Functions

Hoy te traigo un tema que me parece de vital importancia y nos servirá para administrar y securizar nuestras variables y conexiones con Azure Key Vault además de poder tener un control de las rotaciones de las claves y mucho más. Resulta que hace poco me tuve que enfrentar a la caducidad de unos registros de aplicación. Por suerte fui proactivo y me di cuenta antes del desastre porque, de otro modo, integraciones, azure functions y demás enseres ajenos a Dataverse hubieran dejado de funcionar 😥.

Objetivo

Hacer seguras nuestras claves y tratar de tener los mecanismos de alerta adecuados cuando estas claves caduquen para ser avisados y poder restablecerlas de una manera muy sencilla

Crear Azure Key Vault

Es imprescindible contar con un recurso de Azure Key Vault configurado en nuestra suscripción de Azure. Corrígeme si me equivoco pero creo que no es necesario un grandísimo conocimiento para configurarlo. Podemos configurar que sólo sea accesible desde ciertas redes que no siempre será imprescindible porque con las identidades administradas no hará falta. Por lo tanto, al lío y vamos a crear nuestro azure key vault:

Almacenar un secreto en Azure Key Vault

Cuando superamos los límites de Dataverse y queremos ir un poco más allá, normalmente, utilizamos las Azure Function. Una tecnología serverless que nos permite sacar el lado más ‘pro’ de la Power Platform. En este mismo blog te hablé de Azure Functions en conjunto de los webhooks de dataverse y puedes volver a releerlo aquí.

Aquí vamos a integrar las Azure Function para almacenar un secreto que puede ir desde un string de conexión hasta una clave privada. En este caso, lejos de facilitarte mis credenciales del banco, crearé un secreto con la palabra ‘Hello World!’ y lo utilizaremos para mostrarlo desde una Azure Function:

Nombraremos el secreto y almacenaremos el valor. Si te fijas bien vamos a poder configurar una fecha de expiración. (psst psst, atento al One More Thing que tenemos abajo):

Habilitar la comunicación entre Azure Key Vault y Azure Function

Ahora nos toca habilitar la comunicación entre nuestro pool de Azure Functions y nuestro Azure Key Vault. Lo primero que vamos a hacer es habilitar la identidad administrada en la Azure Function. Para ello nos dirigimos al apartado de «Identidades» y habilitamos la opción:

Después nos dirigimos al apartado de asignaciones de roles de azure (Azure role assignments) que te señalo un poco más arriba y agregamos la azure function y añadimos el rol de lector (reader):

Y ahora nos dirigimos de nuevo al Azure Key Vault porque vamos a autorizar la identidad administrada:

Al añadir la política de acceso, vamos a dar permiso de consultar (GET) secretos:

En la pestaña principal buscamos el recurso de las azure function:

Y finalmente creamos la política de acceso. Con estos pasos ya tenemos las comunicaciones habilitadas entre Azure Functions y Azure Key Vault.

Recuperar el secreto en Azure Functions

Para invocarla desde la Azure Function debemos acceder a la configuración y añadir una variable con la siguiente sintaxis:

@Microsoft.KeyVault(VaultName={NombreKeyVault};SecretName={NombreDelSecreto})

Es importante que después de dar de alta la variable tenga un check verde justo a la derecha tal y como se ve esta imagen:

Si invocamos el valor en la azure function obtendremos el valor del azure key vault:

One More Thing: Avísame cuando los secretos estén a punto de caducar!

Es cuanto menos interesante que los usuarios recibamos una alerta cuando estos secretos estén a punto de caducar. Y para ello vamos a utilizar la mismísima Power Platform y, en particular, Power Automate para alertarnos de que una clave está a punto de caducar. Creamos un flujo y utilizamos de desencadenador Azure Event Grid:

Y utilizamos el tipo de evento «Secret Near Expiry»:

Y después de esto escoge la vía más adecuada.. una tarjeta adaptable.. un correo..

Y hasta aquí el post de hoy! Espero que te haya sido útil y consigas sacarle partido, es importante aplicar buenas prácticas para la buena salud de nuestros proyectos en Power Platform

*Imagen de la portada cortesía de https://unsplash.com/*

Deja un comentario

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *

Este sitio usa Akismet para reducir el spam. Aprende cómo se procesan los datos de tus comentarios.