|
2 | 2 |
|
3 | 3 | All notable changes to a3s-observer will be documented in this file. |
4 | 4 |
|
5 | | -## [Unreleased] |
| 5 | +## [0.3.0] — external intervention interface (enforcement) |
6 | 6 |
|
7 | 7 | ### Added |
8 | 8 |
|
9 | | -- **Enforcement — external intervention interface implemented** (opt-in; see |
10 | | - `docs/enforcement.md`). A `cgroup/connect4` egress guard (`egress_guard` + the |
11 | | - `DENY_EGRESS` map) plus `a3s-observer-enforce`, which attaches the guard to a target cgroup |
12 | | - and populates the deny map from an **external policy file** (one IPv4/hostname per line, |
13 | | - hot-reloaded every 2s) — the language-agnostic external interface. Cgroup-scoped, fail-open. |
14 | | - **Builds clean on KVM.** Runtime validation (actual blocking) is intentionally **not** run |
15 | | - on the shared prod node — blocking real egress there is off-limits — so it is **pending a |
16 | | - non-prod box**. |
| 9 | +- **Enforcement — opt-in external intervention interface** (see `docs/enforcement.md`). A |
| 10 | + `cgroup/connect4` egress guard (`egress_guard` + `DENY_EGRESS`) + `a3s-observer-enforce`, |
| 11 | + which attaches the guard to a target cgroup and populates the deny map from an **external |
| 12 | + policy file** (IPv4/hostname per line, hot-reloaded) — the language-agnostic external |
| 13 | + interface. Plus the in-process `Policy`/`Verdict` contract, a CI-tested policy parser, and a |
| 14 | + worked external controller (`scripts/example-controller.py`: NDJSON → provider allow-list → |
| 15 | + deny-file). Cgroup-scoped, fail-open; the observe-only core is unaffected. |
| 16 | +- **Validated end-to-end in a throwaway KVM VM** (non-prod — never the shared prod node): a |
| 17 | + process *in* the guarded cgroup gets `EPERM` connecting to the denied IP, while the same IP |
| 18 | + from *outside* the cgroup and a non-denied IP *inside* it are **not** blocked — proving deny |
| 19 | + + scoping + fail-open. Codified in `scripts/validate-enforcement.sh`. |
17 | 20 |
|
18 | 21 | ## [0.2.5] — operator polish + enforcement design |
19 | 22 |
|
|
0 commit comments