Safeguard
Security Guides•

Which Kubernetes admission plugins are on by default, and which are not?

Know which built in admission plugins Kubernetes enables by default, which stay off such as ImagePolicyWebhook, and how to check your own API server.

Safeguard Security Team
4 min read

Kubernetes enables a default set of admission plugins, including PodSecurity, ResourceQuota, LimitRanger, ServiceAccount and the policy and webhook plugins. Some security relevant ones, such as AlwaysPullImages, DenyServiceExternalIPs and ImagePolicyWebhook, are not on by default. Check your own API server rather than assuming.

Why the defaults matter

Admission plugins are compiled into the kube-apiserver binary and, as the documentation says, may only be configured by the cluster administrator. If you run a managed service, the provider sets many of these for you, and it may not expose every flag. If you run your own control plane, you own the list.

The default list

The Kubernetes documentation for the version it was written against lists these as enabled by default: CertificateApproval, CertificateSigning, CertificateSubjectRestriction, DefaultIngressClass, DefaultStorageClass, DefaultTolerationSeconds, LimitRanger, MutatingAdmissionPolicy, MutatingAdmissionWebhook, NamespaceLifecycle, PersistentVolumeClaimResize, PodSecurity, Priority, ResourceQuota, RuntimeClass, ServiceAccount, StorageObjectInUseProtection, TaintNodesByCondition, ValidatingAdmissionPolicy and ValidatingAdmissionWebhook.

Lists change between releases, so read the documentation page that matches your version.

The ones that matter most for deploy security

PluginWhat it doesOn by default?
PodSecurityChecks new pods against Pod Security Standards set by namespace labelsYes
ValidatingAdmissionPolicyRuns CEL rules inside the API serverYes
ValidatingAdmissionWebhookCalls your external validatorsYes
ResourceQuota and LimitRangerCap and default resources per namespaceYes
AlwaysPullImagesForces image pull policy Always on every new podNo
DenyServiceExternalIPsRejects new use of the Service externalIPs fieldNo
ImagePolicyWebhookLets an external backend decide on imagesNo, disabled by default

PodSecurity is worth a note: the documentation says it checks pods and is stable since Kubernetes v1.25. It only does something once namespaces carry its labels, so enabled does not mean enforcing.

ImagePolicyWebhook and fail open

The documentation shows ImagePolicyWebhook's configuration, including a defaultAllow field that determines behavior if the backend fails. Set to true, a backend outage lets images through. That is a deliberate availability tradeoff, and it should be a decision, not an accident. If you enable the plugin, write down which way it fails and why.

How to check your own cluster

  1. On a self managed control plane, look at the kube-apiserver flags for enable-admission-plugins and disable-admission-plugins. The documentation shows that help output can list which plugins are enabled.
  2. On a managed service, read the provider's documentation for supported admission features, and test behavior with a dry run instead of assuming.
  3. List your validating and mutating webhook configurations and policies, and note which ones fail open.
  4. Record the result in your cluster baseline, and review it at each upgrade.

Turn it into a baseline

Make a one page table per cluster: plugins enabled, policies bound, namespaces with PodSecurity labels, webhooks and their failure behavior. Review changes to it like any other change. When someone asks how a cluster blocks risky deploys, you can answer from the table.

Where Safeguard fits

Safeguard's asset discovery and compliance and evidence automation help you keep an inventory and a record of the controls you run. The plugin list itself comes from your cluster.

Quick check

Is PodSecurity enforcing if it is enabled?

Not by itself. Namespaces need the Pod Security labels that set the level and mode.

Is ImagePolicyWebhook on by default?

No. The documentation says it is disabled by default, and its defaultAllow setting decides what happens if the backend fails.

Sources

Last reviewed: 19 October 2026.

Never miss an update

Weekly insights on software supply chain security, delivered to your inbox.

Self-healing security runs on Safeguard.

Your first fix PR is minutes away.

No sales call required, even your agent can complete the purchase over MCP.