azure-sf-cluster-contributor
match (effective permission)
{
"action": "Microsoft.ServiceFabric/managedclusters/write",
"scope_type": "resource|resourceGroup|subscription"
}
where
principal effectively holds Service Fabric Cluster Contributor / Contributor / Owner (or custom role granting Microsoft.ServiceFabric/managedclusters/* or .../clusters/*) at the scope
emit
| source type | Identity |
|---|---|
| target type | * |
| source | <principal> |
| target | <serviceFabric cluster in scope> |
| permissions | Microsoft.ServiceFabric/managedclusters/write Microsoft.ServiceFabric/clusters/write |
Narrative
{principal.name} has full control of Service Fabric cluster {target.name} (Microsoft.ServiceFabric/managedclusters/*).
Raw rule rules/derived/azure/servicefabric.yaml
id: azure-sf-cluster-contributor
emits: CanAdminister
match_effective_permission:
action: Microsoft.ServiceFabric/managedclusters/write
scope_type: resource|resourceGroup|subscription
where:
- principal effectively holds Service Fabric Cluster Contributor / Contributor / Owner (or custom role
granting Microsoft.ServiceFabric/managedclusters/* or .../clusters/*) at the scope
emit:
source_type: Identity
target_type: '*'
source: <principal>
target: <serviceFabric cluster in scope>
permissions:
- Microsoft.ServiceFabric/managedclusters/write
- Microsoft.ServiceFabric/clusters/write
false_positive_note: Service Fabric Cluster Contributor grants full control of the cluster/app/nodeType
objects but NOT Microsoft.Authorization/*/write and NOT the DATA-plane FabricClient (which needs an
admin client cert/Entra admin role). It is still sufficient for code execution via applications/write.
narrative: '{principal.name} has full control of Service Fabric cluster {target.name} (Microsoft.ServiceFabric/managedclusters/*).'