Uno de los puntos más importantes a nivel de seguridad de tu aplicación es qué hacer con todas las credenciales y cadenas de conexión que guardamos habitualmente en archivos de configuración planos, bases de datos, etcétera. Para ello, Microsoft Azure proporciona un servicio llamado Azure Key Vault que proporciona una gestión sobre secretos, genera claves, además de gestionar políticas de acceso y tener un histórico de auditoría. En este artículo te voy a mostrar la forma más sencilla de integrar tu aplicación con Azure Key Vault.
Lo primero que necesitas es tener una cuenta del servicio en tu suscripción. Para ello haz clic en + Create a resource y busca Azure Key Vault.
Para la creación necesitarás un nombre, un grupo de recursos y una localización. El resto de configuraciones, (el plan, access policies y el acceso a todas las redes) las he dejado como vienen por defecto.

Para que todo esto tenga sentido 🙂 , añade algunos secretos a tu nuevo Azure Key Vault, que serán recuperados desde tu aplicación. Para este ejemplo voy a añadir los valores que eran necesarios para el ejemplo del post anterior de enviar y recibir SMS con Twilio desde Azure Functions. En mi caso son todas aquellas que figuraban en el archivo local.settings.json. Para darlas de alta basta con acceder al apartado Secrets de Azure Key Vault y hacer clic en el botón Generate/Import

Una vez que tienes todos tus secretos dados de alta, falta dar acceso a tu aplicación a estos secretos. Accede a tu Azure Function y en el apartado Platform features haz clic en la sección Identity.
Pon el status a ON y confirma el mensaje.

Accede de nuevo a tu Azure Key Vault y crea una política que te permita únicamente recuperar secretos para esta aplicación a través de Access Policies > Add new con los siguientes campos:

Ya tienes todo configurado para poder recuperar tus credenciales y cadenas de conexión desde tu aplicación. ¿Pero cómo las recupero? Desde hace poco está en preview este sistema que te permite recuperarlas sin tener que tocar nada de tu código. Accede al App Settings de la función y como valor de tus claves utiliza la siguiente sintaxis:
@Microsoft.KeyVault({referenceString}) donde referenceString se trata de la Uri del secret que puedes localizarla dentro de la secret y se llama Secret identifier.
El resultado sería parecido al siguiente:
@Microsoft.KeyVault(SecretUri=https://returngiskeys.vault.azure.net/secrets/TWILIO-TOKEN/b90c8c3eea4948b1a091cb66d7574a0f)
De este modo, tus App Settings debería de quedar de la siguiente manera:
A partir de este momento ya tendrás todas tus claves seguras dentro de Azure Key Vault.
¡Saludos!