Documentation

Cedar.Thm.BatchedEvaluator.Authorize

Soundness of batched authorization: if the batched authorizer reaches a definitive decision, that decision agrees with the concrete authorizer.

If evaluatePolicy succeeds on a concrete request, and the schema and entities pass validation, then InstanceOfWellFormedEnvironment holds for the environment determined by the schema and request.

Equations
  • One or more equations did not get rendered due to their size.
Instances For
    theorem Cedar.Thm.equiv_well_typed_implies_equiv {env : Validation.TypeEnv} {policies : List Spec.Policy} {residuals : List TPE.ResidualPolicy} {req : Spec.Request} {es : Spec.Entities} (h : ResidualPoliciesEquivAndWellTyped env policies residuals req es) :
    ResidualPoliciesEquiv policies residuals req es
    theorem Cedar.Thm.residuals_equiv_preserved {env : Validation.TypeEnv} {policies : List Spec.Policy} {residuals : List TPE.ResidualPolicy} {req : Spec.Request} {es : Spec.Entities} {pes : TPE.PartialEntities} (h_sound : ResidualPoliciesEquivAndWellTyped env policies residuals req es) (h_wf : InstanceOfWellFormedEnvironment req es env) (h_ref : RequestAndEntitiesRefine req es req.asPartialRequest pes) :
    ResidualPoliciesEquivAndWellTyped env policies (List.map (fun (rp : TPE.ResidualPolicy) => { id := rp.id, effect := rp.effect, residual := TPE.evaluate env rp.residual req.asPartialRequest pes }) residuals) req es
    theorem Cedar.Thm.batched_authorize_loop_equiv {loader : TPE.EntityLoader} {iters : Nat} {policies : List Spec.Policy} {residuals : List TPE.ResidualPolicy} {req : Spec.Request} (es : Spec.Entities) {current_store : TPE.PartialEntities} {env : Validation.TypeEnv} :
    EntityLoader.WellBehaved es loader → ResidualPoliciesEquivAndWellTyped env policies residuals req es → RequestAndEntitiesRefine req es req.asPartialRequest current_store → InstanceOfWellFormedEnvironment req es env → ∃ (rps : List TPE.ResidualPolicy), TPE.batchedAuthorizeLoop env residuals req loader current_store iters = TPE.isAuthorizedFromResiduals rps ∧ ResidualPoliciesEquivAndWellTyped env policies rps req es

    The loop's response is isAuthorizedFromResiduals of a list still equivalent to the policies.

    theorem Cedar.Thm.batched_authorize_loop_decision_agrees {loader : TPE.EntityLoader} {iters : Nat} {policies : List Spec.Policy} {residuals : List TPE.ResidualPolicy} {req : Spec.Request} (es : Spec.Entities) {current_store : TPE.PartialEntities} {env : Validation.TypeEnv} {d : Spec.Decision} :
    EntityLoader.WellBehaved es loader → ResidualPoliciesEquivAndWellTyped env policies residuals req es → RequestAndEntitiesRefine req es req.asPartialRequest current_store → InstanceOfWellFormedEnvironment req es env → (TPE.batchedAuthorizeLoop env residuals req loader current_store iters).decision = some d → (Spec.isAuthorized req es policies).decision = d

    The loop's decision agrees with concrete authorization.