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

Across the wiki