docs: refresh README with new diagrams, tooling comparison and recent-attack use-cases - #2840
docs: refresh README with new diagrams, tooling comparison and recent-attack use-cases#2840HighnessAtharva wants to merge 4 commits into
Conversation
The README described what KubeArmor is, but not the one thing that separates it from every detect-and-respond engine: the decision happens at an LSM hook, in kernel space, before the syscall completes. Changes: - Replace the static architecture PNG with a new SVG that colours the enforcement path separately from the telemetry path. - Add "Where the decision happens", a two-timeline figure comparing inline enforcement against detect-and-respond. - Add a comparison table for 7 runtime security engines across inline blocking, allow-list policy, sandboxing, hardened distro support and overhead, sourced from the 2025 comparative paper. - Add five published 2025 campaigns (React2Shell, Shai-Hulud, IngressNightmare, Dero miner, nullifAI) with the policy control that breaks each chain, plus a figure showing the shared attack chain. - Add an agent sandboxing section for ModelArmor, with the four risks and the four policy controls that answer them. - Add an install snippet. The README had none. - Add measured performance numbers, labelled with their date and release line. - Convert the governance bullet list into a table. All four figures are hand-authored SVG in .gitbook/assets/diagrams/, with a fixed light palette so GitHub dark mode readers see the same drawing. No build step, no external requests, no new dependencies. Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
|
@HighnessAtharva kindly sign your commit, DCO is failing |
Review feedback: the block diagrams were too detailed to give a reader any high-level understanding. - Figure 1 drops from 12 boxes to 6, and from component names to three numbered steps: you write a policy, KubeArmor turns it into kernel rules, the kernel decides. Allowed and blocked are now explicit outcomes. The operator, snitch, controller, monitor, feeder and relay are left to the docs. - Figure 2 loses every second-line caption. Three boxes per row. - Figure 3 folds four denied rows into three, one line each. - Figure 4 drops the campaign chips, since the table right below it already lists them, and shortens five stages to four steps. Same fixed light palette. README prose updated to match the new step counts. Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
|
Pushed
Component names are now the docs' job, not the README's. Same fixed light palette, so GitHub dark mode readers still get a legible drawing. The four maintainer questions in the description are unchanged and still open. |
The copy read like generated text. Lines such as "Two paths leave the kernel, and the difference matters" set something up instead of saying it, and a README should just say it. - Rewrite every prose block I added, addressing the reader directly. - Drop the rhetorical scaffolding: "Three things explain that table", "Five campaigns, five write-ups, one shared chain", "Every cell in the last column is a policy line, not a detection rule". - Replace sentence fragments used for rhythm with full sentences. - Remove the four em dashes in the file, including the two that predate this branch. - Fix the alt text on all four figures, which still described the detailed versions from the first pass. - Reword two figure captions that argued instead of labelling. Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
|
Pushed The tell was lines that set something up instead of saying it. "Two paths leave the kernel, and the difference matters" announces that a point is coming, then makes you read the bullets to find it. Same with "Three things explain that table", "Five campaigns, five write-ups, one shared chain", and "Every cell in the last column is a policy line, not a detection rule". What changed:
Same change applied to the org profile README in kubearmor/.github#1. |
Two lines spoke to the project rather than to a reader: - The paper citation under the comparison table. A reader wants the claim and a link to the longer explanation, not a bibliography entry. - "Somebody should re-run it on a current release" in the performance note. That belongs in an issue, so the note now just states when the numbers were measured and on which release line. Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
|
Pushed
A reader wants the claim and a link, not a bibliography entry. The re-run is a maintainer task, so it belongs in an issue rather than in the README. Happy to file that issue if you want the numbers refreshed before this merges. |
Why
The README says what KubeArmor is. It does not say the one thing that separates it from every detect-and-respond engine: the decision happens at an LSM hook, in kernel space, before the syscall completes. A reader had to find that on a separate docs page.
Four things a new evaluator asks for were also missing: how it compares to Falco and Tetragon, what it costs at runtime, what it does for AI agent workloads, and whether it stops attacks people actually read about this year.
What changed
kubearmor_overview.png. Enforcement path and telemetry path are coloured separately.Figures
Four hand-authored SVGs in
.gitbook/assets/diagrams/:fig1-architecture.svg— components across control plane, node, kernel, consumersfig2-decision-point.svg— the two timelinesfig3-agent-sandbox.svg— one allowed path, four denied pathsfig4-attack-chain.svg— the five-stage chain and the three policy gatesThey use a fixed light palette, so a reader on GitHub dark mode gets the same drawing with legible labels. No build step, no external requests, no new dependencies, and every icon is inline SVG. The old PNG stays in
.gitbook/assets/for the GitBook site.Sources
Maintainer decisions needed
wiki/andpkg/KubeArmorOperator/, not from a Maintainer. Please confirm. Also worth deciding whether the network policy enforcer deserves its own box.Related
The organization profile README is a separate PR against kubearmor/.github. It reuses
fig2from this branch, so that image only renders once this PR merges.🤖 Generated with Claude Code