Kommentar
Åtkomst till den här sidan kräver auktorisering. Du kan prova att logga in eller ändra kataloger.
Åtkomst till den här sidan kräver auktorisering. Du kan prova att ändra kataloger.
Funktionsåtkomstnycklar är autentiseringstoken som Functions-körningen använder för att skydda HTTP-utlösta slutpunkter. När en anropare anropar en HTTP-funktion innehåller den en nyckel som en ?code= frågeparameter eller ett x-functions-key sidhuvud. Körmiljön validerar nyckeln och auktoriserar eller avvisar begäran.
Åtkomstnycklar är inte samma som hemligheter på appnivå. Åtkomstnycklar skyddar vem som kan anropa dina funktioner, medan hemligheter på appnivå skyddar vad dina funktioner ansluter till.
När du ska använda åtkomstnycklar
| Scenario | Därför passar åtkomstnycklar |
|---|---|
| Webhooks från tredje part | Leverantörer som GitHub, Stripe eller Twilio anropar din funktion via en URL och hemlighet. Åtkomstnycklar hamnar direkt i ?code= mönstret de förväntar sig. |
| Tjänst-till-tjänst-samtal | Serverdelstjänsten A anropar funktion B via HTTP. En delad nyckel är enklare än att konfigurera Microsoft Entra appregistreringar för interna anrop. |
| Event Grid-prenumerationer | Event Grid validerar och anropar funktionsslutpunkten med hjälp av en systemnyckel som plattformen hanterar automatiskt. |
| Dev/test-autentisering | Under utvecklingen behöver du grundläggande autentisering utan att konfigurera fullständig OAuth/OIDC. Åtkomstnycklar ger en autentiseringsport med låg friktion utan identitetskonfiguration. |
| Migreringskompatibilitet | Befintliga Azure Functions appar använder redan åtkomstnycklar. När du migrerar till Container Apps behöver du samma nyckelbaserade autentisering för att undvika att störa anropare. |
Note
För användarriktade API:er, nollförtroendearbetsbelastningar eller auktoriseringsscenarier per användare använder du Microsoft Entra ID/OAuth 2.0 i stället för åtkomstnycklar. Åtkomstnycklar är delade hemligheter utan spårningsspår på identitetsnivå.
Förutsättningar
- Ett Azure-konto med en aktiv prenumeration. Skapa ett konto kostnadsfritt.
- Azure CLI version 2.40.0 eller senare.
- En befintlig Azure Functions app i Container Apps eller behörigheter för att skapa en.
Åtkomst till nyckeltyper
Functions-körningen hanterar fyra typer av nycklar:
| Nyckeltyp | Scope | Avsikt |
|---|---|---|
Huvudnyckel (_master) |
Hela funktionsappen | Åtkomst på administratörsnivå till alla funktioner och /admin/* hanteringsslutpunkter. Kan inte återkallas, endast roteras. |
Värdnycklar (default + anpassade) |
Hela funktionsappen | Auktorisera anrop till alla HTTP-utlösta funktioner i appen. |
Funktionsnycklar (default + anpassad) |
Enskild funktion | Auktorisera anrop till en specifik funktion. Ger mer detaljerad kontroll än värdnycklar. |
| Systemnycklar | Tilläggsslutpunkter | Används av plattformstillägg som Event Grid webhook-prenumerationer och Durable Functions. Hanteras automatiskt. |
Mönster för sekretessbelagt namn
Namngivningskonventionen för lagrade nycklar beror på lagringsserverdelen.
Nyckelvalv
I Key Vault-serverdelen lagras varje nyckel som en enskild Key Vault hemlighet med hjälp av en dubbelstreckskonvention (--):
| Nyckeltyp | Mönster för hemligt namn | Example |
|---|---|---|
| Huvudnyckel | host--masterKey--master |
host--masterKey--master |
| Funktionsnyckel (standard) | host--functionKey--default |
host--functionKey--default |
| Funktionsnyckel (anpassad) | host--functionKey--<name> |
host--functionKey--MyApiClient |
| Systemnyckel | host--systemKey--<extension> |
host--systemKey--eventgrid_extension |
| Per funktionsnyckel | function--<functionName>--<keyName> |
function--myhttpfunc--default |
Blob Storage
Blob Storage-serverdelen lagrar nycklar som JSON-filer i blobcontainern azure-webjobs-secrets. Alla nycklar på värdnivå (huvudnycklar, funktionsnycklar och systemnycklar) lagras tillsammans i en enda host.json blob. Nycklar per funktion lagras i separata blobar med namnet efter varje funktion.
| Blobsökväg | Innehåll |
|---|---|
<siteSlotName>/host.json |
JSON-fil som innehåller masterKey, functionKeysoch systemKeys |
<siteSlotName>/<functionName>.json |
JSON-fil som innehåller nycklar för en specifik funktion |
Container Apps hemlighetslagring
Hemlighetslagret i Container Apps använder en annan konvention. Functions-värden läser nycklar från volymmonterade filer på /run/secrets/functions-keys/. Varje fil använder ett prickat namn (till exempel host.master), men Container Apps hemliga namn tillåter endast alfanumeriska gemener och bindestreck. När du monterar en hemlig volym måste du uttryckligen path ange fältet till det streckade filnamnet som Functions-värden förväntar sig (till exempel secretRef: host-master → path: host.master). Plattformen utför ingen automatisk namnöversättning.
| Nyckeltyp | Container Apps hemliga namn (bindestreck) | Volymmontering path (punkter) |
|---|---|---|
| Huvudnyckel | host-master |
host.master |
| Standardvärdnyckel | host-function-default |
host.function.default |
| Anpassad värdnyckel | host-function-<name> |
host.function.<name> |
| Standardfunktionsnyckel för en specifik funktion | functions-<functionname>-default |
functions.<functionName>.default |
| Anpassad funktionsnyckel för en specifik funktion | functions-<functionname>-<keyname> |
functions.<functionName>.<keyName> |
| Systemnyckel | host-systemkey-<extension> |
host.systemKey.<extension> |
Tips/Råd
När du felsöker, leta efter dessa mönster i ditt backendlager för att kontrollera att nycklarna är korrekt konfigurerade.
Välj en lagringsbackend
AzureWebJobsSecretStorageType Ställ in miljövariabeln för att styra var körmiljön bevarar åtkomstnycklar. Azure Container Apps stöder tre produktionsklara backends.
Important
För produktionslast föredrar du backends i den här ordningen: Container Apps Secret Store (containerapp) > Azure Key Vault (keyvault) > Azure Blob Storage (blob). Container Apps hemlighetslagret har inga externa beroenden och är det enklaste att hantera.
| Backend | Inställningsvärde | Automatiskt genererar nycklar | Externt beroende | Passar bäst för |
|---|---|---|---|---|
| Container Apps hemlighetsarkiv | containerapp |
Nej – du tillhandahåller nycklar som Container Apps-hemligheter | None | De flesta arbetsbelastningar (rekommenderas) |
| Azure Key Vault | keyvault |
Nej – skapa utlösare manuellt | Key Vault instans | Centraliserad styrning, efterlevnadsgranskning |
| Azure Blob Storage | blob |
Ja | Lagringskonto | Äldre appar eller befintligt AzureWebJobsStorage konto |
Varning
Ställ inte in AzureWebJobsSecretStorageType till files. På Azure Container Apps är filsystemet ephemeral, så värdnycklar som lagras med serverdelen files går förlorade varje gång appen skalar till noll, startar om eller distribuerar en ny revision. Använd alltid någon av de tre backend för produktion som nämns ovan.
Konfigurera containerapparnas hemlighetslagring
Container Apps hemlighetslagring är den rekommenderade backend. Nycklar finns kvar på Container Apps-plattformen och kräver ingen extern lagring eller Key Vault. Azure Resource Manager aktivitetsloggar spårar ändringar i hemligheter och miljövariabler.
Med den här back-end-lösningen läser Functionsvärd nycklar från filer som är volymmonterade på /run/secrets/functions-keys/. Värden skapar inte nycklar automatiskt. Du måste skapa varje nyckel som en Container Apps-hemlighet och plattformen monterar dem som filer som värden ska läsa.
Important
Container Apps-hemlighetslagret är skrivskyddat från värdmiljöns perspektiv. Värden läser de monterade nyckelfilerna men skriver aldrig till dem. Om en nödvändig nyckel saknas genererar värden den inte automatiskt.
Steg 1: Ange lagringstyp
Gå till din Functions-containerapp i Azure-portalen.
Under Inställningar väljer du Miljövariabler.
Välj Lägg till och ange följande värden:
Fastighet Value Namn AzureWebJobsSecretStorageTypeValue containerappVälj Spara och välj sedan Använd för att bekräfta ändringarna.
Steg 2: Generera och lagra åtkomstnyckelhemligheter
Generera nyckelvärden och lagra dem som Container Apps-hemligheter. Du behöver minst huvudnyckeln och en standardvärdnyckel.
I din Functions-containerapp går du till Inställningar och väljer Hemligheter.
Välj Lägg till och ange följande värden:
Fastighet Value Namn host-masterType Hemlighet för Container-appar Value Ett slumpmässigt genererat nyckelvärde. Välj Lägg till.
Upprepa för
host-function-defaultmed ett annat slumpmässigt genererat värde.För att lägga till en funktionsspecifik nyckel, lägg till en hemlighet med namnet
functions-<functionname>-default(alla gemener).
Note
Container Apps hemliga namn tillåter endast alfanumeriska gemener och bindestreck. Du måste uttryckligen ange path fältet i volymkonfigurationen till det streckade filnamnet som Functions-värden förväntar sig (till exempel secretRef: host-master → path: host.master). Utan explicit path behåller filen på disken det bindestrecksformade namnet och Functions-värden kan inte hitta nyckeln.
Steg 3: Konfigurera volymmonteringen
Montera hemligheterna som filer på /run/secrets/functions-keys/.
I din Functions-containerapp går du till Programoch väljer Revisioner och repliker.
Välj Skapa ny revision.
På fliken Skala och volymer går du till Volymer och väljer Lägg till.
Ange följande värden:
Fastighet Value Volymtyp Hemlighet Namn functions-keysFör varje hemlighet anger du fältet Sökväg till det streckade filnamnet som Functions-värden förväntar sig (till exempel inställt
host-masterpå sökväghost.masterochhost-function-defaultsökväghost.function.default).Välj Lägg till.
På fliken Container väljer du din container och väljer sedan Redigera.
Välj fliken Volymmonteringar och välj Lägg till.
Ange följande värden:
Fastighet Value Volymnamn functions-keysMonteringspunktens sökväg /run/secrets/functions-keysVälj Spara och välj sedan Skapa för att distribuera den nya revisionen.
Steg 4: Verifiera
När appen har startats om bekräftar du att nycklarna fungerar:
az containerapp function keys list \
--resource-group "<RESOURCE_GROUP>" \
--name "<FUNCTIONS_APP_NAME>" \
--key-type hostKey
Du kan också kontrollera apploggarna för meddelandet Resolved secret storage provider ContainerAppsSecretsRepository, som bekräftar att värden använder Container Apps-hemlighetsarkivet.
Rotera nycklar
Om du vill rotera en nyckel uppdaterar du Container Apps-hemligheten och startar om appen:
NEW_KEY=$(openssl rand -hex 32)
az containerapp secret set \
--resource-group "<RESOURCE_GROUP>" \
--name "<FUNCTIONS_APP_NAME>" \
--secrets "host-function-default=$NEW_KEY"
az containerapp revision restart \
--resource-group "<RESOURCE_GROUP>" \
--name "<FUNCTIONS_APP_NAME>" \
--revision "<REVISION_NAME>"
Note
Alla repliker delar samma monterade hemligheter. Efter en omstart hämtar varje replik de uppdaterade nyckelvärdena.
Konfigurera Blob Storage
Blob Storage-backend möjliggör att körmiljön automatiskt kan generera och hantera åtkomstnycklar. Använd det här alternativet när du redan har ett lagringskonto för AzureWebJobsStorage och inte behöver centraliserad styrning.
Aktivera hanterad identitet i containerappen (om den inte redan är aktiverad):
az containerapp identity assign \ --resource-group "<RESOURCE_GROUP>" \ --name "<FUNCTIONS_APP_NAME>" \ --system-assignedBevilja på lagringskontot rollen Storage Blob Data Contributor till den hanterade identiteten.
PRINCIPAL_ID=$(az containerapp show \ --resource-group "<RESOURCE_GROUP>" \ --name "<FUNCTIONS_APP_NAME>" \ --query identity.principalId \ --output tsv) STORAGE_ID=$(az storage account show \ --name "<STORAGE_ACCOUNT_NAME>" \ --resource-group "<RESOURCE_GROUP>" \ --query id \ --output tsv) az role assignment create \ --role "Storage Blob Data Contributor" \ --assignee "$PRINCIPAL_ID" \ --scope "$STORAGE_ID"Ange lagringstyp:
az containerapp update \ --resource-group "<RESOURCE_GROUP>" \ --name "<FUNCTIONS_APP_NAME>" \ --set-env-vars "AzureWebJobsSecretStorageType=blob"Körtiden skapar nycklar automatiskt vid nästa kallstart. Kontrollera:
az containerapp function keys list \ --resource-group "<RESOURCE_GROUP>" \ --name "<FUNCTIONS_APP_NAME>" \ --key-type hostKey
Konfigurera Key Vault
Key Vault-serverdelen lagrar åtkomstnycklar som Key Vault hemligheter, vilket ger granskning och åtkomstkontroll i företagsklass.
Skapa en Key Vault (om du inte har någon):
az keyvault create \ --name "<KEYVAULT_NAME>" \ --resource-group "<RESOURCE_GROUP>" \ --location "<LOCATION>"Aktivera hanterad identitet i containerappen (om den inte redan är aktiverad):
az containerapp identity assign \ --resource-group "<RESOURCE_GROUP>" \ --name "<FUNCTIONS_APP_NAME>" \ --system-assignedGe rollen Key Vault Secrets Officer till den hanterade identiteten. Körningen behöver läs- och skrivåtkomst för att skapa och hantera nycklar:
PRINCIPAL_ID=$(az containerapp show \ --resource-group "<RESOURCE_GROUP>" \ --name "<FUNCTIONS_APP_NAME>" \ --query identity.principalId \ --output tsv) KEYVAULT_ID=$(az keyvault show \ --name "<KEYVAULT_NAME>" \ --query id \ --output tsv) az role assignment create \ --role "Key Vault Secrets Officer" \ --assignee "$PRINCIPAL_ID" \ --scope "$KEYVAULT_ID"Ange lagringstyp och Key Vault URI:
För systemtilldelad identitet:
az containerapp update \ --resource-group "<RESOURCE_GROUP>" \ --name "<FUNCTIONS_APP_NAME>" \ --set-env-vars \ "AzureWebJobsSecretStorageType=keyvault" \ "AzureWebJobsSecretStorageKeyVaultUri=https://<KEYVAULT_NAME>.vault.azure.net"För användartilldelad identitet anger du även klient-ID:t:
az containerapp update \ --resource-group "<RESOURCE_GROUP>" \ --name "<FUNCTIONS_APP_NAME>" \ --set-env-vars \ "AzureWebJobsSecretStorageType=keyvault" \ "AzureWebJobsSecretStorageKeyVaultUri=https://<KEYVAULT_NAME>.vault.azure.net" \ "AzureWebJobsSecretStorageKeyVaultClientId=<USER_ASSIGNED_IDENTITY_CLIENT_ID>"Utveckla nyckelskapande genom att lista nycklar:
az containerapp function keys list \ --resource-group "<RESOURCE_GROUP>" \ --name "<FUNCTIONS_APP_NAME>" \ --key-type hostKey
Hantera åtkomstnycklar
Oavsett serverdel använder du följande kommandon för att lista, skapa och ta bort åtkomstnycklar:
# List all host keys
az containerapp function keys list \
--resource-group "<RESOURCE_GROUP>" \
--name "<FUNCTIONS_APP_NAME>" \
--key-type hostKey
# List the master key
az containerapp function keys list \
--resource-group "<RESOURCE_GROUP>" \
--name "<FUNCTIONS_APP_NAME>" \
--key-type masterKey
# Create or overwrite a custom host key
az containerapp function keys set \
--resource-group "<RESOURCE_GROUP>" \
--name "<FUNCTIONS_APP_NAME>" \
--key-name "MyCustomKey" \
--key-value "<YOUR_KEY_VALUE>" \
--key-type hostKey
# Show a specific key
az containerapp function keys show \
--resource-group "<RESOURCE_GROUP>" \
--name "<FUNCTIONS_APP_NAME>" \
--key-name "<KEY_NAME>" \
--key-type hostKey
# Delete a host key
az containerapp function keys delete \
--resource-group "<RESOURCE_GROUP>" \
--name "<FUNCTIONS_APP_NAME>" \
--key-name "MyCustomKey" \
--key-type hostKey
Anropa en funktion med en åtkomstnyckel
Skicka nyckeln som en frågeparameter eller begärandehuvud.
# Query parameter
curl "https://<FUNCTIONS_APP_URL>/api/<FUNCTION_NAME>?code=<HOST_KEY>"
# Header
curl "https://<FUNCTIONS_APP_URL>/api/<FUNCTION_NAME>" \
-H "x-functions-key: <HOST_KEY>"