Score pods against the Pod Security Standards using privileged, hostPath, hostNetwork, runAsRoot and capability findings plus the admission mode.
The weights follow the Pod Security Standards themselves: privileged containers are outside every profile and score 10, host namespaces and hostPath are baseline breaches, and runAsRoot only breaks restricted so it scores 1 — common but not by itself an escape. The admission mode is added as a flat penalty because audit-only enforcement stops nothing. A privileged pod is a root shell on the node with extra steps, and the reason clusters have eighteen of them is that audit-mode admission produced a warning nobody read.
Pod Security Risk
Violation points = 10 × privileged + 5 × host-namespace + 4 × hostPath + 3 × added-capability + 1 × runAsRoot pods, normalised per 100 pods.
Risk scoring
Risk = 0.6 × violations per 100 pods + admission-mode penalty + 0.1 × missing read-only root filesystem share + 0.08 × missing seccomp share, clamped to 0–100.
Violation points = 10 × privileged + 5 × host-namespace + 4 × hostPath + 3 × added-capability + 1 × runAsRoot pods, normalised per 100 pods. The weights follow the Pod Security Standards themselves: privileged containers are outside every profile and score 10, host namespaces and hostPath are baseline breaches, and runAsRoot only breaks restricted so it scores 1 — common but not by itself an escape. The admission mode is added as a flat penalty because audit-only enforcement stops nothing.
A privileged pod is a root shell on the node with extra steps, and the reason clusters have eighteen of them is that audit-mode admission produced a warning nobody read.
This calculator takes 9 inputs: Pods in the cluster, Pods running privileged: true, Pods using hostNetwork, hostPID or hostIPC, Pods mounting a hostPath volume, Pods running as UID 0, Pods adding Linux capabilities, Pods with a read-only root filesystem, Pods with a seccomp profile applied, Pod Security Admission mode. The pre-filled defaults are a realistic starting point — replace them with figures from your own environment for a result you can act on.
Baseline blocks known privilege escalations: privileged mode, host namespaces, hostPath, most added capabilities. Restricted goes further and requires non-root execution, a seccomp profile, dropped capabilities and no privilege escalation. Baseline is what you enforce first; restricted is where new workloads should start.
Give them their own namespace with a documented exemption, not a cluster-wide relaxation. CNI plugins, node exporters and CSI drivers legitimately need host access; your application does not. Pod Security Admission is configured per namespace precisely so the exception stays contained.