Skip to main content

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

Critical

Address

Security

Compliance Standards

  • CIS OKE

Triage and Remediation

Remediation

Manual Steps

  1. On every worker node, inspect the current kubelet process to confirm it is using AlwaysAllow:
    Look for --authorization-mode=AlwaysAllow or a missing --authorization-mode flag (which may default insecurely depending on your setup).
  2. On every worker node, edit the kubelet systemd drop-in to set webhook authorization:
    In the ExecStart= line, ensure --authorization-mode=Webhook is present and no AlwaysAllow value remains. For example:
    Save and exit.
  3. If your kubelet also uses a config file (/etc/kubernetes/kubelet-config.json), update its authorization block to avoid AlwaysAllow (if present):
    Ensure it is set similar to:
    Save and exit.
  4. On every worker node, reload systemd and restart kubelet for the changes to take effect:
  5. On every worker node, confirm kubelet started cleanly:
  6. Verify the remediation on every worker node by confirming AlwaysAllow is not present and Webhook is used:
    Ensure the output shows --authorization-mode=Webhook and does not show --authorization-mode=AlwaysAllow.
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.