Skip to content

docs: the installation is cluster-wide, and there is no narrower mode (ADR 0055) - #90

Merged
kfeofantov merged 1 commit into
mainfrom
docs/the-install-is-cluster-wide
Aug 30, 2026
Merged

kfeofantov merged 1 commit into
mainfrom
docs/the-install-is-cluster-wide

Conversation

@kfeofantov

Copy link
Copy Markdown
Contributor

security.md has offered a "namespace-scoped [planned]" installation — Role
and RoleBinding in listed namespaces, no ClusterRole — since the first commit
that created the file
(d8943a3). No ADR ever decided it. Nothing was ever
built behind it. ADR 0032 then twice asserted the mode "remains available", which
gave a sentence of speculative prose the standing of a decision.

The description was also false, in the direction that matters. It said the
mode "reports requests-vs-usage findings for the permitted namespaces only". The
agent reads every kubelet through get nodes/proxy, which is cluster-scoped, so
without a ClusterRole there is no usage collection at all — not reduced,
absent. What the document described as a mode of this product is a different and
much weaker product, offered to a reader who would find out after installing it.

Why filters are the answer and not a fallback. The argument for API-server
enforcement is that the customer need not trust the agent's own filtering. That
does not survive contact with the rest of the product: the same customer is
already trusting agent-side filtering for the symbol allow-list that governs what
leaves a profile, for the drop of env/args/command before the informer
cache, and for the redaction in every node report — and under the inventory and
ebpf profiles the agent runs with hostPID and CAP_SYS_PTRACE, which no
namespace-scoped RBAC bounds. The boundary would look like a guarantee exactly
where it is not one.

Since ADR 0054 the four controls are also checkable from what the backend
receives rather than only from what was configured, which is the property the
unbuilt mode was supposed to supply.

ADR 0032's body is immutable, so its two sentences stand as written and ADR 0055
is their forwarding address (Amended by: 0055). The only remaining occurrences
of the phrase in the repository are those two and the ADR that voids them.

No code, no chart, no RBAC change. One fewer [planned] marker; security.md
loses 8 lines.

go test ./... && make lint   # green

🤖 Generated with Claude Code

https://claude.ai/code/session_011YRKuL97KRndaopfpixrhp

… (ADR 0055)

`security.md` has offered a namespace-scoped installation since the first commit
that created the file. No ADR decided it, nothing was built behind it, and
ADR 0032 then twice asserted that the mode "remains available", giving
speculative prose the standing of a decision.

The description was also false in the direction that matters. It promised
"requests-vs-usage findings for the permitted namespaces only"; the agent reads
every kubelet through `get nodes/proxy`, which is cluster-scoped, so without a
ClusterRole there is no usage collection at all. What the document called a mode
of this product is a different and much weaker one.

The section is replaced by a statement of the single installation shape and its
reason. ADR 0032's body is immutable, so its two sentences stand as written and
ADR 0055 is their forwarding address.

No code, no chart, no RBAC change.

    go test ./... && make lint   # green

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_011YRKuL97KRndaopfpixrhp
@kfeofantov
kfeofantov merged commit 13dc470 into main Aug 30, 2026
3 checks passed
@kfeofantov
kfeofantov deleted the docs/the-install-is-cluster-wide branch August 30, 2026 10:01
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant