Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
12 changes: 12 additions & 0 deletions getting-started/deployment_guide.md
Original file line number Diff line number Diff line change
Expand Up @@ -14,6 +14,18 @@ kubectl apply -f https://raw.githubusercontent.com/kubearmor/KubeArmor/main/pkg/

You can find more details about helm related values and configurations [here](https://github.com/kubearmor/KubeArmor/tree/main/deployments/helm/KubeArmorOperator).

### (Optional) Set the CRI socket explicitly

KubeArmorOperator deploys a `kubearmor-snitch` Job to detect node information (including the container runtime). If CRI socket auto-detection does not work in an environment, provide the socket path explicitly via Helm.

{% hint style="warning" %}
The `--socket-file` flag is consumed by the `kubearmor-snitch` Job. The exact Helm value key that feeds snitch arguments depends on the chart version. If this flag is not being applied to snitch, use the chart documentation in the KubeArmor repository to find the snitch argument wiring for the chart version in use.
{% endhint %}

Related:

* [KubeArmorOperator Helm chart (upstream)](https://github.com/kubearmor/KubeArmor/tree/main/deployments/helm/KubeArmorOperator)

## Install kArmor CLI (Optional)

```
Expand Down
16 changes: 16 additions & 0 deletions getting-started/kubearmor-events.md
Original file line number Diff line number Diff line change
Expand Up @@ -18,6 +18,7 @@
| ContainerImage | shows the image that was used to spin up the container | docker.io/accuknox/knoxautopolicy:v0.9@sha256:bb83b5c6d41e0d0aa3b5d6621188c284ea |
| ContainerName | specifies the Container name where the log got generated | discovery-engine |
| Data | shows the system call that was invoked for this operation | syscall=SYS_OPENAT fd=-100 flags=O_RDWR\|O_CREAT\|O_NOFOLLOW\|O_CLOEXEC |
| EventData | map of parsed key/value pairs derived from structured `Data` and (for `Operation=Network`) `Resource` | {"Fd":"10","Sa_family":"AF_INET","Sin_port":"53","Sin_addr":"10.0.0.10"} |
| HostName | shows the node name where the log got generated | aks-agentpool-16128849-vmss000001 |
| HostPID | gives the host Process ID | 967872 |
| HostPPID | list the details of host Parent Process ID | 967496 |
Expand All @@ -34,6 +35,20 @@
| Source | lists the source from where the operation request came | /knoxAutoPolicy |
| Type | specifies it as container log | ContainerLog |

### About `EventData`

`EventData` is a `map<string, string>` field present in both **Container Telemetry** (logs) and **Container Alerts**.

KubeArmor populates it by parsing:

* `Data` (space-separated `key=value` pairs)
* `Resource` only when `Operation` is `Network`

For example, a network telemetry event may include:

* `Resource`: `sa_family=AF_INET sin_port=53 sin_addr=10.0.0.10`
* `EventData`: `{ "Sa_family": "AF_INET", "Sin_port": "53", "Sin_addr": "10.0.0.10" }`

<details><summary><h4>Process Log</h4></summary>

```json
Expand Down Expand Up @@ -136,6 +151,7 @@ The primary difference in the container alerts events vs the telemetry events (s
| ContainerImage | shows the image that was used to spin up the container | docker.io/library/mysql:5.6@sha256:20575ecebe6216036d25dab5903808211f |
| ContainerName | specifies the Container name where the alert got generated | mysql |
| Data | shows the system call that was invoked for this operation | syscall=SYS_EXECVE |
| EventData | map of parsed key/value pairs derived from structured `Data` and (for `Operation=Network`) `Resource` | {"Syscall":"SYS_EXECVE"} |
| Enforcer | it specifies the name of the LSM that has enforced the policy | AppArmor/BPFLSM |
| HostName | shows the node name where the alert got generated | aks-agentpool-16128849-vmss000001 |
| HostPID | gives the host Process ID | 3647533 |
Expand Down
27 changes: 27 additions & 0 deletions getting-started/release-notes/v1.6.md
Original file line number Diff line number Diff line change
@@ -1,5 +1,32 @@
# KubeArmor v1.6 Release Notes

## v1.6.8

- **Date:** 2026-02-25
- **Version:** v1.6.8

### 🆕 New Features

- Added usernames to host logs and security alerts for clearer identity context.
- Added a Helm option to select the container runtime socket file during deployment.
- Added default CPU and memory requests and limits for relay, the KubeArmor controller, the DaemonSet, and snitch.

### 🐛 Bug Fixes

- Fixed intermittent failures under high concurrency in endpoint and host security policy handling.
- Fixed data races in alert throttling during high alert volumes.
- Fixed container runtime detection with multiple sockets by deriving the runtime from the matched socket path.
- Fixed CRI socket flag injection so generated DaemonSets consistently use the intended socket argument.
- Fixed RHEL9 build gating so RHEL9-specific features are enabled only for builds >= 400.

### 🎁 Misc

- Updated CI workflows to use the correct Helm values key for the `kubearmor-operator` image tag.
- Improved tests by allowing LSM ordering to be passed through to match target environments.
- Improved host-only runs by adding timestamps to USB logs and explicitly setting `k8s=false`.
- Updated dependencies and release metadata, including Go 1.24.13, a Cilium dependency bump to v1.18.4, and the stable release version to v1.6.8.
- Reduced static analysis noise by refining security checks and suppressions in CI.

We are excited to announce the release of **KubeArmor v1.6**, packed with powerful new features, significant enhancements, and critical bug fixes that make workload protection and observability even more robust for cloud-native environments.

This release reflects major advancements in policy enforcement, system monitoring, and ecosystem integrations while addressing important stability and performance improvements.
Expand Down
15 changes: 15 additions & 0 deletions wiki/log_feeder.md
Original file line number Diff line number Diff line change
Expand Up @@ -100,6 +100,7 @@ message Alert {
string Operation = 19; // e.g., Process, File, Network
string Resource = 20; // e.g., /etc/passwd, tcp://1.2.3.4:80
string Data = 21; // Additional data if any
map<string, string> EventData = 43; // Parsed key/value data from `Data` and (for Network) `Resource`
string Enforcer = 28; // e.g., BPFLSM, AppArmor, eBPF Monitor
string Action = 22; // e.g., Allow, Audit, Block
string Result = 23; // e.g., Failed, Passed, Error
Expand Down Expand Up @@ -127,6 +128,7 @@ message Log {
string Operation = 15;
string Resource = 16;
string Data = 17;
map<string, string> EventData = 33; // Parsed key/value data from `Data` and (for Network) `Resource`
string Result = 18; // e.g., Success, Failed

string Cwd = 25;
Expand All @@ -148,6 +150,19 @@ message ExecEvent {
}
```

### `EventData`: structured key/value fields

The gRPC `Alert` and `Log` payloads include an `EventData` map.

* `EventData` is derived by parsing space-separated `key=value` pairs.
* KubeArmor parses `Data` for all operations.
* KubeArmor also parses `Resource` when `Operation` is `Network`.

Example:

* `Resource`: `sa_family=AF_INET sin_port=53 sin_addr=10.0.0.10`
* `EventData`: `{ "Sa_family": "AF_INET", "Sin_port": "53", "Sin_addr": "10.0.0.10" }`

These Protobuf definitions specify the exact structure and data types for the messages KubeArmor will send, ensuring that clients know exactly what data to expect. The `.pb.go` and `_grpc.pb.go` files are automatically generated from this `.proto` file and provide the Go code for serializing/deserializing these messages and implementing the gRPC service.

Now, let's look at the Log Feeder implementation in Go.
Expand Down