More Info:
The bind, impersonate and escalate RBAC verbs allow subjects to grant themselves or others additional privileges. Restrict them tightly.Risk Level
HighAddress
SecurityCompliance Standards
- CIS Kubernetes
Triage and Remediation
- Remediation
Remediation
Manual Steps
Manual Steps
-
List all ClusterRoles/roles using bind, impersonate, or escalate
- On any machine with kubectl access:
- Save the outputs; these are the RBAC definitions to review.
- On any machine with kubectl access:
-
Inspect the privileges and intended use of each risky role
- For each ClusterRole name from step 1:
- For each namespaced Role (namespace:name) from step 1:
- Manually determine:
- Which subjects (users/groups/serviceaccounts) are supposed to have these capabilities, if any.
- Whether these verbs are strictly required for the role’s intended function (e.g., controller that must create/modify RBAC).
- For each ClusterRole name from step 1:
-
Identify who can use those roles via bindings
- For each risky ClusterRole:
- For each risky namespaced Role:
- Manually review whether each bound subject truly needs bind/impersonate/escalate.
- For each risky ClusterRole:
-
Decide on least‑privilege changes per role and binding
For each role/binding you reviewed, choose one of:- Remove the dangerous verbs entirely if not strictly needed: edit the role and delete
bind,escalate, andimpersonatefrom theverbslist. - Scope down subjects if the verbs are needed only for a very small set of trusted identities:
- Remove unnecessary subjects from the corresponding ClusterRoleBinding/RoleBinding.
- Remove unnecessary subjects from the corresponding ClusterRoleBinding/RoleBinding.
- Split roles: create a separate role without these verbs for most users, keeping bind/impersonate/escalate only in a dedicated, tightly bound role for specific automation or administrators (via manifest updates or
kubectl apply -f).
- Remove the dangerous verbs entirely if not strictly needed: edit the role and delete
-
Re-apply or create updated RBAC manifests (if using GitOps/IaC)
- If your cluster uses manifests as the source of truth, mirror the edits from step 4 into your RBAC YAML and re-apply:
- Ensure CI/GitOps will not reintroduce the removed verbs or bindings.
- If your cluster uses manifests as the source of truth, mirror the edits from step 4 into your RBAC YAML and re-apply:
-
Verify that risky verbs are now limited to explicitly approved roles
- Re-run the evidence commands from step 1 on any machine with kubectl:
- Manually confirm that:
- Only the minimal, explicitly justified roles still include these verbs.
- Their bindings grant access only to tightly controlled, trusted subjects.
- Re-run the evidence commands from step 1 on any machine with kubectl:
Using kubectl
Using kubectl
verbscontainingbind,impersonate, orescalate.- Combined with broad resources, for example:
resources: ["*"]apiGroups: ["*"]
- Or high‑risk targets such as:
resources: ["clusterroles","roles","clusterrolebindings","rolebindings","serviceaccounts","users","groups"]
- Use by subjects that are not tightly controlled (see next commands).
subjectswithkind: ServiceAccountin broad or default namespaces,kind: Userorkind: Grouprepresenting general developer or CI users, not a small, trusted admin set.
subjectsthat are many or loosely defined (e.g.,system:authenticated, large teams, generic service accounts).- Any non‑break‑glass / non‑cluster‑admin identity holding these permissions.
impersonate on users, groups, or serviceaccounts granted to any subject that is not a strictly controlled admin/break‑glass identity.Automation
Automation
Problematic output is any role giving
["bind","impersonate","escalate"] (alone or among other verbs) to non-essential admin identities or broad subjects, especially in shared or application namespaces.
