Check provider logo

API server pod has AlwaysPullImages admission control plugin enabled

apiserver_always_pull_images_plugin

Severitymedium
Serviceapiserver
by Prowler

Kubernetes API server admission configuration includes AlwaysPullImages, which mutates new Pods to set imagePullPolicy=Always so container images are fetched from the registry at startup using the pod's credentials.

Risk

Without AlwaysPullImages, nodes can run cached images without a fresh registry pull, bypassing credential checks.

  • Unauthorized use of private images (confidentiality)
  • Stale or tampered images deployed (integrity)
  • Vulnerable images persist, widening attack surface (availability)
Run this check with Prowler CLI

prowler kubernetes --checks apiserver_always_pull_images_plugin

Recommendation

Enable AlwaysPullImages on the API server.

Apply defense in depth: restrict pulls to trusted registries, enforce least-privilege image pull secrets, sign and scan images, and prefer immutable digests to prevent drift and ensure verified content.

Remediation

Other
  1. SSH to a control-plane node
  2. Edit /etc/kubernetes/manifests/kube-apiserver.yaml
  3. In spec.containers[0].command or args, ensure the flag includes AlwaysPullImages, e.g.: --enable-admission-plugins=<existing>,AlwaysPullImages
  4. Save the file; the kubelet will automatically restart the API server with the updated flag

Source Code

Resource Type

Pod

References