Files
Shiju 798500ccdb fix(policy): validate raw OPA settings and redact startup errors (#3788)
* test(policy): reproduce raw OPA loading gaps against the typed schema

The supervisor loads a sandbox policy in two ways: through the typed
schema (parse_sandbox_policy, then from_proto) or directly into OPA
(from_strings and from_files). The raw path fills in defaults where the
typed schema is strict, so the same policy text can produce a different
sandbox configuration, or load when it should be rejected.

Add two regression tests that fail on the current code:

- An empty filesystem_policy loads with include_workdir true through raw
  OPA and false through the typed schema. An absent stanza gives true on
  both paths and must keep doing so.
- Raw OPA accepts a string include_workdir, a non-string read_only entry,
  an unknown Landlock compatibility and an explicit null json_rpc, with
  or without a version key. The typed schema rejects each. Every case has
  a valid twin that both paths must accept.

A follow-up change makes raw loading apply the typed schema's rules.

Refs #3092.

Signed-off-by: Shiju <shiju@nvidia.com>

* fix(policy): align raw OPA loading with typed settings

Validate raw filesystem, Landlock, and process settings with the canonical
authored schema before normalization. Preserve the absent filesystem
default while applying the present-stanza default, and canonicalize valid
Landlock enum representations before runtime evaluation.

Reject explicit null JSON-RPC options through the shared parser. Preserve
versionless and runtime OPA data, and keep rejected reloads from replacing
the active policy or advancing its generation.

Add raw-versus-typed, file-loader, and rejected-reload regressions and
document the local loading contract.

Refs #3092.

Signed-off-by: Shiju <shiju@nvidia.com>

* fix(policy): validate raw OPA settings and redact startup errors

Validate raw network fields through the authored schema before
normalization. Preserve custom Rego data and supported runtime forms.
Apply the shared filesystem path checks and non-root identity predicate
to raw static settings.

Discard authored Rego source and nested errors from static configuration
evaluation. Cover malformed inputs, valid controls, file loading, and
rejected reloads retaining active decisions and generation.

Refs #3092.

Signed-off-by: Shiju <shiju@nvidia.com>

* test(policy): satisfy unit-returning assertion lint

Terminate the two error-assertion match arms with semicolons, as required
by Clippy. Preserve the existing checks and runtime behavior.

Refs #3092.

Signed-off-by: Shiju <shiju@nvidia.com>

---------

Signed-off-by: Shiju <shiju@nvidia.com>
2026-09-30 05:59:31 +00:00
..