azure-appsvc-contributor
match (effective permission)
{
"action": "Microsoft.Web/sites/write",
"scope_type": "resource|resourceGroup|subscription"
}
where
principal effectively holds Website Contributor / Contributor / Owner (or a custom role granting Microsoft.Web/sites/*) at the scope
emit
| source type | Identity |
|---|---|
| target type | * |
| source | <principal> |
| target | <Microsoft.Web/sites in scope> |
| permissions | Microsoft.Web/sites/write |
Narrative
{principal.name} has full control of App Service {target.name} (Microsoft.Web/sites/*).
Raw rule rules/derived/azure/appservice.yaml
id: azure-appsvc-contributor
emits: CanAdminister
match_effective_permission:
action: Microsoft.Web/sites/write
scope_type: resource|resourceGroup|subscription
where:
- principal effectively holds Website Contributor / Contributor / Owner (or a custom role granting Microsoft.Web/sites/*)
at the scope
emit:
source_type: Identity
target_type: '*'
source: <principal>
target: <Microsoft.Web/sites in scope>
permissions:
- Microsoft.Web/sites/write
false_positive_note: Website Contributor grants sites/* (deploy/config/publish) but NOT Microsoft.Authorization/*/write
and NOT sites/config/list/action; it is still sufficient for code execution via publish/config/extensions.
narrative: '{principal.name} has full control of App Service {target.name} (Microsoft.Web/sites/*).'