Pod Security 🔒

Pod security controls what a pod can and cannot do at the kernel level.

PodSecurityStandards (PSS)

Three built-in policies (replacing the deprecated PodSecurityPolicies):

PolicyDescription
privilegedUnrestricted — for system-level workloads
baselineMinimal restrictions — default for most
restrictedHardened — follow security best practices

Enforce PSS at Namespace Level

apiVersion: v1
kind: Namespace
metadata:
  name: production
  labels:
    pod-security.kubernetes.io/enforce: restricted
    pod-security.kubernetes.io/enforce-version: latest
    pod-security.kubernetes.io/warn: restricted
    pod-security.kubernetes.io/warn-version: latest

Security Context

Configure at pod or container level:

apiVersion: v1
kind: Pod
metadata:
  name: my-app
spec:
  securityContext:
    runAsNonRoot: true
    runAsUser: 1000
    fsGroup: 1000
    seccompProfile:
      type: RuntimeDefault
  containers:
  - name: app
    image: my-app:latest
    securityContext:
      allowPrivilegeEscalation: false
      readOnlyRootFilesystem: true
      runAsUser: 1000
      capabilities:
        drop:
        - ALL

Key Settings

SettingSecure ValueWhy
runAsNonRoottrueContainers don’t run as root
allowPrivilegeEscalationfalseCan’t gain more privileges
readOnlyRootFilesystemtrueNo writable filesystem
capabilities.dropALLDrop all Linux capabilities
seccompProfile.typeRuntimeDefaultUse default seccomp profile

RunAsUser / FSGroup

securityContext:
  runAsUser: 10001
  runAsGroup: 10001
  fsGroup: 10001