Advanced payloads: Jails and profiles: decide what it may touch (2 of 5)
The advanced payloads series: jails and profiles: decide what it may touch.
The Tebako team
github.com/tamatebako|
Note
|
Post 2 of 5 in the series Advanced payloads. ○ ● ○ ○ ○
|
|
Note
|
Reference guide: Set a jail policy. |
The observe half of the boundary was the last post. This post is the constrain half: profiles and jails — how the policy you drafted becomes the policy that runs, and what is enforced where.
Figure 1 — Profiles select a policy, the run binds it from env, flag, or manifest, and record mode drafts the grants from a real run.
The grammar
A jail policy has one setting and a list of grants:
jail:
default: deny # or open
mounts:
- path: $HOME/.fontist
access: rw
when: [macos]
why: "fontist caches and resolves fonts here"
Everything not granted is invisible to the process. The why is
mandatory: a declaration that cannot explain itself does not parse.
Binding, three ways
The same policy binds from an environment variable, a command flag, or
the manifest itself — TEBAKO_JAIL=deny, --jail deny:arg, or a
baked jail.yaml — with a fixed precedence. Per-invocation flags win,
so an operator can tighten any payload for one run without touching
it:
$ tebako run ./myapp --jail deny -- --help
$ tebako run ./myapp --mount "$HOME/sources:/work:ro" -- build /work
Draft, don’t guess
Record mode — the bridge from the previous post — turns a real run into the draft policy:
$ TEBAKO_JAIL=record tebako run ./myapp -- build
$ tfs needs --from-journal ~/.tebako/journal.log
One declaration, every platform
The declaration is identical everywhere. On Linux and macOS the choke point sits in the filesystem layer; on Windows, enforcement moves to the spawn tier — executables materialize into a cache and start under the same policy computed from the same declarations.
What you can do now
You can take any payload and decide, precisely and reviewably, what it may touch — on every platform tebako ships. The next post opens the images themselves.
|
Note
|
Continue with part 3 of 5: The image toolbox. |