Skip to main content

More Info:

The bind, impersonate and escalate RBAC verbs allow subjects to grant themselves or others additional privileges. Restrict them tightly.

Risk Level

High

Address

Security

Compliance Standards

  • CIS Kubernetes

Triage and Remediation

Remediation

Manual Steps

  1. 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.
  2. 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).
  3. 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.
  4. 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, and impersonate from the verbs list.
    • 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.
    • 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).
  5. 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.
  6. 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.
Problem indication: Any ClusterRole name returned here has at least one of the sensitive verbs and must be reviewed.
What to look for (problem indication):
  • verbs containing bind, impersonate, or escalate.
  • 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).

Problem indication: Sensitive-verb ClusterRoles bound to:
  • subjects with kind: ServiceAccount in broad or default namespaces,
  • kind: User or kind: Group representing general developer or CI users, not a small, trusted admin set.

Problem indication:
  • subjects that 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.

Then, as in steps 2–4, inspect:
Problem indication: impersonate on users, groups, or serviceaccounts granted to any subject that is not a strictly controlled admin/break‑glass identity.
Problem indication: Roles with multiple sensitive verbs or with these verbs in roles that are not clearly “admin‑only” are higher‑risk and should be candidates for restriction or redesign.
Run this from any machine with kubectl access.
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.