feat(agent,agent-installer): add transactional policy store - #1963
feat(agent,agent-installer): add transactional policy store#1963Benoît Cortier (CBenoit) wants to merge 5 commits into
Conversation
Add authenticated policy management and validation for the package broker. Persist JSON policies atomically with secure path, ACL, concurrency, receipt, watcher, and audit checks while preserving stable runtime snapshots. Stacked on #1937. Uses the contract from Devolutions/now-libraries#99. UniGetUI policy management depends on this API. Co-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com>
|
Implementation notes:
Note Human-tuned, LLM-assisted content. |
Resolve policy parents through held handles before comparing leaf names, reject multi-link files using link-count metadata, and run unelevated E2E under a verified restricted token. Select one validated Windows message compiler path so release resource builds receive a usable SDK directory. Co-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com>
|
CI repair update (
Focused validation passed: 37 policy-store Windows tests, 3 token-wrapper tests, agent-policy-tester check, direct unelevated E2E with token assertion, rustfmt, diff check, and targeted Clippy with warnings denied. Workflow assertions for restricted launch and single message-compiler selection also passed; Note Human-tuned, LLM-assisted content. |
Run the low-integrity test workspace from LocalLow and stream PsExec output through the CI parent instead of writing into the protected checkout. Co-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com>
|
Follow-up CI repair ( Local script parsing, workflow assertions, diff/rustfmt, agent-policy-tester check, and targeted Clippy passed. Note Human-tuned, LLM-assisted content. |
Precreate a low-integrity writable transcript path and pass it explicitly to the restricted tester wrapper so CI can read child failures and results. Co-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com>
Verify that the restricted E2E token has disabled Administrators membership and cannot satisfy the same elevation-plus-membership gate used by policy writes. Co-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com>
|
Final CI status: run 33254105745 passed at Note Human-tuned, LLM-assisted content. |
Adds authenticated transactional package-policy management to Devolutions Agent, including deterministic validation, optimistic concurrency, atomic JSON persistence, secure path and ACL enforcement, and stable old-or-new runtime snapshots.
Adds structured tracing and Windows Event Log auditing, fail-closed watcher reconciliation, administrator and elevation enforcement for writes, and split unelevated/LocalSystem end-to-end coverage.
Stacked on #1937.
Final Gateway head:
c1b72fe33b36dc1d80d79ee6d8d759d76ef9e275.Shared contract: Devolutions/now-libraries#99 at
ec592a91f95a66c8a79b7d612ed73d931ef74aeb.Downstream integration: draft Devolutions/UniGetUI#5335 at
92e2d8c26ecefd0f9542909530aef228bcd1fa2f.Validation: CI run 33254105745 passed all jobs.