Skip to main content

More Info:

Access to the Node proxy sub-resource exposes the kubelet API and can bypass audit logging and admission control. It should be limited to trusted administrators only.

Risk Level

High

Address

Security

Compliance Standards

  • CIS AKS

Triage and Remediation

Remediation

Manual Steps

  1. List all roles/clusterroles that can access the Node proxy sub-resource
    • Run on: any machine with kubectl access
    Focus on entries where resources: includes nodes/proxy or nodes and verbs: includes get, list, create, or *.
  2. Extract detailed definitions of suspicious roles/clusterroles
    • From the names found in step 1, get the full YAML for review.
    • Run on: any machine with kubectl access
    Review whether nodes/proxy (or broad nodes with * verbs) is really needed for the intended purpose of that role.
  3. Identify who is actually getting this proxy access (bindings)
    • Run on: any machine with kubectl access
    For each role/clusterrole from step 2 that has nodes/proxy access, find the corresponding roleRef in these bindings and note which users, groups, or serviceAccounts receive that access.
  4. Decide which subjects truly need Node proxy access
    • For each bound subject identified in step 3, validate with your operational/incident-response requirements:
      • Trusted cluster administrators: generally may retain this access.
      • Automation/service accounts, application accounts, and regular users: usually should not need direct kubelet API access via Node proxy.
    • Document a list of subjects and whether nodes/proxy is required, optional, or not justified.
  5. Tighten or remove excessive nodes/proxy permissions
    • Run on: any machine with kubectl access
    • Option A – Remove nodes/proxy from the role/clusterrole (preferred):
    In the editor, under rules:, remove nodes/proxy (or overly broad nodes rules) from resources: for subjects that should not have it; narrow verbs: if needed. Save and exit.
    • Option B – If a shared role is too broad, create a new, restricted role and rebind:
    Update roleRef to point to the new restricted role for non-admin subjects.
  6. Re-verify that only trusted admins retain Node proxy access
    • Run on: any machine with kubectl access
    For any remaining nodes/proxy entries, repeat the binding review:
    Confirm that all roles with nodes/proxy are bound only to explicitly approved, trusted administrator identities.
What to look for:
Each line is a ClusterRole or Role that can reach the nodes proxy sub-resource (either explicitly via proxy or implicitly via * on verbs). Any entry here must be reviewed; these are the only candidates that can expose the kubelet API through the Node proxy.

What to look for in the output:In rules::
  • Problematic resource/verb combinations (need human judgement):
  • Higher risk patterns:
    • resources: ["*"] with verbs: ["*"] or including proxy
    • resources: ["nodes"] + verbs: ["*"]
    • Any role intended for non-admins (developers, CI, apps) that has nodes with proxy or * verbs.
Roles with such rules and bound to non-admin users/groups/service accounts are likely too permissive.
What to look for:
  • Non-admin or broad subjects, for example:
    • system:authenticated or system:unauthenticated
    • Wildcard groups (e.g., system:serviceaccounts, system:serviceaccounts:<ns>)
    • Application service accounts in app namespaces
    • External user groups used by regular developers
Access to nodes proxy should normally be restricted to a small, trusted administrator group or break-glass account.
What to look for:
  • Any role where:
    • The rule snippet shows nodes/nodes/proxy with proxy or * verbs, and
    • Bindings list subjects that are not clearly trusted administrators.
Those combinations are candidates to tighten or remove based on your access policy.
Success indication:
  • The output is empty, or
  • Any remaining roles are intentionally approved for trusted administrators only, with bindings you have reviewed and accepted.
Explanation of problematic output:
  • Any listed ClusterRole or Role is granting some form of Node proxy access.
  • Especially concerning:
    • resources contains nodes/proxy or nodes/*.
    • resources contains nodes and verbs contains proxy or *.
  • For each such role, review who is bound to it (via RoleBinding/ClusterRoleBinding) and decide whether they are trusted administrators. If not, adjust or remove the permission manually.