☸️

CIS Kubernetes Benchmark v1.9 (Section 5: Policies)

Center for Internet Security benchmark for Kubernetes Pod Security, RBAC, and NetworkPolicy. EchelonGraph evaluates against the live cluster topology emitted by the Tier 3 K8s watcher (Pods, RBAC, NetworkPolicy CRDs).

3 critical21 high2 medium
5.1.1K8S-RBAC-001critical

Cluster-admin role usage minimised

Cluster-admin role should not be granted to non-system subjects. The Tier 3 watcher inspects every ClusterRoleBinding subject list and flags those granting cluster-admin to users / groups / service accounts outside the system:* prefix.

5.1.5K8S-SA-001high

Default ServiceAccount tokens not auto-mounted

Default ServiceAccount tokens in every namespace must not be auto-mounted. The watcher reads the ServiceAccount object metadata for AutomountServiceAccountToken and flags any default SA where it is unset (K8s default true) or explicitly true.

5.2.1K8S-PS-001critical

Privileged containers minimised

Pod containers should not run with privileged: true. The watcher inspects each Pod's containers[].securityContext.privileged at admission and resync time.

5.2.4K8S-PS-004high

hostNetwork minimised

Pods should not use hostNetwork. The watcher inspects PodSpec.HostNetwork at the typed-handler level.

5.3.2K8S-NP-001high

NetworkPolicy on every namespace

Every namespace should have at least one NetworkPolicy. EchelonGraph correlates the live K8S_NAMESPACE inventory with K8S_NETWORKPOLICY assets per namespace and flags namespaces without coverage.

5.7.3K8S-PS-007high

runAsNonRoot enforced

Containers should run as non-root. The watcher counts containers per Pod and computes runasnonroot_count from securityContext.RunAsNonRoot at the Pod and container level.

5.1.2K8S-RBAC-002high

Minimize wildcard RBAC verbs

RBAC ClusterRoles + Roles should avoid wildcard verbs (*).

5.1.3K8S-RBAC-003high

Minimize wildcard RBAC resources

RBAC rules should avoid wildcard resources (*) — be explicit about which resources are granted.

5.1.4K8S-RBAC-004high

Disable default SA token auto-mount

Default ServiceAccount in every namespace should not auto-mount its token into pods.

5.1.6K8S-RBAC-006critical

Cluster-admin restricted

ClusterRoleBindings to cluster-admin should be restricted to limited identities (cluster operators only).

5.2.2K8S-PS-002high

Restrict hostProcess

Pods should not set hostProcess: true (Windows-specific privilege escalation).

5.2.3K8S-PS-003high

Minimize hostIPC

Pods should not use hostIPC (shares Inter-Process Communication with host).

5.2.6K8S-PS-006high

allowPrivilegeEscalation false

Container securityContext.allowPrivilegeEscalation should be false.

5.2.7K8S-PS-007high

Root containers minimized

Containers should not run as root user (runAsUser != 0).

5.2.8K8S-PS-008high

NET_RAW capability dropped

Containers should drop NET_RAW capability (used for raw socket operations like ping, port scanning).

5.2.10K8S-PS-010high

Drop ALL capabilities

Containers should drop ALL Linux capabilities and re-add only what's needed.

5.3.1K8S-NET-001high

CNI supports NetworkPolicy

K8s CNI plugin must support NetworkPolicy (Calico, Cilium, Weave Net, AWS VPC CNI 1.14+, GKE Dataplane V2).

5.4.1K8S-SEC-001medium

Secrets via volume not env

Mount Secrets as volumes rather than environment variables.

5.4.2K8S-SEC-002high

External secret stores

Use external secret stores (Vault, AWS Secrets Manager, GCP Secret Manager) for sensitive secrets — not etcd.

5.5.1K8S-IMG-001high

Image policy webhook

Configure ImagePolicyWebhook admission controller (or equivalent — Kyverno, OPA Gatekeeper) for image signing verification.

5.7.1K8S-NS-001medium

Workloads not in default namespace

Applications should not run in the 'default' namespace.

5.7.2K8S-PS-011high

seccompProfile RuntimeDefault

Containers should use seccompProfile of RuntimeDefault or Localhost.

5.7.4K8S-ADM-001high

Admission controllers enabled

Key admission controllers enabled: PodSecurity, NodeRestriction, RBAC, ResourceQuota.

5.1.5K8S-RBAC-005high

Default SA tokens not auto-mounted

Default ServiceAccount tokens are NOT auto-mounted in pods.

5.1.8K8S-RBAC-008high

Limit pod-create verb

Permission to create pods should be limited to deployment controllers, not user accounts.

5.2.9K8S-PS-009high

Capabilities restricted

Containers should not add Linux capabilities beyond the default set.