Check ID:
Provider: Kubernetes
Service:
Severity: CRITICAL
Categories:
Resource type:
apiserver_no_always_admit_pluginProvider: Kubernetes
Service:
apiserverSeverity: CRITICAL
Categories:
cluster-securityResource type:
PodWhat this check verifies
Kubernetes API server configuration is inspected for theAlwaysAdmit admission plugin in --enable-admission-plugins.
If AlwaysAdmit is configured, the server accepts all admission requests without running other admission controllers.
Risk
With AlwaysAdmit, admission policies don’t run after authN/Z, weakening CIA:- Bypass of controls enables privileged or unsafe workloads (confidentiality, integrity)
- Quotas/limits can be ignored, causing resource exhaustion (availability)
- Misconfigurations persist, enabling escalation and lateral movement
Recommendation
ExcludeAlwaysAdmit from API server settings. Use a deny-by-default admission posture and enable only necessary controllers to enforce policy and limits (e.g., PodSecurity, ResourceQuota, LimitRanger).
Apply least privilege, regularly review admission configuration, and audit API activity to detect drift.
Remediation
Dashboard steps- SSH to a control plane node
- Edit the static pod manifest: sudo vi /etc/kubernetes/manifests/kube-apiserver.yaml
- In spec.containers[].command, locate the flag —enable-admission-plugins=…
- Remove “AlwaysAdmit” from the comma-separated list (if it is the only value, remove the entire flag)
- Save the file; the kubelet will restart the API server automatically
- Verify it’s gone: kubectl -n kube-system describe pod <example_apiserver_pod> | grep — —enable-admission-plugins (ensure AlwaysAdmit is not present)
References
Where this check fires
This check runs on every scheduled scan against your Kubernetes account. Findings appear at Cloud Security → Findings filterable byCheck ID = apiserver_no_always_admit_plugin. To re-evaluate after a fix, hit Run now on the account’s schedule under Cloud Security → Schedules — the next scan re-checks this control and marks the finding fixed or keeps it persistent.
← Back to Kubernetes checks