azure-func-appsettings-read
match (effective permission)
{
"action": "Microsoft.Web/sites/config/list/Action",
"scope_type": "resource|resourceGroup|subscription"
}
emit
| source | <principal> |
|---|---|
| target | <app settings + connection strings of the function app> |
| permissions | Microsoft.Web/sites/config/list/Action |
Narrative
{principal.name} can read app settings + connection strings of {target.name} (config/list/Action), exposing embedded secrets.
Raw rule rules/derived/azure/functions.yaml
id: azure-func-appsettings-read
emits: CanReadSecret
match_effective_permission:
action: Microsoft.Web/sites/config/list/Action
scope_type: resource|resourceGroup|subscription
emit:
source: <principal>
target: <app settings + connection strings of the function app>
permissions:
- Microsoft.Web/sites/config/list/Action
note: config/list returns decrypted appsettings + connectionStrings, often holding storage keys, SQL,
Service Bus, Key Vault refs.
false_positive_note: config/appsettings/read (ARM) returns settings but may mask Key Vault references;
config/list/Action returns resolved values. Emit ContainsSecret only for settings that actually carry
credentials.
narrative: '{principal.name} can read app settings + connection strings of {target.name} (config/list/Action),
exposing embedded secrets.'