Join our Newsletter — 33% off our NHI Course
Home› Guides› Kubernetes Platform Health Check: 10 Metrics to Audit…
Template Cloud Security

Kubernetes Platform Health Check: 10 Metrics to Audit Every Quarter

← All guides
By NHI Mgmt Group, edited by Lalit Choda Updated 13 November 2026 12 min read
On this page

Kubernetes clusters drift from their hardened baseline one exception at a time: a cluster-admin binding for an urgent fix, a privileged pod for a monitoring agent, a namespace created without a network policy, a minor version left behind after its end of life. This health check is a recurring, measurable review of Kubernetes clusters already in production, whether self-managed or a managed cloud service. It turns the questions a platform lead, auditor or CISO would ask into ten metrics with formulas and thresholds, covering cluster-admin bindings, service account token mounting, privileged pods, network policy, image signature enforcement, secrets in environment variables, API server exposure, audit logging, version support and admission policy violations. It suits teams searching for a "Kubernetes health check", a "Kubernetes security audit checklist" or "k8s security KPIs".

This page measures; it does not explain how to harden a cluster. For the hardening baseline itself, use the Kubernetes Security Checklist, and for architecture and threat context, the Kubernetes Security Guide. Go back to them, and to the deeper guides in the remediation map, for every finding this review raises.

What this health check covers

The review asks: if one workload or one credential in this cluster were compromised today, how far could an attacker go, and would anyone see it? It covers every production cluster and, separately, any non-production cluster that holds production data or credentials. In scope:

  • Identity and authorisation: who and what holds cluster-admin or equivalent rights, and which pods carry an API token they do not need. Service accounts are non-human identities, and in most clusters they outnumber human users by a wide margin.
  • Workload posture: privileged pods, Pod Security enforcement, network policy and secrets exposed through environment variables.
  • Supply chain at admission: whether only signed images from approved registries are admitted, and how often admission policies reject or warn.
  • Control plane: API server exposure, audit logging and whether each cluster runs a supported minor version.

Who runs it: the platform engineering or cluster operations lead collects the data; the cloud security lead reviews; the CISO signs off. What it is not: a full CIS Benchmark scan or a penetration test, though both make good inputs. The automated benchmark pass rate belongs to the hardening checklist; these ten metrics measure the controls an attacker tests first.

Key takeaways

  • Count cluster-admin, not just admins. Bindings to cluster-admin, wildcard roles and the system:masters group all grant full control. The Kubernetes documentation notes that system:masters membership bypasses RBAC entirely and cannot be revoked by removing bindings.
  • Most pods do not need an API token. A mounted service account token in a pod that never calls the API is free credential material for an attacker; measure how many pods carry one.
  • Privileged pods are node access. The Baseline Pod Security Standard forbids privileged containers, host namespaces and hostPath volumes; every exception should be named and dated.
  • Admission is where policy becomes real. Image signature checks and Pod Security only protect namespaces where they are enforced, not just audited or warned.
  • Audit logging is off until configured. The API server logs no audit events without an audit policy file, so check every cluster, including managed ones where it is a setting.

How to use this template

Copy the metrics table and findings log into your own tracker, then run this Kubernetes platform health check per cluster at the cadence below. Score each metric against the thresholds, roll results up by environment, and record every amber or red result as a finding with an owner and a due date. Keep each quarter's extracts so the trend is visible as clusters, teams and versions change.

Cadence and sign-off

ReviewFrequencyOwnerApproverEvidence kept
Cluster-admin and wildcard binding reviewMonthlyPlatform engineering leadCloud security leadBinding export per cluster, approved list, removal tickets
Admission policy violation reviewMonthlyPlatform security engineerPlatform engineering leadDeny, warn and audit events by namespace and policy
Full metrics review (this page)Quarterly, per clusterPlatform engineering leadCISOMetrics table, raw extracts, findings log
Version support and upgrade plan checkQuarterly, and at each upstream minor releaseCluster operationsPlatform engineering leadCluster version list with end of life dates, upgrade schedule
Exception register reviewQuarterlyPlatform security engineerCloud security leadPrivileged pod, network policy and admission exceptions with expiry

Metrics

NHI Mgmt Group recommended thresholds; adjust to your risk appetite. "System namespaces" means those that run the control plane, networking, storage and security add-ons; report them separately from application namespaces so add-on exceptions do not hide application drift.

