felhom-host-install.sh v1.9.0 — Pool.Audit in FelhomAgentGuest (audit A1)
Companion to felhom-agent v0.62.0: the stale-lock reaper reads GET /pools/felhom as its ownership registry. Pool.Allocate does NOT satisfy the read (spike T2). Idempotent upgrade via --rescope-acl (_ensure_role modifies to the exact set). Rescope FIRST, agent second. + REUSE §2 errata: gitea-creds is NOT out-of-band (committed in felhom.secret.yaml, live-consumed — rotation pending). Co-Authored-By: Claude Fable 5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01PSK5g6qYLknKj8u3QAFEr6
This commit is contained in:
@@ -1,5 +1,17 @@
|
||||
# Felhom scripts — Changelog
|
||||
|
||||
## felhom-host-install.sh v1.9.0 — Pool.Audit for the stale-lock reaper (A1) (2026-07-03)
|
||||
|
||||
Companion to felhom-agent v0.62.0 (audit A1: pool-membership ownership check). `PVE_PRIVS_GUEST`
|
||||
gains **`Pool.Audit`** (12 → 13 privs, granted at `/pool/felhom` via the existing FelhomAgentGuest
|
||||
role) so the agent can read `GET /pools/felhom` — its stale-lock reaper's ownership registry.
|
||||
`Pool.Allocate` does NOT satisfy the read (spike SPIKE-a1-pool-membership-read-2026-07-03 T2).
|
||||
No structural change: `_ensure_role` already `role modify`s to the exact priv set, so re-running
|
||||
`--rescope-acl` (or a fresh install) upgrades an existing box idempotently; `remove_scoped_acl`
|
||||
deletes by role name and needs nothing. **Deploy order on a live box: rescope FIRST, then deploy
|
||||
agent v0.62.0** — the added read priv is harmless to an older agent, while the new agent on an old
|
||||
ACL fail-safes its reaper (skips) and reports `pve:pool-read` degraded until the rescope lands.
|
||||
|
||||
## docs — SPIKE: A1 pool-membership read for the stale-lock reaper (2026-07-03)
|
||||
|
||||
Findings doc `documentation/audits/SPIKE-a1-pool-membership-read-2026-07-03.md`. Live-probed on
|
||||
|
||||
@@ -104,7 +104,7 @@
|
||||
|
||||
set -euo pipefail
|
||||
|
||||
SCRIPT_VERSION="1.8.0"
|
||||
SCRIPT_VERSION="1.9.0"
|
||||
|
||||
#-------------------------------------------------------------------------------
|
||||
# Logging (mirrors felhom-controller/scripts/docker-setup.sh)
|
||||
@@ -177,10 +177,14 @@ PVE_ROLE="FelhomAgent" # the PRE-3b single broad role (removed on rescope/unin
|
||||
# dynamically-enrolled removable drives (felhom-usb/felhom-flash) it observes but never registers — a
|
||||
# per-storage Audit grant hid them → false "drive detached" alerts. Audit is read-only, so box-wide Audit
|
||||
# keeps WRITE containment (Allocate/AllocateSpace stay per-storage). Only Sys.Audit/SDN.Use/Datastore.Audit box-wide.
|
||||
# `Pool.Audit` (v1.9.0, audit A1): the agent's stale-lock reaper reads GET /pools/felhom as its
|
||||
# ownership registry (agent v0.62.0+); without it the reaper fail-safes (skips) and reports the
|
||||
# `pve:pool-read` capability degraded. NOTE: Pool.Allocate does NOT satisfy the read — the spike
|
||||
# (SPIKE-a1-pool-membership-read-2026-07-03 T2) 403'd with Allocate granted; Audit is required.
|
||||
PVE_ROLE_GUEST="FelhomAgentGuest"
|
||||
PVE_ROLE_STORE="FelhomAgentStore"
|
||||
PVE_ROLE_BASE="FelhomAgentBase"
|
||||
PVE_PRIVS_GUEST="VM.Allocate VM.Audit VM.Config.Disk VM.Config.CPU VM.Config.Memory VM.Config.Network VM.Config.Options VM.PowerMgmt VM.Snapshot VM.Snapshot.Rollback VM.Backup Pool.Allocate"
|
||||
PVE_PRIVS_GUEST="VM.Allocate VM.Audit VM.Config.Disk VM.Config.CPU VM.Config.Memory VM.Config.Network VM.Config.Options VM.PowerMgmt VM.Snapshot VM.Snapshot.Rollback VM.Backup Pool.Allocate Pool.Audit"
|
||||
PVE_PRIVS_STORE="Datastore.Allocate Datastore.AllocateSpace"
|
||||
PVE_PRIVS_BASE="Sys.Audit SDN.Use Datastore.Audit"
|
||||
# Storages the agent reads/writes (archive+dump=local, restore=local-lvm, offsite DR=felhom-pbs). The
|
||||
|
||||
Reference in New Issue
Block a user