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.
Functions-toegangssleutels zijn verificatietokens die door de Functions-runtime worden gebruikt voor het beveiligen van door HTTP geactiveerde eindpunten. Wanneer een aanroeper een HTTP-functie aanroept, bevat deze een sleutel als een ?code= queryparameter of een x-functions-key header. De runtime valideert de sleutel en autoriseert of weigert de aanvraag.
Toegangssleutels zijn niet hetzelfde als geheimen op app-niveau. Met toegangssleutels wordt beveiligd wie uw functies kan aanroepen, terwijl geheimen op app-niveau beveiligen waarmee uw functies verbinding maken.
Wanneer moet u toegangssleutels gebruiken
| Scenario | Waarom toegangssleutels passen |
|---|---|
| Webhooks van derden | Providers zoals GitHub, Stripe of Twilio roepen uw functie aan via een URL en geheim. Toegangssleutels passen rechtstreeks in het patroon ?code= dat zij verwachten. |
| Service-naar-service-aanroepen | Back-endservice A roept Functie B aan via HTTP. Een gedeelde sleutel is eenvoudiger dan het instellen van Microsoft Entra app-registraties voor interne aanroepen. |
| Event Grid-abonnementen | Event Grid valideert en roept uw functie-eindpunt aan met behulp van een systeemsleutel die het platform automatisch beheert. |
| Authenticatie voor dev/test | Tijdens de ontwikkeling hebt u basisverificatie nodig zonder volledige OAuth/OIDC te configureren. Toegangssleutels bieden een verificatiepoort met lage wrijving zonder identiteitsconfiguratie. |
| Migratiecompatibiliteit | Bestaande Azure Functions-apps gebruiken al toegangssleutels. Wanneer u migreert naar Container Apps, hebt u dezelfde sleutelgebaseerde authenticatie nodig om te voorkomen dat oproepers fouten ondervinden. |
Note
Gebruik voor gebruikersgerichte API's, workloads zonder vertrouwen of autorisatie per gebruiker Microsoft Entra ID/OAuth 2.0 in plaats van toegangssleutels. Toegangssleutels zijn gedeelde geheimen zonder een controletraject op identiteitsniveau.
Vereiste voorwaarden
- Een Azure-account met een actief abonnement. Gratis een account maken
- Azure CLI versie 2.40.0 of hoger.
- Een bestaande Azure Functions-app in Container Apps of machtigingen om er een te maken.
Toegangssleuteltypen
De Functions-runtime beheert vier typen sleutels:
| Sleuteltype | Bereik | Purpose |
|---|---|---|
Hoofdsleutel (_master) |
Volledige functie-applicatie | Toegang op beheerdersniveau tot alle functies en /admin/* beheereindpunten. Kan niet worden ingetrokken, alleen gedraaid. |
Hostsleutels (default + gebruikersspecifiek) |
Volledige functie-applicatie | Autoriseren van aanroepen naar een door HTTP geactiveerde functie in de app. |
Functietoetsen (default + aangepast) |
Eén functie | Autoriseer aanroepen naar één specifieke functie. Biedt meer gedetailleerde controle dan hostsleutels. |
| Systeemsleutels | Extensie-eindpunten | Wordt gebruikt door platformextensies zoals Event Grid-webhookabonnementen en Durable Functions. Automatisch beheerd. |
Een back-end voor opslag kiezen
Stel de AzureWebJobsSecretStorageType omgevingsvariabele in om te bepalen waar de runtime toegangssleutels bewaart. Azure Container Apps ondersteunt drie back-ends op productieniveau.
| Back-end | Waarde instellen | Genereert automatisch sleutels | Externe afhankelijkheid | Ideaal voor |
|---|---|---|---|---|
| Container Apps Secret Store | containerapps |
Nee - u richt sleutels in als Container Apps-geheimen | Geen | De meeste workloads (aanbevolen) |
| Azure Key Vault | keyvault |
Nee - maak trigger handmatig aan | Key Vault instantie | Gecentraliseerd beheer, nalevingscontrole |
| Azure Blob-opslagruimte | blob |
Ja | Opslagaccount | Verouderde apps of bestaand AzureWebJobsStorage account |
Houd deze backend-overwegingen in gedachten:
- De runtime selecteert niet automatisch Container Apps geheime opslag. Als je deze niet instelt
AzureWebJobsSecretStorageTypeof instelt op een niet-herkende waarde, gebruikt de Functions-host Blob Storage wanneerAzureWebJobsStoragedie beschikbaar is. - Blijf
AzureWebJobsStoragegeconfigureerd voor opslaggezondheidscontroles en opslagafhankelijke functies. - Stel
AzureWebJobsSecretStorageTypeniet in opfiles. Het bestandssysteem van Container Apps is vluchtig, dus sleutels die bij deze backend zijn opgeslagen, gaan verloren wanneer de app schaalt naar nul, opnieuw start of een nieuwe versie uitrolt.
Geheime naampatronen
De naamconventie voor opgeslagen sleutels is afhankelijk van de back-end van de opslag.
De geheime opslagplaats van Container Apps volgt een andere conventie. De Functions host leest sleutels uit volume-gekoppelde bestanden op /run/secrets/functions-keys/. Elk bestand maakt gebruik van een gestippelde naam (bijvoorbeeld host.master), maar geheime namen van Container Apps staan alleen alfanumerieke tekens en streepjes in kleine letters toe. Wanneer u een geheim volume koppelt, moet u het path veld expliciet instellen op de gestippelde bestandsnaam die de Functions-host verwacht (bijvoorbeeld secretRef: host-master → path: host.master). Het platform voert geen automatische naamomzetting uit.
| Sleuteltype | Geheime naam van Container Apps (streepjes) | Volumekoppeling path (puntjes) |
|---|---|---|
| Hoofdsleutel | host-master |
host.master |
| Standaardhostsleutel | host-function-default |
host.function.default |
| Aangepaste hostsleutel | host-function-<name> |
host.function.<name> |
| Standaardfunctietoets voor een specifieke functie | functions-<functionname>-default |
functions.<functionName>.default |
| Aangepaste functiesleutel voor een specifieke functie | functions-<functionname>-<keyname> |
functions.<functionName>.<keyName> |
| Systeemsleutel | host-systemkey-<extension> |
host.systemKey.<extension> |
Tip
Bij het oplossen van problemen zoekt u naar deze patronen in uw back-endarchief om te controleren of sleutels correct zijn geconfigureerd.
De Container Apps Secret Store configureren
De geheime opslag van Container Apps is de aanbevolen back-end. Sleutels blijven binnen het Container Apps-platform en vereisen geen externe opslag of Key Vault. Azure Resource Manager activiteitenlogboeken bijhouden wijzigingen in geheimen en omgevingsvariabelen.
Met deze back-end leest de Functions-host sleutels uit bestanden die volume-gemonteerd zijn op /run/secrets/functions-keys/. De host genereert geen sleutels automatisch. U moet elke sleutel maken als een Container Apps-geheim en het platform koppelt deze als bestanden voor de host om te lezen.
Important
De geheime opslag van Container Apps is alleen-lezen vanuit het perspectief van de host. De host leest de gekoppelde sleutelbestanden, maar schrijft er nooit naar. Als een vereiste sleutel ontbreekt, genereert de host deze niet automatisch.
Stap 1: Het opslagtype instellen
Ga naar uw Functions-container-app in de Azure-portal.
Selecteer onder Instellingenomgevingsvariabelen.
Selecteer Toevoegen en voer de volgende waarden in:
Vastgoed Waarde Naam AzureWebJobsSecretStorageTypeWaarde containerappsSelecteer Opslaan en selecteer Vervolgens Toepassen om de wijzigingen te bevestigen.
Stap 2: Toegangssleutelgeheimen genereren en opslaan
Genereer sleutelwaarden en sla deze op als Container Apps-geheimen. U hebt minimaal de hoofdsleutel en een standaardhostsleutel nodig.
Selecteer Geheimen in uw Functions-container-app onder Instellingen.
Selecteer Toevoegen en voer de volgende waarden in:
Vastgoed Waarde Naam host-masterType Container Apps Secret Waarde Een willekeurig gegenereerde sleutelwaarde. Selecteer Toevoegen.
Herhaal voor
host-function-defaultmet een andere willekeurig gegenereerde waarde.Als u een sleutel per functie wilt toevoegen, voegt u een geheim toe met de naam
functions-<functionname>-default(alle kleine letters).
Note
Geheime namen van Container Apps staan alleen alfanumerieke tekens en streepjes in kleine letters toe. U moet het path veld in de volumeconfiguratie expliciet instellen op de gestippelde bestandsnaam die de Functions-host verwacht (bijvoorbeeld secretRef: host-master → path: host.master). Zonder een expliciete pathnaam behoudt het bestand op de schijf de onderbroken naam en wordt de sleutel niet gevonden door de Functions-host.
Stap 3: De volumekoppeling configureren
Koppel de geheimen als bestanden bij /run/secrets/functions-keys/.
Selecteer in uw Functions-container-app, onder Toepassing, Revisies en replica's.
Selecteer Nieuwe revisie maken.
Selecteer Toevoegen op het tabblad Schaal en volumes onder Volumes.
Voer de volgende waarden in:
Vastgoed Waarde Volumetype Geheim Naam functions-keysStel voor elk geheim het veld Pad in op de gestippelde bestandsnaam die de Functions-host verwacht (bijvoorbeeld ingesteld
host-masterop padhost.masterenhost-function-defaultpadhost.function.default).Selecteer Toevoegen.
Selecteer uw container op het tabblad Container en selecteer vervolgens Bewerken.
Selecteer het tabblad Volumekoppelingen en selecteer Toevoegen.
Voer de volgende waarden in:
Vastgoed Waarde Volumenaam functions-keysKoppelingspad /run/secrets/functions-keysSelecteer Opslaan en selecteer Vervolgens Maken om de nieuwe revisie te implementeren.
Stap 4: Verifiëren
Nadat de app opnieuw is opgestart, controleert u of de sleutels werken:
az containerapp function keys list \
--resource-group "<RESOURCE_GROUP>" \
--name "<FUNCTIONS_APP_NAME>" \
--key-type hostKey
U kunt ook de app-logboeken voor het bericht Resolved secret storage provider ContainerAppsSecretsRepositorycontroleren, waarmee wordt bevestigd dat de host gebruikmaakt van de Container Apps Secret Store.
Sleutels roteren
Om een sleutel te roteren, werk de Container Apps secret bij en start de app opnieuw op.
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
Alle replica's delen dezelfde gekoppelde geheime gegevens. Nadat de replica opnieuw is opgestart, worden de bijgewerkte sleutelwaarden opgehaald.
Configureer Key Vault of Blob Storage als opslag
De Key Vault back-end slaat toegangssleutels op als Key Vault geheimen en biedt controle op bedrijfsniveau en toegangsbeheer.
Maak een Key Vault (als u er nog geen hebt):
az keyvault create \ --name "<KEYVAULT_NAME>" \ --resource-group "<RESOURCE_GROUP>" \ --location "<LOCATION>"Beheerde identiteit inschakelen in uw container-app (als deze nog niet is ingeschakeld):
az containerapp identity assign \ --resource-group "<RESOURCE_GROUP>" \ --name "<FUNCTIONS_APP_NAME>" \ --system-assignedGeef de rol Key Vault Secrets Officer aan de gemanagede identiteit. De runtime heeft lees- en schrijftoegang nodig om sleutels te maken en te beheren:
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"Stel het opslagtype en Key Vault URI in:
Voor door het systeem toegewezen identiteit:
az containerapp update \ --resource-group "<RESOURCE_GROUP>" \ --name "<FUNCTIONS_APP_NAME>" \ --set-env-vars \ "AzureWebJobsSecretStorageType=keyvault" \ "AzureWebJobsSecretStorageKeyVaultUri=https://<KEYVAULT_NAME>.vault.azure.net"Stel voor door de gebruiker toegewezen identiteit ook de client-id in:
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>"Het maken van een triggersleutel door sleutels weer te geven:
az containerapp function keys list \ --resource-group "<RESOURCE_GROUP>" \ --name "<FUNCTIONS_APP_NAME>" \ --key-type hostKey
Toegangssleutels beheren
Gebruik, ongeacht de back-end, de volgende opdrachten om toegangssleutels weer te geven, te maken en te verwijderen:
Note
Houd minstens één replica draaien om deze sleutelbeheeroperaties uit te voeren.
Lijst van alle hostsleutels:
az containerapp function keys list \ --resource-group "<RESOURCE_GROUP>" \ --name "<FUNCTIONS_APP_NAME>" \ --key-type hostKeyVermeld de hoofdsleutel:
az containerapp function keys list \ --resource-group "<RESOURCE_GROUP>" \ --name "<FUNCTIONS_APP_NAME>" \ --key-type masterKeyMaak een aangepaste hostsleutel aan of overschrijf je:
az containerapp function keys set \ --resource-group "<RESOURCE_GROUP>" \ --name "<FUNCTIONS_APP_NAME>" \ --key-name "MyCustomKey" \ --key-value "<YOUR_KEY_VALUE>" \ --key-type hostKeyToon een specifieke toonsoort:
az containerapp function keys show \ --resource-group "<RESOURCE_GROUP>" \ --name "<FUNCTIONS_APP_NAME>" \ --key-name "<KEY_NAME>" \ --key-type hostKeyVerwijder een hostsleutel:
az containerapp function keys delete \ --resource-group "<RESOURCE_GROUP>" \ --name "<FUNCTIONS_APP_NAME>" \ --key-name "MyCustomKey" \ --key-type hostKey
Een functie aanroepen met een toegangssleutel
Geef de sleutel door als een query-parameter of verzoekheader.
# 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>"