package policy import _ "embed" // ReferenceRego is the canonical Rego policy bundled with zddc-server. // It mirrors the InternalDecider's semantics exactly — every release CI // run validates parity via parity_test.go (which imports the OPA library // as a test-only dependency, so the production binary stays OPA-free). // // Operators running an external OPA can use this as the starting point // for their own policy bundle: // // zddc-server --print-rego > /etc/opa/policies/zddc-access.rego // // Customizations typical for federal deployments: // // - Flip the leaf-allow-overrides-parent-deny semantics so parent denies // are absolute (NIST AC-6 least-privilege posture). For this specific // case zddc-server ships a parity-tested federal-mode variant; see // FederalRego and `--print-rego=federal`. // - Add role-based access via additional input fields (input.user.roles // populated by the upstream proxy from SAML/OIDC claims). // - Add time-of-day or IP-range constraints. // - Emit decision logs in a SIEM-friendly format via OPA's logging // plugins. // //go:embed rego/access.rego var ReferenceRego string // FederalRego is the strict-least-privilege variant of ReferenceRego // where parent denies are absolute (NIST AC-6). Drop-in for federal // customers who need the AC-6 posture without writing Rego from // scratch: // // zddc-server --print-rego=federal > /etc/opa/policies/zddc-access.rego // // The internal Go evaluator does NOT implement these semantics — it // stays on the commercial cascade. Federal-mode is reachable only by // running OPA with this policy and pointing ZDDC_OPA_URL at it. See // zddc/internal/policy/rego/access_federal.rego for the policy itself // and federal_parity_test.go for the divergence-test fixtures (cases // where federal-mode and commercial-mode disagree, asserting each gives // the expected verdict). // //go:embed rego/access_federal.rego var FederalRego string