Arbeta med åtkomstnycklar i Azure Functions
Med Azure Functions kan du använda hemliga nycklar för att göra det svårare att komma åt funktionsslutpunkterna. Den här artikeln beskriver de olika typer av åtkomstnycklar som stöds av Functions och hur du arbetar med åtkomstnycklar.
Även om åtkomstnycklar ger viss lindring mot oönskad åtkomst bör du överväga andra alternativ för att skydda HTTP-slutpunkter i produktion. Det är till exempel inte en bra idé att distribuera delade hemligheter i en offentlig app. Om din funktion anropas från en offentlig klient bör du överväga att implementera dessa eller andra säkerhetsmekanismer:
- Aktivera App Service-autentisering/auktorisering
- Använda Azure API Management (APIM) för att autentisera begäranden
- Distribuera funktionsappen till ett virtuellt nätverk
- Distribuera funktionsappen isolerat
Åtkomstnycklar utgör grunden för HTTP-auktorisering i HTTP-utlösta funktioner. Mer information finns i auktoriseringsnivå.
Förstå nycklar
Omfånget för en åtkomstnyckel och vilka åtgärder den stöder beror på typen av åtkomstnyckel.
Nyckeltyp | Nyckelnamn | HTTP-autentiseringsnivå | beskrivning |
---|---|---|---|
Funktion | default eller användardefinierad |
function |
Tillåter endast åtkomst till en specifik funktionsslutpunkt. |
Värd | default eller användardefinierad |
function |
Tillåter åtkomst till alla funktionsslutpunkter i en funktionsapp. |
Rubrik | _master |
admin |
Särskild värdnyckel som också ger administrativ åtkomst till REST-API:er för körning i en funktionsapp. Det går inte att återkalla den här nyckeln. Eftersom huvudnyckeln ger utökade behörigheter i funktionsappen bör du inte dela den här nyckeln med tredje part eller distribuera den i interna klientprogram. |
System | Beror på tillägget | saknas | Specifika tillägg kan kräva en systemhanterad nyckel för åtkomst till webhook-slutpunkter. Systemnycklar är utformade för tilläggsspecifika funktionsslutpunkter som anropas av interna komponenter. Event Grid-utlösaren kräver till exempel att prenumerationen använder en systemnyckel när du anropar utlösarslutpunkten. Durable Functions använder också systemnycklar för att anropa API:er för durable task-tillägget. Systemnycklar kan bara skapas med specifika tillägg och du kan inte uttryckligen ange deras värden. Precis som andra nycklar kan du generera ett nytt värde för nyckeln från portalen eller med hjälp av nyckel-API:erna. |
Varje nyckel namnges som referens och det finns en standardnyckel (med namnet default
) på funktions- och värdnivå. Funktionsnycklar har företräde framför värdnycklar. När två nycklar definieras med samma namn används alltid funktionsnyckeln.
I följande tabell jämförs användningarna för olika typer av åtkomstnycklar:
Åtgärd | Omfattning | Nyckeltyp |
---|---|---|
Köra en funktion | Specifik funktion | Funktion |
Köra en funktion | Alla funktioner | Funktion eller värd |
Anropa en admin slutpunkt |
Funktionsapp | Endast huvud |
Anropa API:er för durable task-tillägget | Funktionsapp* | System |
Anropa en tilläggsspecifik Webhook (intern) | Funktionsapp* | system |
*Omfång som bestäms av tillägget.
Viktiga krav
I Functions genereras åtkomstnycklar slumpmässigt 32 byte-matriser som kodas som URL-säkra base-64-strängar. Även om du kan generera dina egna åtkomstnycklar och använda dem med Functions rekommenderar vi starkt att du i stället tillåter att Functions genererar alla dina åtkomstnycklar åt dig.
Funktionsgenererade åtkomstnycklar innehåller särskilda signatur- och kontrollsummor som anger typen av åtkomstnyckel och att den genererades av Azure Functions. Att ha dessa extra komponenter i själva nyckeln gör det mycket enklare att fastställa källan till den här typen av hemligheter som finns under säkerhetsgenomsökning och andra automatiserade processer.
Om du vill tillåta att Functions genererar dina nycklar åt dig anger du inte nyckeln value
till någon av de API:er som du kan använda för att generera nycklar.
Hantera nyckellagring
Nycklar lagras som en del av funktionsappen i Azure och krypteras i vila. Som standard lagras nycklar i en Blob Storage-container i det konto som anges av inställningen AzureWebJobsStorage
. Du kan använda inställningen AzureWebJobsSecretStorageType
för att åsidosätta det här standardbeteendet och i stället lagra nycklar på någon av dessa alternativa platser:
Location | Värde | beskrivning |
---|---|---|
Ett andra lagringskonto | blob |
Lagrar nycklar i Blob Storage på ett annat lagringskonto än det som används av Functions-körningen. Det specifika konto och den container som används definieras av en SAS-URL (signatur för delad åtkomst) som anges i inställningen AzureWebJobsSecretStorageSas . Du måste behålla inställningen AzureWebJobsSecretStorageSas när SAS-URL:en ändras. |
Azure Key Vault | keyvault |
Nyckelvalvet som anges i AzureWebJobsSecretStorageKeyVaultUri används för att lagra nycklar. |
Filsystem | files |
Nycklar sparas i det lokala filsystemet, vilket är standardvärdet i Functions v1.x. Lagring av filsystem rekommenderas inte. |
Kubernetes-hemligheter | kubernetes |
Resursen som anges i AzureWebJobsKubernetesSecretName används för att lagra nycklar. Stöds endast när funktionsappen distribueras till Kubernetes. Azure Functions Core Tools genererar värdena automatiskt när du använder det för att distribuera din app till ett Kubernetes-kluster. |
När du använder Key Vault för nyckellagring beror appinställningarna du behöver på den hanterade identitetstypen, antingen systemtilldelad eller användartilldelad.
Inställningsnamn | Systemtilldelad | Användartilldelad | Appregistrering |
---|---|---|---|
AzureWebJobsSecretStorageKeyVaultUri | ✓ | ✓ | ✓ |
AzureWebJobsSecretStorageKeyVaultClientId | X | ✓ | ✓ |
AzureWebJobsSecretStorageKeyVaultClientSecret | X | X | ✓ |
AzureWebJobsSecretStorageKeyVaultTenantId | X | X | ✓ |
Använda åtkomstnycklar
HTTP-utlösta funktioner kan vanligtvis anropas med hjälp av en URL i formatet: https://<APP_NAME>.azurewebsites.net/api/<FUNCTION_NAME>
. När auktoriseringsnivån för en viss funktion har angett ett annat värde än anonymous
måste du också ange en åtkomstnyckel i din begäran. Åtkomstnyckeln kan antingen anges i URL:en med hjälp av frågesträngen ?code=
eller i begärandehuvudet (x-functions-key
). Mer information finns i Åtkomstnyckelauktorisering.
För att få åtkomst till REST-API:erna för körning (under /admin/
) måste du ange huvudnyckeln (_master
) i begärandehuvudet x-functions-key
. Du kan ta bort administratörsslutpunkterna med hjälp av webbplatsegenskapen functionsRuntimeAdminIsolationEnabled
.
Hämta funktionsåtkomstnycklar
Du kan hämta funktions- och värdnycklar programmatiskt med hjälp av dessa Azure Resource Manager-API:er:
- Lista funktionsnycklar
- Lista värdnycklar
- Plats för listfunktionsnycklar
- Visa en lista med värdnycklar.
Mer information om hur du anropar Azure Resource Manager-API:er finns i Azure REST API-referensen.
Du kan använda dessa metoder för att hämta åtkomstnycklar utan att behöva använda REST-API:erna.
Logga in på Azure-portalen och sök sedan efter och välj Funktionsapp.
Välj den funktionsapp som du vill arbeta med.
I den vänstra rutan expanderar du Functions och väljer sedan Appnycklar.
Sidan Appnycklar visas. På den här sidan visas värdnycklarna, som kan användas för att komma åt alla funktioner i appen. Systemnyckeln visas också, vilket ger alla åtkomst på administratörsnivå till alla funktionsapp-API:er.
Du kan också öva på minsta möjliga behörighet genom att använda nyckeln för en specifik funktion. Du kan hämta funktionsspecifika nycklar från fliken Funktionsnycklar i en specifik HTTP-utlöst funktion.
Förnya eller skapa åtkomstnycklar
När du förnyar eller skapar dina åtkomstnyckelvärden måste du manuellt omdistribuera de uppdaterade nyckelvärdena till alla klienter som anropar funktionen.
Du kan förnya funktions- och värdnycklar programmatiskt eller skapa nya med hjälp av dessa Azure Resource Manager-API:er:
- Skapa eller uppdatera funktionshemlighet
- Skapa eller uppdatera funktionshemlighetsfack
- Skapa eller uppdatera värdhemlighet
- Skapa eller uppdatera värdhemlighetsfack
Mer information om hur du anropar Azure Resource Manager-API:er finns i Azure REST API-referensen.
Du kan använda dessa metoder för att hämta åtkomstnycklar utan att behöva skapa anrop till REST-API:erna manuellt.
Logga in på Azure-portalen och sök sedan efter och välj Funktionsapp.
Välj den funktionsapp som du vill arbeta med.
I den vänstra rutan expanderar du Functions och väljer sedan Appnycklar.
Sidan Appnycklar visas. På den här sidan visas värdnycklarna, som kan användas för att komma åt alla funktioner i appen. Systemnyckeln visas också, vilket ger alla åtkomst på administratörsnivå till alla funktionsapp-API:er.
Välj Förnya nyckelvärde bredvid den nyckel som du vill förnya och välj sedan Förnya och spara.
Du kan också förnya en funktionsnyckel på fliken Funktionsnycklar i en specifik HTTP-utlöst funktion.
Ta bort åtkomstnycklar
Du kan ta bort funktions- och värdnycklar programmatiskt med hjälp av dessa Azure Resource Manager-API:er:
- Ta bort funktionshemlighet
- Ta bort funktionshemlighetsfack
- Ta bort värdhemlighet
- Ta bort värdhemlighetsplats
Mer information om hur du anropar Azure Resource Manager-API:er finns i Azure REST API-referensen.