The governed workflow
Runtime knowledge is useful, but it is not deployment authority. landlock-genprof brings direct evidence and derived policy into one candidate, gives that candidate deterministic content identity, and applies it only after a human authorizes that exact identity.
landlock-genprof acquires filesystem, network, and applicable capability evidence.
Security Profiles Operator observes syscalls and produces the real derived SeccompProfile.
Different origins. One candidate.
Direct evidence and the imported SPO artifact converge with provenance preserved.
CandidateDigestDeterministic content identity. Not authority.
Re-reads and revalidates the proposal, re-checks approval, checks implemented backend readiness, and refuses missing, stale, or mismatched authority.
Explicit rollback
After apply, the durable ApplyAttempt records controlled Before state,
attributable object identity/resourceVersion, observed state, and typed
results for each mutation. An operator may explicitly invoke:
kubectl landlock-genprof rollback <apply-attempt> --namespace default
This creates a separate RollbackAttempt and performs guarded inverse
mutations only for a current custody-epoch-qualified source. Strict
UID/resourceVersion and controlled-state checks, dependency-aware ordering,
readiness checks, and policy-reference guards apply before mutation. The
operation restores recorded controlled Before state only and remains
sequential and nontransactional. Partial, failed/no-effect, and
OUTCOME_UNKNOWN results are durable; unknown descendants are not
automatically redispatched, while known FAILED_NO_EFFECT records may be
reconsidered by a later explicit continuation after fresh checks.
Rollback authority is Kubernetes RBAC plus explicit CLI confirmation, not browser action or a new proposal approval. Bare-Pod delete-then-create rollback and rollback-of-rollback are unsupported.
In SPO mode, the imported SeccompProfile is derived policy—not landlock-genprof observation. Its provenance is preserved, its syscalls do not enter landlock-genprof TrainingHistory, and landlock-genprof invents no confidence for them. The source object grants no authority; the governed candidate still requires normal digest-bound approval. See Import SPO-derived policy and ADR-0008.
Four commands, one authority chain
trace
Collect direct evidence for the selected source mode and publish a candidate. In SPO mode, filesystem and network evidence remain landlock-genprof-derived while syscall policy comes from the named SPO-derived SeccompProfile.
kubectl landlock-genprof trace \
--pod nginx-demo -n default \
--binary /usr/sbin/nginx \
--duration 60s
review
Inspect the exact mixed-origin candidate, source provenance, applicable confidence, artifact readiness, and the candidate digest.
kubectl landlock-genprof review \
nginx-demo
approve
Record explicit human authority for the digest printed by review. A later candidate must be reviewed and approved again.
kubectl landlock-genprof approve \
nginx-demo \
--expected-digest sha256:<from-review>
apply-proposal
Apply only a valid, current approval. Enforcement remains the responsibility of PodLock/Landlock, the CNI, and SPO with the kubelet/runtime.
kubectl landlock-genprof \
apply-proposal nginx-demo
Before tracing, use
kubectl landlock-genprof doctorfor host prerequisites. After application, use backend-specific checks to distinguish API application, enforcement, and behavioral verification. The usage guide documents the complete lifecycle and the narrower semantics ofexplain,diff, andverify.