Skip to main content

More Info:

Cluster roles and roles with the impersonate, bind or escalate permissions should not be granted unless strictly required. Each of these permissions allow a particular subject to escalate their privileges beyond those explicitly granted by cluster administrators

Risk Level

Medium

Address

Security

Compliance Standards

  • CIS Kubernetes

Triage and Remediation

Remediation

Manual Steps

  1. List all Roles/ClusterRoles that grant bind, escalate, or impersonate.
    • Run on: any machine with kubectl access
    • Command:
  2. Identify which subjects (users, groups, service accounts) are bound to those high‑risk Roles/ClusterRoles.
    • Run on: any machine with kubectl access
    • Command:
      Then correlate with the list from step 1:
  3. Review business and technical justification for each subject with these permissions.
    • For each subject identified in step 2, determine:
      • Why do they need bind, escalate, or impersonate?
      • Is it documented and approved (e.g., admin break-glass, CI/CD controller, identity broker)?
    • If no clear, minimal justification exists, mark that binding for removal or reduction (e.g., to a narrower role without these verbs).
  4. Remove or tighten unnecessary bind/escalate/impersonate permissions.
    • Run on: any machine with kubectl access
    • To remove a binding entirely (example – replace with actual names from your review):
    • To edit and drop only the risky verbs from an otherwise needed role:
      or
      Then remove bind, escalate, and impersonate from .rules[].verbs while preserving required non‑escalating verbs.
  5. If a subject genuinely needs some of these rights, scope them as narrowly as possible.
    • Prefer dedicated, minimal Roles/ClusterRoles with just the necessary resources and verbs (e.g., only impersonate specific users/groups, only bind to a specific role).
    • Create/update via manifest so the intent is explicit (example skeleton):
    • Apply:
  6. Verify that high‑risk verbs are now only where explicitly approved.
    • Run on: any machine with kubectl access
    • Re-run the discovery from step 1 and confirm the remaining Roles/ClusterRoles with bind, escalate, or impersonate match your approved list:
Problem indication:
Any ClusterRole name returned by this command includes at least one of the sensitive verbs. These roles need review to see who is bound to them and whether this is strictly required.

Problem indication:
Within each role’s .rules:
  • verbs containing bind, escalate, or impersonate against broad resources (e.g., *, clusterroles, users, groups) or resourceNames not narrowly scoped is higher risk.
    These should be justified by a concrete operational need.

Problem indication:
Any RoleBinding shown here grants a subject (user, group, or ServiceAccount) access to a ClusterRole that has bind, impersonate, or escalate. Each binding must be checked for least-privilege necessity.

Problem indication:
ClusterRoleBindings are cluster-wide. Any binding here grants powerful permissions everywhere; these are high-risk and should be tightly justified and, where possible, replaced with narrower, namespace-scoped permissions.

(If the combined jq is too complex in your environment, manually inspect each binding found in steps 3 and 4 using kubectl get <binding> -o yaml.)Problem indication:
Look for:
  • Subjects that are broad (e.g., system:authenticated, system:serviceaccounts, large groups).
  • Service accounts used by application workloads rather than dedicated infrastructure/automation components.
  • Human users or groups who do not administratively need to bind/impersonate/escalate.

Verification interpretation:
  • If this returns no ClusterRole names, no ClusterRole currently declares bind, impersonate, or escalate.
  • If it still returns entries, those roles (and their bindings) remain and must be consciously accepted or further reduced.
How to interpret the output
  • Any ClusterRole or Role listed in sections 1 or 4 uses bind, impersonate, or escalate.
  • Any binding listed in sections 2 and 3 shows who (users, groups, service accounts) receives those powerful permissions.
  • Problematic cases are subjects that do not absolutely need these capabilities (for example, broad groups like system:authenticated, CI/CD service accounts, or general application service accounts).
  • Use this report to decide, manually, where you can safely:
    • Remove the binding, or
    • Replace with a less-privileged role that omits bind, impersonate, and escalate.

Additional Reading: