Les functions dont le niveau d'autorisation est function ou admin sont protégées par des clés : des clés par function, des host keys partagées par l'ensemble de l'application, et la clé _master qui atteint l'API d'administration. Avec Microsoft.Web/sites/host/listkeys (ou Contributor sur l'application), ces clés sont lisibles, et la master key déverrouille les endpoints d'administration qui invoquent n'importe quelle function et lisent l'état d'exécution.
Lister les clés#
az functionapp keys list -g <rg> -n <app> # host and master keys
az functionapp function keys list -g <rg> -n <app> --function-name <fn>
# raw ARM if the CLI verb is unavailable
az rest --method post --uri \
"/subscriptions/<sub>/resourceGroups/<rg>/providers/Microsoft.Web/sites/<app>/host/default/listkeys?api-version=2022-03-01"
Invoquer avec une clé récupérée#
curl "https://<app>.azurewebsites.net/api/<fn>?code=<function-key>"
# admin endpoints with the master key
curl -H "x-functions-key: <master-key>" \
"https://<app>.azurewebsites.net/admin/functions"
Notes d'exploitation#
- La clé
_masteréquivaut à l'administration de l'application pour le runtime Functions ; traitez sa récupération comme une exécution de code sur l'application. - Les clés sont également écrites dans le compte de stockage de l'application (conteneur
azure-webjobs-secrets), de sorte qu'un accès au compte de stockage les livre sans appel ARM. - Invoquer une function qui porte elle-même une identité managée enchaîne vers l'identité managée.
Outils#
- Azure CLI (
functionapp keys list,az rest). - MicroBurst : énumère les Function apps et extrait leurs secrets.