2.9 KiB
Review-only privileged preflight, CUST73 existing-host addendum
Prepared but NOT executed. This is a separate proposed read-only action; it grants no unit replacement, sudo-policy change, credential issuance or service restart. The original credential-boundary revision2 and existing-host addendum are unchanged.
Owner: railiance-cluster (effective k3s configuration); attended privileged executor and execution approval remain the supervisor's responsibility. This script requires root only to inspect protected service environment/config selectors and the active k3s process environment. Protected values exist transiently in its memory; they are never printed, hashed into receipts, logged, evaluated or forwarded elsewhere. Only fixed boolean predicates and presence of four explicitly named configuration keys leave the process. Any exception prints one constant refusal, never traceback.
After review, the human owner must place the exact reviewed script in a private root-owned non-agent-writable directory and verify its SHA256 against SHA256SUMS. Do not execute an agent-writable /tmp file under sudo or pipe a live checkout into root Python. Proposed owner command, on the verified Railiance01 host:
sudo -- /usr/bin/python3 -I -B /root/cust73-preflight/preflight.py
No command above has been executed by this worker. Stage/install/approval are still needed before the command is usable. No password, token or environment value is to be pasted into the transcript. The script makes no writes, reload, restart, network request or credential issuance call. Its only subprocess is read-only systemctl show with fixed service and property names; all subprocess output is captured.
The checks bind the expected hashed machine identity, exact original unit digest and root-owned file identity, stable main-process PID/starttime, absent unit drop-ins, no pending reload, mode644 launch argument, no CLI config selector, and only known EnvironmentFile sources. It parses a deliberately conservative simple assignment subset; unsupported quoting/continuations, duplicate keys, unknown source paths, selector presence, unreadable source or a changed unit/process require owner review. It never follows a protected selector's value into another file. Default config and config drop-ins must be absent for this exact baseline packet to pass.
A pass settles only the protected-input predicates for the prepared mode600 unit change. It does not authorize that change or prove workload health, account isolation, SSH principal denial, interactive assignment admission, native-model acceptance or supervised privileged execution. A present selector is an owner inspection gate, not an instruction to disclose its value or to clear it automatically.
Validation: eight fixture tests pass, including sensitive-value non-emission, selector detection, complex/duplicate syntax refusal, non-root refusal before reads, and constant-output exception handling. There is no live privileged receipt yet.