azure-containerapps-contributor

derived azure emits CanAdminister

match (effective permission)

{ "action": "Microsoft.App/containerApps/*", "scope_type": "resource|resourceGroup|subscription" }

where

principal effectively holds the Microsoft.App/containerApps/* wildcard (Container Apps Contributor / Contributor / Owner) at the scope; a custom role granting only containerApps/write (without delete/listSecrets/action/revisions/*) does NOT satisfy this and must NOT emit CanAdminister -- that narrow case is covered by azure-containerapps-write-image (CanModifyCode) and azure-containerapps-write-config (CanModifyConfiguration)

emit

source typeIdentity
target type*
source<principal>
target<containerApp in scope>
permissionsMicrosoft.App/containerApps/*

Narrative

{principal.name} has full control of Container App {target.name} (Microsoft.App/containerApps/*).

Raw rule rules/derived/azure/containerapps.yaml

id: azure-containerapps-contributor
emits: CanAdminister
match_effective_permission:
  action: Microsoft.App/containerApps/*
  scope_type: resource|resourceGroup|subscription
where:
- principal effectively holds the Microsoft.App/containerApps/* wildcard (Container Apps Contributor /
  Contributor / Owner) at the scope; a custom role granting only containerApps/write (without delete/listSecrets/action/revisions/*)
  does NOT satisfy this and must NOT emit CanAdminister -- that narrow case is covered by azure-containerapps-write-image
  (CanModifyCode) and azure-containerapps-write-config (CanModifyConfiguration)
emit:
  source_type: Identity
  target_type: '*'
  source: <principal>
  target: <containerApp in scope>
  permissions:
  - Microsoft.App/containerApps/*
  false_positive_note: Container Apps Contributor (containerApps/*) grants full CONTROL-PLANE management
    but has EMPTY DataActions; it does NOT include exec/action, debug/action, or logstream/action. It
    is still sufficient for code execution via image/command replacement (see azure-containerapps-write-image).
  narrative: '{principal.name} has full control of Container App {target.name} (Microsoft.App/containerApps/*).'
move · open · esc close