Skip to content

[Authorization] Enforce policy in API admission and execution-time reauthorization #24

Closed

Description

@gnanirahulnutakki

Outcome

Prevent both admission-time and stale-authority execution bypasses.

Scope

  • Enforce authentication, scope, policy, quota, and relevant reauthorization before persistence and provider side effects.

Acceptance criteria

  • Denied requests cause no resource or queue mutation.
  • Plans bind the actor and policy decision version.
  • Revoked or stale authority blocks execution according to documented rules.

Test and evidence

  • PR #122 merged the hierarchy-sealed PolicySet runtime at exact head 685cfe294a1e753f07f9f5c1cb06a3f27eb12b59.
  • The exact head passed the full repository gate, full Go race detector, 100 focused authorization repetitions, the 80% coverage floor, 139 threat-model negative fixtures, and the black-box contract suite.
  • Admission, replay-epoch, delete-tombstone, policy-drift, generation-drift, membership-revocation, per-row pagination, and execution/revocation race tests are retained in the repository.

Dependencies

  • Blocked by #23.
  • Blocked by #21.

References

Activity

  1. added
    priority:p0Critical prerequisite or correctness boundary
    area:securityIdentity, authorization, isolation, credentials, and audit
    on Sep 1, 2026
  2. gnanirahulnutakki commented on Sep 12, 2026

    @gnanirahulnutakki
    MemberAuthor

    Acceptance clarification and implementation start

    Exact start state:

    Clarified executable acceptance:

    • Replace the reference harness's action-only allow-list at runtime with target-aware evaluation of the accepted veer.authorization.v1alpha1 PolicySet.
    • Resolve each retained resource or Operation from authoritative process-local state before evaluating it. Workspace lists use per-retained-row evaluation before pagination and disclosure.
    • Return a stable denial without invoking the mutation callback; add admission/revocation race tests proving denied or stale authority cannot mutate resource or Operation state.
    • Carry the exact authenticated actor and canonical decision into the existing immutable Plan contract, which binds actor fingerprint, policy version, and authorization-input digest.
    • Re-evaluate from current authoritative state before execution proof. Revocation, denial, or policy/input-version drift must fail closed before any provider-side-effect boundary.
    • Preserve ADR 0009: tenant policy cannot create a Workspace or replace resource status. The loopback harness may be pre-seeded deterministically for testing, but it will not invent platform bootstrap or controller authority.
    • Retain current request/body/idempotency/capacity bounds. No provider quota is applicable because this lane performs no provider execution; plan quota/cost evidence and durable enforcement remain with their dependency-ordered planning/execution issues.
    • Do not claim production OIDC, durable persistence, queue atomicity, audit durability, cross-process fencing, or provider execution.

    Required evidence remains ./hack/dev check, complete race and coverage gates, black-box allow/deny tests on a real listener, static/security/dependency scans, exact-head hosted checks, resolved review threads, and exact-main post-merge CI.

    Submitted on behalf of @ArdurAI. Contact: info@ardur.ai.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    area:securityIdentity, authorization, isolation, credentials, and auditpriority:p0Critical prerequisite or correctness boundary

    Type

    Projects

    No projects

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions