About this project
# Nirmata Runtime For Kyverno
Nirmata Runtime is a Kubernetes-native runtime security tool that uses eBPF to monitor and enforce workload behavior at the kernel level. It operates as a per-node DaemonSet, attaching eBPF programs to pods selected by a cluster-scoped `RuntimePolicy` custom resource.
## Core Capabilities
The `RuntimePolicy` governs five types of workload behavior:
1. **File opens** – which files a process opens
2. **Binary execution** – which binaries it executes
3. **Network destinations** – where it sends traffic
4. **Application protocols** – what protocols it speaks
5. **DNS resolutions** – which domain names it resolves
Decisions are made in the kernel, so denied operations never complete. This complements admission controllers like Kyverno, which validate pod specs before startup, by enforcing actual runtime behavior.
## Key Features
- **Enforce or monitor modes**: Policies can block operations (`mode: enforce`) or simply report findings (`mode: monitor`), with per-policy configuration.
- **CEL-powered rules**: Uses Common Expressions Language (CEL) with Kyverno's libraries, supporting literal values, expressions, and reusable variables.
- **Default deny with allow-lists**: Set `deny.values: ["*"]` to flip a behavior to deny-all-except-allowed.
- **Kubernetes-native output**: Findings are written as OpenReports `Report` objects in the pod's namespace, with per-node status conditions and Prometheus counters.
- **Selector scoping**: Policies can target pods and namespaces via label selectors, cluster-wide.
- **Periodic re-evaluation**: `evaluationInterval` re-runs policy expressions to keep externally sourced deny lists current.
## Quick Start
Install via Helm:
```bash
helm install kyverno-runtime oci://ghcr.io/nirmata/charts/kyverno-runtime --namespace kyverno-runtime --create-namespace
```
Example: Block a specific IP address for a pod:
```yaml
apiVersion: runtime.nirmata.io/v1alpha1
kind: RuntimePolicy
metadata:
name: block-address-sample
spec:
mode: enforce
podSelector:
matchLabels:
app: egress-client
behaviors:
- network:
deny:
values:
- "8.8.8.8"
```
## Limitations (Pre-1.0)
- Egress is IPv4-only; IPv6 literals not supported.
- File open and exec enforcement require BPF-LSM active in the kernel (`lsm=` boot parameter).
- Network, protocol, open, and exec observations are polled from eBPF counters, so findings may lag and carry counts rather than ordering. DNS questions stream in real-time.
- Exceptions not yet supported.
## Documentation
Includes quickstart, concepts, installation, platform support (EKS, GKE, AKS, Bottlerocket), examples, shadow AI detection, troubleshooting, and reference docs for the RuntimePolicy CRD, CEL expressions, and metrics.
## License
Apache License 2.0
Comments
0 Rating appears after 10 ratings
Sign in to join the discussion.