More Info:
An authorization mode of AlwaysAllow permits every authenticated request without further checks. Using Webhook authorization ensures requests to the kubelet are properly authorized.Risk Level
CriticalAddress
SecurityCompliance Standards
- CIS Kubernetes
Triage and Remediation
- Remediation
Remediation
Manual Steps
Manual Steps
-
On every control plane node, back up the API server static pod manifest and open it for editing:
-
In the
kube-apiservercontainercommand/argssection, locate any existing--authorization-mode=flag:- If present and set to
AlwaysAllow, change it to a secure mode, for example: - If multiple modes are configured, ensure
AlwaysAllowis not among them, for example: - If the flag is missing, add a new line under the other
--flags:
- If present and set to
-
Save the file and exit the editor. The kubelet will automatically detect the change to
/etc/kubernetes/manifests/kube-apiserver.yamland restart thekube-apiserverstatic pod. Be aware this temporarily restarts the API server on that control plane node. -
Wait for the
kube-apiserverpod to become Ready again (from any machine withkubectlaccess): - Repeat steps 1–4 on every control plane node to ensure consistent authorization configuration across the cluster.
-
Verify on each control plane node that the API server is no longer running with
--authorization-mode=AlwaysAllow:Confirm that thekube-apiserverprocess line includes--authorization-mode=and thatAlwaysAllowdoes not appear in its value (e.g., it showsRBACorNode,RBACinstead).
Using kubectl
Using kubectl
kubectl cannot modify kube-apiserver startup flags or static pod manifests on the nodes, so this finding cannot be fixed through the Kubernetes API. To remediate it, edit
/etc/kubernetes/manifests/kube-apiserver.yaml directly on every control plane node as described in the Manual Steps section.Automation
Automation