IDMetricFormulaData source typeGreenAmberRed
K8S-01Cluster-admin bindingsSubjects (users, groups, service accounts) bound to cluster-admin, to a role with wildcard verbs and resources, or in system:masters, that are not on the approved break-glass listClusterRoleBinding and RoleBinding export, approved list, client certificate records01 to 2 with a dated change ticket3 or more, or any human user or system:masters member outside break-glass
K8S-02Unneeded service account token mountsPods with an automounted service account token whose service account made no API request in 30 days ÷ pods with an automounted tokenPod specs, API server audit log (requests by service account)Below 10%10% to 30%Above 30%
K8S-03Privileged podsRunning pods in application namespaces that are privileged, share host network, PID or IPC namespaces, or mount hostPath ÷ running pods in application namespacesPod spec export, exception register0%, system namespaces on an approved listAbove 0% to 1% with dated exceptionsAbove 1%, or any without an exception
K8S-04Network policy coverageApplication namespaces with a default-deny ingress and egress policy plus explicit allow rules ÷ application namespacesNetworkPolicy export, namespace list, CNI enforcement statusAt least 95%80% to below 95%Below 80%, or a CNI that does not enforce policy
K8S-05Image signature enforcementApplication namespaces where admission enforces signature verification and an approved registry list ÷ application namespacesAdmission controller policy export and mode, namespace list100% enforcingAt least 80% enforcing, rest in auditBelow 80% enforcing
K8S-06Secrets exposed as environment variablesContainers that load a Secret value into an environment variable ÷ containers that consume any SecretPod spec export (env and envFrom secret references, volume mounts)Below 10%10% to 30%Above 30%
K8S-07API server public exposureClusters whose API server endpoint is reachable from the internet without an IP allowlist or private-only endpoint ÷ clustersCloud provider cluster configuration, external attack surface scan, load balancer and firewall rules0%Allowlisted public endpoint on non-production clusters onlyAny production cluster open to the internet, or any non-production cluster open without an allowlist
K8S-08Audit log coverageClusters with an audit policy that records at least Metadata for all requests (Metadata only for Secrets, so values are never logged) and Request level for RBAC changes and pod exec, delivered to the central log store every day in the period ÷ clustersAPI server audit configuration, SIEM or log store per-cluster reporting100%Policy present, with gaps in delivery under 72 hoursAny cluster with no audit policy, or silent for 72 hours or more
K8S-09Version support statusClusters on a Kubernetes minor version still within upstream (or managed service) patch support, and on a patch release less than 90 days old ÷ clustersCluster version list, upstream release and end of life calendar, managed service support calendar100%Supported, but ending within 90 days with no scheduled upgrade, or patch over 90 days oldAny cluster past end of life
K8S-10Admission policy violationsAdmission denials and audit or warn violations for Pod Security and custom policies, per 100 deployments, with the share of namespaces still only in audit or warn modeAdmission controller events, Pod Security Admission audit annotations, deployment count from CI/CDFalling quarter on quarter and under 5 per 100Flat, or 5 to 15 per 100Rising, or above 15 per 100

Report every metric per cluster and roll up by environment. A single cluster with red K8S-01 or K8S-07 makes the environment red regardless of the average.

How to collect the data

Use read-only exports from the cluster API, the API server audit log and the cloud provider's cluster configuration. A dedicated read-only audit identity with a short-lived credential keeps the review itself from adding standing access.

  1. Build the cluster list. Pull it from every cloud account and subscription plus the self-managed estate, not from a spreadsheet. Unknown clusters are the first finding.
  2. Export RBAC. List ClusterRoleBindings and RoleBindings that reference cluster-admin, roles with wildcard verbs or resources, and roles granting escalate, bind, impersonate or nodes/proxy, which the Kubernetes RBAC good practices page treats as escalation paths (K8S-01). Check identity provider group mappings and any issued client certificates for system:masters. The How to audit Kubernetes cluster admin bindings guide walks through the review.
  3. Join token mounts to API usage. From pod specs, list pods where automountServiceAccountToken is not false at pod or service account level; from the audit log, list service accounts that made API requests in the last 30 days (K8S-02). The How to find unused Kubernetes service accounts guide helps here.
  4. Scan pod specs for privileged security contexts, host namespaces, hostPath volumes and Secret references through env or envFrom (K8S-03, K8S-06). Join exceptions to the exception register.
  5. Export network policies per namespace and confirm that the cluster network plugin actually enforces them (K8S-04).
  6. Export admission configuration: Pod Security Admission labels per namespace (enforce, audit, warn), policy engine rules and their mode, and image verification and registry rules (K8S-05, K8S-10). Count denials and warnings from admission events against deployment counts from CI/CD.
  7. Check API server exposure from the cloud provider configuration and an external scan of the endpoint, including authorised network ranges (K8S-07).
  8. Check audit logging: the presence of an audit policy and backend on each cluster, and daily delivery to the central store (K8S-08). The Kubernetes Audit Log Detection Guide covers what the policy should record.
  9. Compare versions with the upstream release calendar and any managed service calendar (K8S-09). As checked on 13 November 2026, upstream Kubernetes maintains the three most recent minor releases and gives each about a year of patch support; managed services publish their own windows.

