- Vårt erbjudande
- Kundcase
- Insikter & Inspiration
- Om oss
/ Apps & Innovations /
Azure Functions + Azure Key Vault
Det är inte ofta det blir en titel med så många tekniska termer. Men äntligen är det dags att göra en djupdykning i teknik.
Och vad kul att du hittat hit! Kanske är det för att du precis har börjat med Microsoft Azure och vill utveckla säkra lösningar, alternativt kanske du är på väg att uppgradera dina Azure Functions som använder Azure Key Vault till Isolated Worker Model tillsammans med .NET 8 eftersom stödet för In-Process Model slutar 2026. Lika bra att börja nu!
Låt oss först reda ut de tre begrepp vi kommer att titta på i denna artikel: Azure Functions, Azure Key Vault och .NET 8 & Isolated Worker Model.
Vad är Azure Functions?
Azure Functions är en serverless-teknologi som gör det möjligt att köra små kodbitar eller "funktioner" i molnet utan att behöva hantera underliggande infrastruktur. Azure Functions är utmärkta för händelsedrivna scenarier, som att reagera på ändringar i en databas, hantera kömeddelanden eller bearbeta tidsbaserade uppgifter.
En av de mest grundläggande egenskaperna hos Azure Functions är dess förmåga att automatiskt skala baserat på efterfrågan. Du betalar bara för den exekveringstid som används, vilket gör dem både kostnadseffektiva och flexibla för olika typer av arbetsflöden.
Notera att vissa premium-versioner av Azure Functions kommer med en fast kostnad om du har behov av exempelvis VNET-integration.
Magnus Weidmar hos oss på Wizardworks har tidigare skrivit en artikel om serverless med Azure Functions. Läs gärna den för mer insikter i hur serverless och Azure Functions fungerar!
Vad är Azure Key Vault och varför ska du använda det?
Azure Key Vault är en tjänst för att lagra och hantera känsliga data som kryptografiska nycklar, certifikat och hemligheter, till exempel API-nycklar och anslutningssträngar. Säkra molnlösningar är avgörande kan Azure Key Vault spela en central roll i att skydda dina applikationers hemligheter.
Genom att använda Azure Key Vault tillsammans med Azure Functions kan du säkert hantera och hämta hemligheter utan att behöva exponera dem direkt i din kod. Dessutom, med Managed Identities, kan dina Azure Functions autentisera sig mot Azure Key Vault utan att behöva hantera autentiserings-uppgifter manuellt, vilket ytterligare stärker säkerheten.
Vad är skillnaden mellan Isolated Worker Model och In-Process Model, och hur påverkar det ditt val av .NET-ramverk?
.NET 8 introducerar förbättringar som gör Isolated Worker Model till ett attraktivt alternativ för utvecklare. Med Isolated Worker Model körs din applikation i en separat process från Azure Functions runtime, vilket ger bättre isolering och kan bidra till förbättrad stabilitet och säkerhet.
Isolated Worker Model är också mer flexibel när det gäller beroenden, eftersom din kod inte längre är beroende av specifika versioner av Azure Functions runtime. Detta gör det lättare att hantera och uppgradera dina projekt över tid.
Med Microsofts planer att avsluta stödet för In-Process Model 2026 är det klokt att börja anpassa sig till den nya modellen redan nu.
Show me the code!
Så, hur kopplar vi ihop Azure Key Vault med vår Azure Function när vi använder .NET 8 i en Isolated Worker Model? Let's go!
Vi börjar med Program.cs, där vi definierar vår integration med Azure Key Vault. Här ser vi hur DefaultAzureCredential används för att autentisera och säkra åtkomsten till Azure Key Vault. Det är enkelt, smidigt och framför allt, säkert.
using Azure.Identity;
using Microsoft.Azure.Functions.Worker;
using Microsoft.Extensions.Configuration;
using Microsoft.Extensions.DependencyInjection;
using Microsoft.Extensions.Hosting;
var host = new HostBuilder()
.ConfigureAppConfiguration((context, config) =>
{
config.AddEnvironmentVariables();
var keyVaultUri = new Uri($"https://{Environment.GetEnvironmentVariable("KEYVAULT_NAME")}.vault.azure.net/");
// Use DefaultAzureCredential to access Key Vault
var credential = new DefaultAzureCredential();
// Add Azure Key Vault to the configuration
config.AddAzureKeyVault(keyVaultUri, credential);
})
.ConfigureFunctionsWebApplication()
.ConfigureServices((context, services) =>
{
services.AddApplicationInsightsTelemetryWorkerService();
services.ConfigureFunctionsApplicationInsights();
})
.Build();
host.Run();
Men varför är detta viktigt? Genom att använda DefaultAzureCredential kan vi undvika att hårdkoda känsliga uppgifter i vår applikation eller checka in dem vårt källkodshantering, vilket inte bara är en best practice utan också ett stort steg mot att göra våra applikationer mer robusta och säkra.
Och om du är nyfiken på exakt hur DefaultAzureCredential fungerar under huven, kan jag varmt rekommendera Tore Nestenius blogpost om detta.
Det är dock viktigt att komma ihåg att den användare du är inloggad med i Visual Studio, eller den managed identity som din Azure Function kör som, måste ha rättigheter att komma åt ditt Azure Key Vault. Utan dessa rättigheter säger datorn nej.

Genom att utnyttja en smart syntax i våra miljövariabler kan vi enkelt få ut hemligheter från Azure Key Vault utan krångel.
{
"IsEncrypted": false,
"Values": {
"AzureWebJobsStorage": "UseDevelopmentStorage=true",
"FUNCTIONS_WORKER_RUNTIME": "dotnet-isolated",
"MySecretValueEnvVariable": "@Microsoft.KeyVault(SecretUri=https://my-key-vault.vault.azure.net/secrets/MySecretValue/)",
"KEYVAULT_NAME": "my-key-vault"
}
}
Den specifika syntaxen, @Microsoft.KeyVault(SecretUri=...), gör det möjligt att direkt i runtime omvandla en miljövariabel till sitt faktiska värde från Azure Key Vault. Ingen mer hårdkodning, ingen mer osäkerhet – bara ren, säker åtkomst till dina viktigaste uppgifter.
Och det bästa? Du kan hämta ut dessa värden direkt i din kod eller använda dem i Azure Functions attribut som exempelvis ServiceBusTrigger.
Environment.GetEnvironmentVariable("MySecretValueEnvVariable");
[ServiceBusTrigger("my-topic", "my-subscription", Connection =
"MySecretServiceBusConnectionStringEnvVariable")]
Voilá!
Avslutningsvis
Nu har vi en lösning som inte bara fungerar, utan också säkrar våra Azure Functions på ett sätt som är både modernt och framtidssäkert. Genom att kombinera .NET 8, Isolated Worker Model och Azure Key Vault får vi en robust arkitektur som är lätt att underhålla och samtidigt håller högsta möjliga säkerhet.
