More Info:
The cluster-admin ClusterRole grants superuser access over the entire cluster. Bindings to it should be restricted to the minimum set of principals that strictly require it.Risk Level
CriticalAddress
SecurityCompliance Standards
- CIS GKE
Triage and Remediation
- Remediation
Remediation
Manual Steps
Manual Steps
-
On any machine with kubectl access, list all ClusterRoleBindings that use the cluster-admin role and see their subjects:
-
For each binding identified in step 1, inspect full details (including subject kinds and namespaces):
Manually determine whether each non-system subject (Users, Groups, ServiceAccounts) truly requires cluster-wide superuser rights. Do not modify bindings whose name or subjects are system-prefixed (e.g., starting with
system:) and are required for core components. -
For each subject that does not strictly require cluster-admin, design or select a least-privileged Role/ClusterRole that covers only the permissions it needs. For example, create a custom ClusterRole on any machine with kubectl access:
-
Rebind each affected subject to the least-privileged (Cluster)Role instead of cluster-admin, using a new (Cluster)RoleBinding. Example for a ClusterRole and a user:
-
After confirming that alternative bindings are in place and tested for each subject, remove the excessive cluster-admin bindings that are no longer required:
-
Verify that no non-system principals remain bound to cluster-admin, on any machine with kubectl access:
Using kubectl
Using kubectl
On any machine with kubectl access:Apply it:Then bind it to the principal that previously had (or use
- List all ClusterRoleBindings that use
cluster-adminand review subjects
- For each non‑system binding you determine does NOT strictly require
cluster-admin, remove the binding
(Example using a placeholder name; replace with the real binding name you decided to remove.)
- (Optional) Create a least‑privilege ClusterRole and bind it instead of
cluster-admin
Example: read‑only access to pods in all namespaces.
readonly-pods-clusterrole.yaml:cluster-admin, for example a user:--group or --serviceaccount <namespace>:<sa-name> as appropriate.)- Verification (on any machine with kubectl access)
Automation
Automation

