RBAC privilege escalation

Kubernetes RBAC grants verbs on resources, and several verb-and-resource combinations let a limited identity grant itself more: over-permissive roles, the escalate and bind verbs, impersonation, certificate signing, the TokenRequest API, and the ability to create pods. Each converts a modest service account into broad or full cluster control.

1 min di letturaaggiornato il 7 ott 2026florianamette1 contributore
Chiedi al tuo assistente (MCP)Modifica su GitHub

Kubernetes authorises actions as verbs (get, list, create, update) on resources (pods, secrets, roles). RBAC is meant to prevent an identity from granting itself more than it has, but several specific permissions break that containment. Holding any one of them turns a limited service account into a path to cluster admin: a role that is too broad, the escalate or bind verbs that defeat the anti-escalation check, impersonate to become another identity, certificate signing to mint a privileged client cert, the TokenRequest API to mint other service accounts' tokens, or the ability to create pods and schedule a node-owning one.

Map the identity's permissions first:

bash
kubectl auth can-i --list                           # the full rule set for this identity
# flag the dangerous ones:
kubectl auth can-i create pods --all-namespaces
kubectl auth can-i get secrets --all-namespaces
kubectl auth can-i impersonate users
kubectl auth can-i create clusterrolebindings
kubectl auth can-i '*' '*'

Subtopics#

References#