Red flags that need action now

  • A human user, CI system or third-party integration bound to cluster-admin, or any certificate issued with the system:masters group.
  • A role granting escalate, bind, impersonate or nodes/proxy to anything outside the control plane.
  • A production API server reachable from the internet with no allowlist.
  • A production cluster with no audit policy, or audit events not leaving the cluster.
  • Privileged or host-namespace pods in an application namespace with no exception record.
  • Application namespaces still on Pod Security warn or audit only, a year after rollout.
  • A cluster past its minor version end of life.
  • Admission image verification switched to audit mode to unblock a release and never switched back.
  • A service account token Secret of the legacy, non-expiring type still in use.

Findings log

Log each amber or red result and each red flag. Carry open items into the next quarter.

IDFindingMetricSeverityOwnerDue dateStatus
HC-K8S-01[Description, e.g. CI deployment service account bound to cluster-admin on 3 production clusters]K8S-01[Critical][Platform engineering lead][Date][Open]
HC-K8S-02[Description, e.g. 14 application namespaces with no default-deny policy]K8S-04[High][Application platform team][Date][Open]
HC-K8S-03[Description][ID][Critical / High / Medium / Low][Role][Date][Open / In progress / Closed / Risk accepted]

Suggested due dates: critical within 7 days, high within 30 days, medium within 90 days. Each risk acceptance needs a named approver and an expiry date.

Remediation map

Finding typeWhere to fix it
Cluster-admin, wildcard and escalation bindingsKubernetes RBAC Guide
Unneeded token mounts, legacy tokens, workload identityKubernetes Service Account Token Guide, Kubernetes NHI Security Guide
Privileged pods, Pod Security, image signature enforcement, admission violationsKubernetes Admission Control Guide, Container Image Security Guide
Missing network policyKubernetes Network Policy Guide
Secrets in environment variablesKubernetes Secrets Security Guide, How to migrate Kubernetes secrets to an external Secrets Manager
API server exposure, unsupported versionsKubernetes Security Checklist (control plane section)
Missing audit loggingKubernetes Audit Log Detection Guide
Signs of active compromiseKubernetes Cluster Compromise Playbook

Framework mapping

AreaNIST CSF 2.0NIST SP 800-53 Rev. 5CIS Controls v8.1MITRE ATT&CK
RBAC and token mounts (K8S-01, 02)PR.AA-05AC-2, AC-6Control 5, Control 6Container API (T1552.007)
Privileged pods and admission (K8S-03, 05, 10)PR.PS-01CM-6, CM-7, SR-11Control 4Deploy Container (T1610), Escape to Host (T1611)
Network policy and API exposure (K8S-04, 07)PR.AA-05, DE.CM-01AC-6, CM-7Control 12, Control 13Container and Resource Discovery (T1613)
Secrets handling (K8S-06)PR.DS-01IA-5, SC-28Control 3Container API (T1552.007)
Audit logging and versions (K8S-08, 09)PR.PS-04, PR.PS-02AU-12, SA-22, SI-2Control 2, Control 7, Control 8

References

Related NHI Mgmt Group resources: Kubernetes Security Checklist, Kubernetes Security Guide, Kubernetes RBAC Guide, Kubernetes NHI Security Guide.

Free weekly newsletter

Subscribe to the NHI & AI Identity Journal

The latest on NHI and Agentic AI security – articles, research, breaches, news and events every week.

Bonus 33% off our NHI Course when you subscribe.

NHIMG Editorial Note
Researched and written by the NHI Mgmt Group editorial team using AI tools, under the editorial direction of Lalit Choda. Facts are drawn from the sources listed on this page and checked by our automated quality process. Last updated 13 November 2026. Spotted an error? Use our contact page.
NHI Mgmt Group, the independent authority on Non-Human Identity, IAM and Agentic AI security. nhimg.org