More Info:
The kubelet —authorization-mode argument must not be set to AlwaysAllow. AlwaysAllow authorizes every request to the kubelet, bypassing access controls on the node.Risk Level
CriticalAddress
SecurityCompliance Standards
- CIS OKE
Triage and Remediation
- Remediation
Remediation
Manual Steps
Manual Steps
-
On every worker node, inspect the current kubelet process to confirm it is using
AlwaysAllow:Look for--authorization-mode=AlwaysAllowor a missing--authorization-modeflag (which may default insecurely depending on your setup). -
On every worker node, edit the kubelet systemd drop-in to set webhook authorization:
In the
ExecStart=line, ensure--authorization-mode=Webhookis present and noAlwaysAllowvalue remains. For example:Save and exit. -
If your kubelet also uses a config file (
/etc/kubernetes/kubelet-config.json), update itsauthorizationblock to avoidAlwaysAllow(if present):Ensure it is set similar to:Save and exit. -
On every worker node, reload systemd and restart kubelet for the changes to take effect:
-
On every worker node, confirm kubelet started cleanly:
-
Verify the remediation on every worker node by confirming
AlwaysAllowis not present andWebhookis used:Ensure the output shows--authorization-mode=Webhookand does not show--authorization-mode=AlwaysAllow.
Using kubectl
Using kubectl
kubectl cannot modify kubelet process flags or host-level config files such as
/etc/kubernetes/kubelet-config.json or /etc/systemd/system/kubelet.service.d/00-default.conf; those must be changed directly on every worker node. Refer to the Manual Steps section for the exact on-node configuration and restart procedure to set --authorization-mode=Webhook and remove AlwaysAllow.Automation
Automation

