Safeguard
Security Guides•

Kubernetes Pod Security Standards: Baseline vs Restricted

Baseline blocks known privilege escalations. Restricted adds non-root, dropped capabilities and seccomp. Here is what each level checks and which to pick.

Safeguard Security Team
3 min read

Kubernetes defines three Pod Security Standards. Privileged has no restrictions, Baseline blocks known privilege escalations while staying easy to adopt, and Restricted follows current hardening practice by also requiring non-root users, dropped capabilities and a seccomp profile. Most application namespaces should aim for Restricted.

The three levels in plain terms

Privileged is the open door. The Kubernetes documentation says pods at this level can bypass container isolation, for example by using the node's host network. It is meant for system and infrastructure workloads that genuinely need node access.

Baseline is the minimum you should accept for ordinary workloads. It is designed to be easy to adopt, so many existing images pass without changes.

Restricted is stricter and may require you to rebuild images or adjust manifests.

What Baseline blocks

According to the standards page, Baseline requires that:

  • hostNetwork, hostPID and hostIPC are unset or false
  • privileged containers are not allowed
  • added Linux capabilities stay within a short list that includes CHOWN, KILL, NET_BIND_SERVICE, SETUID and SETGID
  • hostPath volumes are not used
  • the seccomp profile is not set to Unconfined
  • procMount stays at its default

The theme is simple: a pod should not share the node's namespaces, run privileged, or mount the node's filesystem.

What Restricted adds

Restricted includes everything in Baseline and tightens it. The documentation describes these additional requirements:

  • seccomp profile set to RuntimeDefault or Localhost
  • runAsNonRoot set to true
  • allowPrivilegeEscalation set to false
  • all capabilities dropped, with only NET_BIND_SERVICE allowed to be added back
  • volume types limited to a short allowlist such as configMap, secret, emptyDir, projected and persistentVolumeClaim

Because the page is long, confirm the exact list for your Kubernetes version before you write policy around it.

Which one to choose

Use Restricted for new services and for namespaces you control end to end. Use Baseline as a landing spot for older workloads that cannot yet run as non-root, with a dated plan to move them. Keep Privileged for a small, named set of system namespaces, and keep application teams out of them.

A practical path is to turn on warn and audit at Restricted first, read the output, fix the manifests, and only then enforce. See Pod Security admission: enforce, audit and warn rollout for the steps.

Safeguard policies and gates can check manifests in the pull request, so a violation shows up before the cluster rejects the pod. That is a complement to admission control, not a replacement for it.

Quick check

Is Baseline enough for production?

For many legacy workloads it is an acceptable starting point, but it does not require non-root users or dropped capabilities. Treat Restricted as the target.

Do the standards replace RBAC or network policies?

No. They constrain what a pod spec may ask for. Access to the API and traffic between pods are handled by other controls.

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.