Kubernetes Security Posture: RBAC, Pods, Network and Images
Kubernetes makes it easy to ship software quickly. It also makes it easy to ship insecure defaults quickly. A cluster can pass every functional test while running privileged pods, granting cluster-admin to a CI service account and letting every workload talk to every other one. None of that shows up in a traditional host vulnerability scan.
Kubernetes security posture is the discipline of finding and fixing those weaknesses: in the cluster configuration, in the workloads and in the images they run. This guide covers the areas that matter most, the standard to measure against, and how to prioritize what you find.
What "security posture" means in Kubernetes
Posture is the sum of your configuration decisions. In Kubernetes those decisions live in several layers:
- The control plane and nodes: API server, etcd, kubelet and the node operating system.
- Identity and access: RBAC roles, bindings and service accounts.
- Workloads: pod security settings, host access, resource limits.
- Network: which pods can talk to which, and what is exposed outside the cluster.
- Supply chain: the container images you deploy and what is inside them.
An attacker who lands in one pod will look at all of these for a way to move sideways or up. Your job is to make sure there isn't one.
RBAC over-permissioning
RBAC is the most common source of quiet, high-impact risk. Typical problems include:
- Service accounts bound to cluster-admin "to make it work".
- Roles with wildcard verbs or resources ("*").
- Permission to read secrets cluster-wide, or to create pods in privileged namespaces, which often amounts to node-level access.
- Rights to escalate, bind or impersonate, which let a subject grant itself more access.
- Default service account tokens automatically mounted into pods that never call the API.
Review bindings regularly and give each workload only what it needs. Disable automatic token mounting where it isn't used. Treat any identity that can create workloads or read secrets as highly privileged.
Privileged pods and host access
A container is only as isolated as you let it be. Settings that break isolation include:
- privileged: true, which gives the container nearly full access to the host.
- hostPath mounts, especially of the root filesystem, the container runtime socket or kubelet directories.
- hostNetwork, hostPID and hostIPC.
- Added Linux capabilities such as SYS_ADMIN, running as root and allowing privilege escalation.
Kubernetes Pod Security Standards define three profiles: privileged, baseline and restricted. Enforce at least baseline everywhere and restricted wherever workloads allow it, using Pod Security Admission or a policy engine.
Missing NetworkPolicies
By default, Kubernetes networking is allow-all: every pod can reach every other pod in every namespace. That turns one compromised workload into a foothold across the cluster.
NetworkPolicies fix this, but only if your network plugin enforces them and you actually write them. A good pattern is a default-deny policy per namespace, followed by explicit allow rules for the traffic each application needs. Don't forget egress: restricting outbound traffic limits data exfiltration and command-and-control.
Secrets handling
Kubernetes Secrets are base64-encoded, not encrypted, unless you enable encryption at rest for etcd. Common issues:
- Encryption at rest not configured, or etcd reachable without strong authentication.
- Secrets exposed as environment variables, where they leak into logs and crash dumps.
- Broad RBAC that lets many identities read secrets.
- Credentials baked into images or committed to manifests in git.
Encrypt at rest, restrict who can read secrets, prefer mounted files or an external secrets manager, and scan your repositories and images for hard-coded credentials.
Image vulnerabilities and the supply chain
Every image carries an operating system layer and application dependencies, each with its own CVEs. Scan images in the pipeline before they reach a registry, and keep scanning running images, because new vulnerabilities are published after deployment. Prefer minimal base images, pin versions and rebuild often. An SBOM for each image makes it much faster to answer "are we affected?" when the next big CVE lands.
Not every image CVE is equally urgent. Use exploitability signals and context, as described in how to prioritize vulnerabilities. A KEV-listed flaw in an Internet-facing privileged pod is a very different problem from the same flaw in an isolated batch job.
Admission control
Admission control is where you stop bad configuration from entering the cluster in the first place. Pod Security Admission covers the Pod Security Standards. Policy engines let you add your own rules, for example: block privileged pods, require resource limits, allow images only from trusted registries, require non-root users. Start in audit mode, fix what you find, then enforce.
The CIS Kubernetes Benchmark and kubelet hardening
The CIS Kubernetes Benchmark is the reference baseline for cluster configuration. It covers the control plane components, etcd, worker nodes and policies. As with the CIS Benchmarks for operating systems, it gives you a defensible, auditable standard.
On the nodes, the kubelet deserves special attention:
- Disable anonymous authentication and use webhook authorization.
- Turn off the read-only port.
- Protect kubelet configuration files and certificates.
- Keep node operating systems patched and hardened.
On managed services (EKS, AKS, GKE), the provider runs parts of the control plane. You still own node configuration, RBAC, workloads, network policies and the cloud resources around the cluster, such as public API endpoints, node IAM roles and load balancers.
How to prioritize what you find
A first posture assessment often produces a long list. Focus on combinations that create real paths:
- Internet-exposed workloads that are also privileged or mount the host.
- Identities that can read secrets cluster-wide or create pods in sensitive namespaces.
- Namespaces with no NetworkPolicies that host sensitive data.
- Exploitable image vulnerabilities in running, exposed workloads.
Several medium findings on the same workload can form a toxic combination that outranks an isolated critical.
Frequently asked questions
Is Pod Security Admission enough? It is a strong baseline for pod settings, but it does not cover RBAC, network policies, secrets or images. You need all the layers.
Do managed Kubernetes services handle security for me? Only partly. The provider secures the managed control plane. Workloads, access and network configuration remain your responsibility.
How often should I assess posture? Continuously. Clusters change with every deployment, so a quarterly review will miss most of the drift.
How priorIQ.ai helps
The ScannerIQ Kubernetes agent assesses RBAC, workload and NetworkPolicy posture from inside the cluster, read-only. CodeIQ scans container images and IaC before deployment, and CloudIQ covers the cloud resources around managed clusters on AWS, Azure and GCP. PriorIQ Core combines all of it, deduplicates and prioritizes with exploitability and exposure context, and detects toxic combinations across layers. Explore the modules or request a demo.