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. |
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.
| Backend | Inställningsvärde | Automatiskt genererar nycklar | Externt beroende | Passar bäst för |
|---|---|---|---|---|
| Container Apps hemlighetsarkiv | containerapps |
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 |
Ha dessa backend-överväganden i åtanke:
- Körningen väljer inte automatiskt Container Apps secret storage. Om du inte sätter
AzureWebJobsSecretStorageTypeeller sätter det till ett icke-igenkänt värde, använder Functions-värden Blob Storage närAzureWebJobsStoragedet är tillgängligt. - Håll
AzureWebJobsStoragekonfigurerad för lagringshälsokontroller och lagringsberoende funktioner. - Ställ inte in
AzureWebJobsSecretStorageTypetillfiles. Container Apps-filsystemet är flyktigt, så nycklar som lagras i denna backend går förlorade när appen skalar till noll, startar om eller distribuerar en ny version.
Mönster för sekretessbelagt namn
Namngivningskonventionen för lagrade nycklar beror på lagringsserverdelen.
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.
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 containerappsVä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 Key Vault eller Blob Storage som lagring
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:
Note
Håll minst en replika igång för att utföra dessa nyckelhanteringsoperationer.
Lista alla värdnycklar:
az containerapp function keys list \ --resource-group "<RESOURCE_GROUP>" \ --name "<FUNCTIONS_APP_NAME>" \ --key-type hostKeyLista huvudnyckeln:
az containerapp function keys list \ --resource-group "<RESOURCE_GROUP>" \ --name "<FUNCTIONS_APP_NAME>" \ --key-type masterKeySkapa eller skriv över en anpassad värdnyckel:
az containerapp function keys set \ --resource-group "<RESOURCE_GROUP>" \ --name "<FUNCTIONS_APP_NAME>" \ --key-name "MyCustomKey" \ --key-value "<YOUR_KEY_VALUE>" \ --key-type hostKeyVisa en specifik nyckel:
az containerapp function keys show \ --resource-group "<RESOURCE_GROUP>" \ --name "<FUNCTIONS_APP_NAME>" \ --key-name "<KEY_NAME>" \ --key-type hostKeyTa bort en värdnyckel:
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>"