Pod Security Standards definují tři úrovně zabezpečení: Privileged (bez omezení), Baseline (minimum) a Restricted (nejpřísnější). Nahrazují dříve používaný PodSecurityPolicy, který byl odstraněn v Kubernetes 1.25. PSS jsou vestavěné přímo do Kubernetes jako Pod Security Admission controller — žádné externí nástroje nejsou potřeba. Správné nastavení výrazně omezuje dopad kompromitace kontejneru.
Úrovně¶
- Privileged: Žádná omezení — kontejner může dělat cokoliv, včetně přístupu k host namespace a zařízením. Pouze pro systémové komponenty a infrastrukturní workloady (CNI pluginy, CSI drivery).
- Baseline: Blokuje known privilege escalation vectors — zakázaný hostNetwork, hostPID, privileged mode a dangerous capabilities. Minimální standard pro všechny workloady.
- Restricted: Hardened best practices pro produkci — vynucuje non-root user, read-only root filesystem, drop ALL capabilities, seccomp profily. Kontejner běží s minimálními oprávněními.
Enforcement¶
# Namespace label
apiVersion: v1
kind: Namespace
metadata:
name: production
labels:
pod-security.kubernetes.io/enforce: restricted
pod-security.kubernetes.io/warn: restricted
pod-security.kubernetes.io/audit: restricted
Tři režimy lze kombinovat: enforce odmítne nevyhovující pody, warn zobrazí varování při kubectl deploy a audit zapíše do audit logu. Doporučený postup: začněte s warn+audit na restricted úrovni, opravte nevyhovující workloady a teprve pak zapněte enforce. Tím se vyhnete nečekaným výpadkům při nasazení.
Migrace z PodSecurityPolicy¶
Pokud migrujete z PSP, audit mode vám ukáže, které workloady by nesplnily restricted standard. Typické problémy: kontejnery běžící jako root, chybějící seccomp profil, zbytečné capabilities. Opravte Dockerfile (USER nonroot) a Kubernetes manifesty (securityContext) před zapnutím enforcement.
Klíčový takeaway¶
Restricted pro produkci, Baseline jako absolutní minimum pro jakýkoliv workload. Enforce na namespace úrovni. Každý nový namespace by měl mít PSS labels od začátku.