Je me demandais s'il était possible d'initialiser le déclencheur de la file d'attente ou même le déclencheur blob d'une chaîne de connexion lue à partir du coffre Azure.
À l'heure actuelle, nous devons définir ces connexions de données via les paramètres d'environnement via les propriétés de la lame. Toutefois, je souhaitais simplement utiliser le principal du service pour récupérer le jeton du coffre-fort de clés Azure afin d'obtenir toutes ces chaînes de connexion.
J'essaie de comprendre comment faire fonctionner cela en Java.
Merci, Derek
Cette fonctionnalité est suivie et en cours ici:
EDIT 28/11/2018: Il est actuellement en aperçu
Ancienne réponse 07/10/2018 Cette solution ne fonctionnera pas pour les déclencheurs utilisant le plan de consommation.
Entre-temps, j'ai effectué des recherches sur votre problème et il est possible de lire config depuis le coffre des clés si vous utilisez Azure Function v2.
J'ai créé Azure Functions v2 (.NET Standard) à partir de Visual Studio.
Il utilise:
Azure Functions v2 utilisant le noyau ASP.NET, j'ai pu référencer ce lien pour configurer mon application de fonctions afin qu'elle utilise Azure Key Vault:
Fournisseur de configuration Azure Key Vault dans ASP.NET Core
J'ai ajouté ce paquet de pépites:
J'ai configuré mon application pour utiliser ce package de pépites:
using Microsoft.Azure.WebJobs;
using Microsoft.Azure.WebJobs.Hosting;
using Microsoft.Extensions.Configuration;
using Microsoft.Extensions.DependencyInjection;
using System.Linq;
[Assembly: WebJobsStartup(typeof(FunctionApp1.WebJobsExtensionStartup), "A Web Jobs Extension Sample")]
namespace FunctionApp1
{
public class WebJobsExtensionStartup : IWebJobsStartup
{
public void Configure(IWebJobsBuilder builder)
{
// Gets the default configuration
var serviceConfig = builder.Services.FirstOrDefault(s => s.ServiceType.Equals(typeof(IConfiguration)));
var rootConfig = (IConfiguration)serviceConfig.ImplementationInstance;
// Creates a new config based on the default one and adds the keyvault configuration builder
var keyvaultName = rootConfig["keyVaultName"];
var config = new ConfigurationBuilder()
.AddConfiguration(rootConfig).AddAzureKeyVault($"https://{keyvaultName}.vault.Azure.net/").Build();
// Replace the existing config
builder.Services.AddSingleton<IConfiguration>(config);
}
}
}
Mes fonctions Azure utilisent MSI:
J'ai accordé des autorisations de lecture/liste de secrets à l'application de fonction sur mon coffre-fort:
J'ai une petite file d'attente déclenchée:
public static class Function2
{
[FunctionName("Function2")]
public static void Run([QueueTrigger("%queueName%", Connection = "queueConnectionString")]string myQueueItem, ILogger log)
{
log.LogInformation($"C# Queue trigger function processed: {myQueueItem}");
}
}
La queueName
est définie dans le fichier local.settings.json
(le lame de paramètres d'application une fois déployée):
{
"IsEncrypted": false,
"Values": {
"AzureWebJobsStorage": "UseDevelopmentStorage=true",
"FUNCTIONS_WORKER_RUNTIME": "dotnet",
"keyVaultName": "thomastestkv",
"queueName": "myqueue"
}
}
La queueConnectionString
est configurée dans mon keyvault:
Je viens de l'implémenter en Java en suivant ci-dessous deux références.
https://docs.Microsoft.com/en-us/Azure/app-service/app-service-key-vault-references
https://medium.com/statuscode/getting-key-vault-secrets-in-Azure-functions-37620fd20a0b
sous Java, utilisez System.getenv ("SECRET_KEY") pour lire les valeurs dans les paramètres de votre application.
Heureux de vous aider si vous avez besoin d'aide supplémentaire.
Ceci vient d'être publié sous le nom preview il y a quelques jours.
Cette fonctionnalité nécessite une identité gérée attribuée par le système pour votre application. Plus tard dans cet article, je parlerai des identités attribuées par l'utilisateur, mais nous gardons ces aperçus séparés pour le moment.
Vous devrez ensuite configurer une stratégie d'accès sur votre coffre-fort, qui donnera à votre application l'autorisation GET pour les secrets. Apprenez à configurer une stratégie d'accès.
Enfin, définissez la valeur de tout paramètre d'application sur une référence du format suivant:
@ Microsoft.KeyVault (SecretUri = secret_uri_with_version)
Où secret_uri_with_version est l'URI complet d'un secret dans Key Vault. Par exemple, cela pourrait ressembler à: https://myvault.vault.Azure.net/secrets/mysecret/ec96f02080254f109c51a1f14cdb1931
Utilisation de l'intégration Keyvault dans le runtime de la fonction