Posture, CIS & NSA benchmarks
Every scan (default every 30 minutes) produces:- Misconfiguration findings — unsafe workload defaults, missing security context, PSS gaps — in the unified findings inbox, filterable by severity, namespace, and framework.
- Framework scores — CIS Kubernetes Benchmark and NSA-CISA controls scored PASS/FAIL, rolled up into a per-framework score per cluster with control-level drill-down.
fixed or keeps it persistent.
On managed control planes (EKS/GKE/AKS) some CIS control-plane/kubelet
argument controls report
NOT_ASSESSED because those flags aren’t readable. On
self-hosted clusters (k3s/kubeadm), enable nodeScanner.enabled=true to turn
them into real PASS/FAIL. See Install → self-hosted.KIEM — RBAC exposure
KIEM (Kubernetes Identity & Entitlement Management) flattens your RBAC into a risk-scored graph:- Every Role / ClusterRole and RoleBinding / ClusterRoleBinding as subject → permission edges.
- A risk score per edge; high-risk edges (e.g. cluster-admin-equivalent, secret access, exec/impersonate) surface as findings.
- A service-account inventory — which workloads mount which SA, and flags for excessive or unused permissions.
Admission control
The admission webhook validates every pod against Pod Security Standards, image trust (registry allowlist), and your custom rules. Modes:| Mode | Behavior |
|---|---|
audit (default) | Violations are logged and shown in the dashboard; nothing is blocked. |
enforce | Non-compliant pods are rejected at creation. |
audit, review what would have been blocked, then switch to enforce:
failurePolicy defaults to Ignore, so a webhook outage never blocks your workloads.
AI-assisted remediation
Requiresremediation.enabled=true (see Install → Common configurations) — off by default, since it’s the one write-capable component in the chart. On a fixable finding (a Pod/Deployment/StatefulSet/DaemonSet-owned misconfiguration with a capturable source spec):
- Generate Fix — an AI-generated RFC 6902 JSON Patch + plain-English explanation, scoped to a fixed allowlist of safe fields (never touches the container image, names, or other identity fields).
- Preview — the remediator dry-runs the patch against the live cluster object and reports whether it would apply cleanly, without changing anything.
- Apply — only enabled after a successful preview, and only re-applies the exact previewed patch (never a freshly regenerated one). Requires confirming the exact resource being patched.
Custom rules
Author org-defined rules in the dashboard (or API) — declarative, no Rego:- Select what to match: namespaces, workload kinds, labels.
- Condition: a fixed set of fields/operators (privileged, run-as-root, host namespaces, mutable image tags, env/label matches, regex).
- Action:
audit(detection only),warn, orenforce(deny at admission).
Image vulnerabilities
The controller scans running images by digest for CVEs and produces an SBOM per image, de-duplicated so each unique image is scanned once regardless of how many pods run it. Results show CVE id, severity, fixed version, and the affected packages, with the count of running pods per image so you can prioritize.Configuration drift
Each scan hashes the specs of workloads and network policies. When a spec changes between scans, KSPM emits a drift event (added / changed / removed) with the before/after spec, viewable as a side-by-side diff — useful for catching out-of-bandkubectl edit changes and unreviewed rollouts.
Fleet & controller health
Dashboard → Kubernetes shows every connected cluster with its posture score, per-framework scores, and controller status (healthy / degraded / offline) based
on the last heartbeat. If a cluster never appears:
clusterName you passed to Helm matches what you’re looking for in the fleet.