azure-aci-contributor
match (effective permission)
{
"action": "Microsoft.ContainerInstance/containerGroups/write",
"scope_type": "resource|resourceGroup|subscription"
}
where
principal effectively holds Azure
Container Instances Contributor (Microsoft.ContainerInstance/containerGroups/*) / Contributor / Owner at the scope
emit
| source type | Identity |
|---|---|
| target type | * |
| source | <principal> |
| target | <containerGroup in scope> |
| permissions | Microsoft.ContainerInstance/containerGroups/write |
Narrative
{principal.name} has full control of container group {target.name} (Microsoft.ContainerInstance/containerGroups/*).
Raw rule rules/derived/azure/aci.yaml
id: azure-aci-contributor
emits: CanAdminister
match_effective_permission:
action: Microsoft.ContainerInstance/containerGroups/write
scope_type: resource|resourceGroup|subscription
where:
- principal effectively holds Azure Container Instances Contributor (Microsoft.ContainerInstance/containerGroups/*)
/ Contributor / Owner at the scope
emit:
source_type: Identity
target_type: '*'
source: <principal>
target: <containerGroup in scope>
permissions:
- Microsoft.ContainerInstance/containerGroups/write
false_positive_note: containerGroups/* grants full control of the group (write/exec/start/logs) but
NOT Microsoft.Authorization/*/write, and attaching a user-assigned MI still needs the separate userAssignedIdentities/assign/action.
Still sufficient for code execution via exec or redeploy.
narrative: '{principal.name} has full control of container group {target.name} (Microsoft.ContainerInstance/containerGroups/*).'