Kubernetes Pod Security Admission, often called PSA, is a built-in Kubernetes admission controller that checks Pod specifications against Kubernetes Pod Security Standards before the API server accepts them. It helps teams block or flag risky Pod settings, such as privileged containers, host namespace access, or running as root.
Pod Security Admission applies security rules at the namespace level. When someone creates or updates a Pod, Kubernetes evaluates the Pod spec against a selected Pod Security Standard.
PSA can:
This makes PSA useful for platform teams that want baseline security controls without installing a third-party admission controller.
PSA uses labels on Kubernetes namespaces. These labels tell Kubernetes which Pod Security Standard to apply and what action to take.
The three built-in Pod Security Standards are:
Example namespace labels:
apiVersion: v1
kind: Namespace
metadata:
name: payments
labels:
pod-security.kubernetes.io/enforce: restricted
pod-security.kubernetes.io/audit: restricted
pod-security.kubernetes.io/warn: restricted
With this configuration, Kubernetes rejects Pods in the payments namespace if they violate the restricted standard.
warn and audit before using enforce.PSA uses these namespace labels:
pod-security.kubernetes.io/enforce: Rejects Pods that violate the selected standard.pod-security.kubernetes.io/audit: Records policy violations in audit logs.pod-security.kubernetes.io/warn: Shows warnings to users or CI/CD systems.You can also pin a policy to a Kubernetes version:
pod-security.kubernetes.io/enforce-version: v1.30
Version pinning helps avoid unexpected behavior when upgrading Kubernetes. If you run production clusters, review PSA behavior as part of your upgrade plan. This fits well with practical Kubernetes upgrade planning, such as the process covered in Kubernetes upgrade tips for startups.
warn and audit before enforcing policies.If you need custom rules, such as requiring specific image registries, blocking unsafe annotations, or enforcing organization-specific labels, you may need tools like Kyverno, OPA Gatekeeper, or ValidatingAdmissionPolicy.
A platform team runs a shared Kubernetes cluster for several product teams. They label all application namespaces with baseline in enforce mode and restricted in warn mode.
This setup blocks clearly risky Pods, such as containers using privileged: true, while giving teams time to fix workloads that are not yet compatible with the stricter restricted standard.
After teams update their deployment manifests, the platform team changes production namespaces to enforce restricted.
Pod Security Admission replaced the older PodSecurityPolicy approach for built-in Kubernetes Pod security controls.
In practice, PSA is a good default for baseline Pod hardening. For custom policy requirements, pair it with a dedicated admission policy tool.