(observed ∪ override.add) \ override.remove, with defaultAction from the
override or SCMP_ACT_LOG. The hash names that effective set — it changes when
the observed union grows or when an override changes.
GET /seccomp/profiles
Every workload that has an aggregated syscall set, with its effective hash, profile path, distribution readiness, and any override. This is the list the controller’s distributor polls and the UI renders.Response
distribution.state is Ready when every live node (total) reports the
current file, Partial when some do, and Pending when none do or no node has
reported yet.
When an override is set, override is:
GET /seccomp/profiles///
One workload’s summary (as above) plus the rendered effective profile document.Response
404 if the workload has no aggregate yet.
GET /seccomp/profile-file////
The bare effectiveSeccompProfile document, for a distributor to write to a
node verbatim.
Serves only the current hash — a stale hash returns 404 with
stale hash; re-read /seccomp/profiles, which is the caller’s signal to
re-read the list.
PUT /seccomp/profiles////override
Set or replace the operator override for a workload. Gated — returns404
unless the broker is started with SECCOMP_OVERRIDES_ENABLED=true (Helm:
seccomp.overrides.enabled).
The override is stored separately from the observed union, which keeps accruing
underneath. The effective hash is recomputed on the write, so a new
hash-named file lands on every node within one distributor poll; the previous
file is never deleted, so a DELETE (below) reverts cleanly.
Request
add/remove— syscall names,^[a-z][a-z0-9_]{0,63}$, ≤ 512 each. A name in both is a400. Names are not checked against a real syscall table yet (a typo that passes the format check produces a warning-free but useless profile).defaultAction— one ofSCMP_ACT_LOG,SCMP_ACT_ERRNO,SCMP_ACT_KILL; omit to keepSCMP_ACT_LOG.revision— the revision the client last read. Omit (ornull) to create; a mismatch with the stored revision is a409.dryRun— validate and render without persisting.X-Kguardian-Actorheader — recorded asupdatedBy; defaults tounknown.
Response — 200
Errors
DELETE /seccomp/profiles////override
Drop the override. The effective profile falls back to the pure observed set and the hash reverts to the pre-override value — and since that file was never deleted from any node, no redistribution is needed. Also gated behindSECCOMP_OVERRIDES_ENABLED. 404 if there was no override.
POST /seccomp/node-status
The distributor reports, after every pass, the full set of profile files present on its node. Replaces the node’s row wholesale — it is a snapshot, not a delta.Request
node_name is required; an empty paths is valid (the node has no profiles
yet). Returns 200 with an empty body.