Skip to main content

More Info:

Non-default bindings to the group system:authenticated grant permissions to every authenticated user in the cluster. They should be removed or replaced with narrowly scoped, user-defined groups.

Risk Level

Critical

Address

Security

Compliance Standards

  • CIS GKE

Triage and Remediation

Remediation

Manual Steps

  1. List all non-default bindings to system:authenticated (any machine with kubectl access):
  2. For each FOUND_AUTH:ClusterRoleBinding:... entry, inspect the binding and the referenced role to understand impact (any machine with kubectl access):
  3. For each FOUND_AUTH:RoleBinding:... entry, inspect the binding and the referenced role (any machine with kubectl access):
  4. Decide safer replacements before deletion (any machine with kubectl access):
    • Identify or create user-defined groups in your IdP (e.g., devs, ops-team) and map them to Kubernetes groups via your authentication setup (GKE RBAC, OIDC, etc.).
    • Create least-privilege Role/ClusterRole objects and bind them to those user-defined groups instead of system:authenticated. Example pattern:
    • Validate with application/cluster owners that these new bindings cover all legitimate access needs before you remove the unsafe ones.
  5. Remove each non-default binding to system:authenticated once a safer alternative exists and operational impact is accepted (any machine with kubectl access):
  6. Verification (any machine with kubectl access):
On any machine with kubectl access:
  1. List all non-default bindings to system:authenticated (from the audit)
Review each listed binding and decide whether it is truly required. For any binding that is not strictly necessary, delete it.
  1. Delete unsafe ClusterRoleBindings to system:authenticated
Replace CLUSTER_ROLE_BINDING_NAME with each offending ClusterRoleBinding name you chose to remove:
  1. Delete unsafe RoleBindings to system:authenticated
Replace ROLE_BINDING_NAMESPACE and ROLE_BINDING_NAME with the namespace and name of each offending RoleBinding you chose to remove:
  1. (Optional) Replace with safer, user-defined group bindings
Create or edit bindings so they refer to a narrower, non-default group you manage (example):
Apply:
  1. Verification (run on any machine with kubectl)
Usage (run on any machine with kubectl access and jq):