Notitie
Voor toegang tot deze pagina is autorisatie vereist. U kunt proberen u aan te melden of de directory te wijzigen.
Voor toegang tot deze pagina is autorisatie vereist. U kunt proberen de mappen te wijzigen.
Azure Functions toegangssleutels fungeren als gedeelde geheimen die toegang tot functie-endpoints autoriseren. In dit artikel worden de soorten toegangssleutels beschreven die door Functions worden ondersteund en hoe u kunt werken met toegangssleutels.
Hoewel toegangssleutels enige bescherming bieden tegen ongewenste toegang, overweeg dan andere opties om HTTP-eindpunten in productie te beveiligen. Verspreid bijvoorbeeld geen gedeelde geheimen in een openbare app. Als een publieke client uw functie aanroept, overweeg dan deze of andere beveiligingsmechanismen te implementeren:
- App Service-verificatie/-autorisatie inschakelen
- Azure API Management (APIM) gebruiken om aanvragen te verifiëren
- Uw functie-app implementeren in een virtueel netwerk
- Uw functie-app in isolatie implementeren
Toegangssleutels vormen de basis voor HTTP-autorisatie in HTTP-getriggerde functies. Zie Autorisatieniveau voor meer informatie.
Toegangssleuteltypen
Het bereik van een toegangssleutel en de acties die worden ondersteund, zijn afhankelijk van het type toegangssleutel.
| Sleuteltype | Sleutelnaam | HTTP-verificatieniveau | Beschrijving |
|---|---|---|---|
| Functie |
default of door de gebruiker gedefinieerd |
function |
Hiermee wordt alleen toegang tot een specifiek functie-eindpunt toegestaan. |
| Gastheer |
default of door de gebruiker gedefinieerd |
function |
Hiermee heeft u toegang tot alle functie-eindpunten in een functie-app. |
| Meester | _master |
admin |
Speciale hostsleutel die ook beheerderstoegang biedt tot de RUNTIME REST API's in een functie-app. Omdat de master key verhoogde rechten geeft in je functie-app, deel deze sleutel niet met derden of verspreid hem niet in native clientapplicaties. |
| Systeem | Afhankelijk van de extensie | n.v.t | Voor specifieke extensies is mogelijk een door het systeem beheerde sleutel vereist voor toegang tot webhook-eindpunten. Systeemsleutels zijn ontworpen voor extensie-specifieke functie-eindpunten die interne componenten oproepen. De Event Grid-trigger vereist bijvoorbeeld dat het abonnement een systeemsleutel gebruikt bij het aanroepen van het triggereindpunt. Durable Functions maakt ook gebruik van systeemsleutels om API's voor durable task-extensie aan te roepen. Alleen specifieke extensies kunnen systeemsleutels maken. U kunt hun waarden niet expliciet instellen. Net als andere sleutels kunt u een nieuwe waarde genereren voor de sleutel vanuit de portal of met behulp van de sleutel-API's. |
Elke sleutel heeft een naam ter referentie. De functie-app en functieniveaus hebben elk een standaardtoets genaamd default. Functietoetsen hebben voorrang op hostsleutels. Wanneer twee toetsen dezelfde naam hebben, wordt altijd de functietoets gebruikt.
In de volgende tabel worden de toepassingen voor verschillende soorten toegangssleutels vergeleken:
| Handeling | Omvang | Sleuteltype |
|---|---|---|
| Een functie uitvoeren | Specifieke functie | Functie |
| Een functie uitvoeren | Elke functie | Functie of gastheer |
Een admin eindpunt aanroepen |
Functie-app | Meester |
| Duurzame taakextensie-API's aanroepen | Functie-app* | Systeem |
| Roep een extensie-specifieke webhook aan (intern) | Functie-app* | Systeem |
*Bereik bepaald door de extensie.
Vereisten voor toegangssleutels
In Functions worden willekeurige 32-byte toegangsleutels gegenereerd die zijn gecodeerd als URL-veilige base-64-tekenreeksen. Hoewel je je eigen toegangssleutels kunt genereren en deze met Functions kunt gebruiken, gebruik dan in plaats daarvan het standaard toegangssleutelgeneratieproces.
Door functies gegenereerde toegangssleutels bevatten speciale handtekening- en controlesomwaarden die het type toegangssleutel aangeven en dat Azure Functions deze heeft gegenereerd. Deze extra componenten in de sleutel maken het eenvoudiger om de bron van dit soort geheimen te bepalen tijdens beveiligingsscanningen en andere geautomatiseerde processen.
Om Functions toe te staan je sleutels te genereren, geef je de sleutel value niet aan een van de API's die je kunt gebruiken om sleutels te genereren.
Opslag van toegangssleutels
Je functie-app in Azure slaat sleutels op en versleutelt ze in rust. Standaard slaat de AzureWebJobsStorage instelling sleutels op in een Blob-opslagcontainer in het opgegeven account. Gebruik de AzureWebJobsSecretStorageType instelling om dit standaardgedrag te overschrijven en sla sleutels op op een van deze alternatieve locaties:
Belangrijk
Toegangssleutels maken deel uit van de geheime opslag van je app en hebben hun eigen levenscyclus, onafhankelijk van de functies die ze beschermen. Het verwijderen van een functie verwijdert of roteert de sleutels in de geheime opslag niet. Omdat de opslaglocatie van een sleutel is afgeleid van de appnaam, gebruikt het opnieuw aanmaken van een functie met dezelfde naam de eerder opgeslagen sleutels in plaats van nieuwe te genereren. Dit gedrag geldt voor alle geheime opslagproviders, inclusief Blob Storage en Key Vault. Het verwijderen en opnieuw aanmaken van een functie is geen vervanging voor sleutelrotatie: om een sleutel in te trekken wanneer een inloggegevens wordt getoond of je iemands toegang verwijdert, moet je deze expliciet roteren of verwijderen, zoals beschreven in Vernieuwen of toegangssleutels aanmaken.
| Locatie | Waarde | Beschrijving |
|---|---|---|
| Een tweede opslagaccount | blob |
Slaat sleutels op in Blob Storage in een opslagaccount dat verschilt van het account dat door de Functions-runtime wordt gebruikt. Het specifieke account en de gebruikte container worden gedefinieerd door een SAS-URL (Shared Access Signature) die is ingesteld in de AzureWebJobsSecretStorageSas instelling. U moet de AzureWebJobsSecretStorageSas instelling behouden wanneer de SAS-URL wordt gewijzigd. |
| Azure Key Vault- | keyvault |
Slaat sleutels op in de sleutelkluis die is ingesteld in AzureWebJobsSecretStorageKeyVaultUri. |
| Bestandssysteem | files |
Sleutels blijven behouden op het lokale bestandssysteem. Dit is de standaardwaarde in Functions v1.x. Bestandssysteemopslag wordt niet aanbevolen. |
| Kubernetes-geheimen | kubernetes |
Slaat sleutels op in de resource die in AzureWebJobsKubernetesSecretNameis gezet. Alleen ondersteund wanneer uw functie-app wordt geïmplementeerd in Kubernetes. De Azure Functions Core Tools genereert de waarden automatisch wanneer u deze gebruikt om uw app te implementeren in een Kubernetes-cluster.
Onveranderbare geheimen worden niet ondersteund. |
| Azure Container Apps-geheimen | containerapps |
Sleutels worden opgeslagen in het Azure Container Apps geheimenarchief, het interne geheimenbeheersysteem voor Container Apps. Alleen ondersteund wanneer uw functie-app wordt geïmplementeerd in Azure Container Apps. Voor informatie, zie Configureer de geheime winkel van Container Apps. |
Wanneer je Key Vault gebruikt voor sleutelopslag, hangen de benodigde app-instellingen af van hoe de app zich authenticeert bij Key Vault: een door het systeem toegewezen beheerde identiteit, een door de gebruiker toegewezen beheerde identiteit, of een app-registratie.
| Instellingsnaam | Door het systeem toegewezen | Door de gebruiker toegewezen | App-registratie |
|---|---|---|---|
AzureWebJobsSecretStorageKeyVaultUri |
Yes | Yes | Yes |
AzureWebJobsSecretStorageKeyVaultClientId |
No | Yes | Yes |
AzureWebJobsSecretStorageKeyVaultClientSecret |
No | No | Yes |
AzureWebJobsSecretStorageKeyVaultTenantId |
No | No | Yes |
Belangrijk
Geheimen zijn niet gericht op afzonderlijke functie-apps via de AzureWebJobsSecretStorageKeyVaultUri instelling. Als meerdere functie-apps zijn geconfigureerd om dezelfde Key Vault te gebruiken, delen ze dezelfde sleutels en geheimen, wat kan leiden tot sleutelconflicten of overschrijvingen. Om onbedoeld gedrag te voorkomen, raden we u aan een afzonderlijk Key Vault-exemplaar te gebruiken voor elke functie-app.
Oproep-eindpunten met toegangssleutels
Je kunt HTTP-getriggerde functies aanroepen door een URL te gebruiken die de functienaam bevat. Wanneer je het autorisatieniveau van een functie op een andere waarde dan anonymousinstelt, moet je ook een toegangssleutel in je verzoek opgeven. Je kunt de toegangssleutel in de URL opnemen door de ?code= querystring te gebruiken of in de requestheader (x-functions-key). Zie Toegangssleutelautorisatie voor meer informatie.
Als u toegang wilt krijgen tot de RUNTIME REST API's (onder /admin/), moet u de hoofdsleutel (_master) opgeven in de x-functions-key aanvraagheader. Je kunt administratieve eindpunten uitschakelen door de site-eigenschap in te functionsRuntimeAdminIsolationEnabled stellen.
Toegangssleutels voor uw functie ophalen
U kunt functie- en hostsleutels programmatisch ophalen met behulp van deze Azure Resource Manager-API's:
Zie de Naslaginformatie over de Azure REST API voor meer informatie over het aanroepen van Azure Resource Manager-API's.
Note
Wanneer je je functie-app uitrolt naar Azure Container Apps en gebruiktAzureWebJobsSecretStorageType=ContainerApps, moet je Container Apps-specifieke methoden gebruiken om functiesleutels op te halen. Voor meer informatie, zie Toegangssleutels beheren in de documentatie van Container Apps.
Gebruik deze methoden om toegangssleutels te verkrijgen zonder gebruik te maken van de REST API's.
Log in op het Azure-portaal en zoek vervolgens naar en selecteer Function App.
Selecteer de functie-app waarmee u wilt werken.
Vouw functies uit in het linkermenu en selecteer vervolgens App-sleutels.
De pagina App-sleutels wordt weergegeven. Op deze pagina worden de hostsleutels weergegeven, die je kunt gebruiken om elke functie in de app te openen. De systeemsleutel wordt ook weergegeven, waardoor iedereen op beheerdersniveau toegang heeft tot alle API's van de functie-app.
U kunt ook het principe van minimaal privilege toepassen door de sleutel te gebruiken voor een specifieke functie. U kunt functiespecifieke sleutels ophalen op het tabblad Functietoetsen van een specifieke door HTTP geactiveerde functie.
Aanbeveling
Je kunt ook toegangssleutels voor je functies krijgen door het Azure Functions Core Tools-commando func azure functionapp list-functions te gebruiken met de --show-keys optie. Zie de naslaginformatie over Azure Functions Core Tools voor meer informatie.
Toegangssleutels vernieuwen of maken
Wanneer u uw toegangssleutelwaarden verlengt of maakt, moet u de bijgewerkte sleutelwaarden handmatig distribueren naar alle clients die uw functie aanroepen.
Belangrijk
Behandel de hoofdsleutel (_master) als een administratief credential. Het geeft administratieve, dataplane toegang tot je app—inclusief, bij apps met een beschrijfbaar bestandssysteem, de mogelijkheid om code te deployen en uit te voeren via de runtime REST API's—dus deel deze alleen met vertrouwde beheerders, niet met gewone aanroepers. Hostsleutels zijn niet administratief, maar elke sleutel autoriseert aanroepen naar elke functie in de app, dus verdeel ze ook zorgvuldig.
Wanneer inloggegevens gecompromitteerd zijn, of wanneer je de toegang van een partij moet intrekken, roteer de betreffende sleutels dan expliciet. Het draaien van een individuele sleutel is voldoende om die specifieke sleutel te intrekken. Zoals vermeld in Access key storage, roteert het verwijderen of opnieuw aanmaken van een functie de opgeslagen toetsen niet.
U kunt functie- en hostsleutels programmatisch vernieuwen of nieuwe sleutels maken met behulp van deze Azure Resource Manager-API's:
- Functiegeheim maken of bijwerken
- Functiegeheimelement maken of bijwerken
- Hostgeheim maken of bijwerken
- Hostgeheime slot maken of bijwerken
Zie de Naslaginformatie over de Azure REST API voor meer informatie over het aanroepen van Azure Resource Manager-API's.
U kunt deze methoden gebruiken om toegangssleutels op te halen zonder handmatig aanroepen naar de REST API's te hoeven maken.
Log in op het Azure-portaal en zoek vervolgens naar en selecteer Function App.
Selecteer de functie-app waarmee u wilt werken.
Vouw functies uit in het linkermenu en selecteer vervolgens App-sleutels.
De pagina App-sleutels wordt weergegeven. Op deze pagina worden de hostsleutels weergegeven, die je kunt gebruiken om elke functie in de app te openen. De systeemsleutel wordt ook weergegeven, waardoor iedereen op beheerdersniveau toegang heeft tot alle API's van de functie-app.
Selecteer de sleutelwaarde Vernieuwen naast de sleutel die je wilt verlengen, en selecteer vervolgens Vernieuwen en opslaan.
U kunt ook een functiesleutel vernieuwen op het tabblad Functietoetsen van een specifieke door HTTP geactiveerde functie.
Toegangssleutels verwijderen
U kunt functie- en hostsleutels programmatisch verwijderen met behulp van deze Azure Resource Manager-API's:
- Functiegeheim verwijderen
- Functiegeheimsleuf verwijderen
- Hostgeheim verwijderen
- Host geheime slot verwijderen
Zie de Naslaginformatie over de Azure REST API voor meer informatie over het aanroepen van Azure Resource Manager-API's.