Skip to content

Releases: cedar-policy/cedar

v2.4.4

08 Mar 12:54
ac741c5
Compare
Choose a tag to compare

Release 2.4.4, available on crates.io

Cedar Language Version: 2.1.3

Changed

  • Calling add_template with a PolicyId that is an existing link will now error. (#671, backport of #456)

Fixed

  • Updated PolicySet::link to not mutate internal state when failing to link a static
    policy. With this fix it is possible to create a link with a policy id
    after previously failing to create that link with the same id from a static
    policy. (#669, backport of #412)
  • Action entities in the store will pass schema-based validation without requiring
    the transitive closure to be pre-computed. (#688, backport of #581)
  • Policies containing the literal i64::MIN can now be properly converted to the JSON policy format. (#672, backport of #601)
  • Template::from_json errors when there are slots in template conditions. (#672, backport of #626)
  • Policy::to_json does not error on policies containing special identifiers such as principal, then, and true. (#672, backport of #628)

Full Changelog: v2.4.3...v2.4.4

v3.0.1

21 Dec 21:46
7795131
Compare
Choose a tag to compare

This release is available on crates.io.

What's Changed

  • A bugfix involving create an empty Context object when stack space is low

Full changelog: here

v2.4.3

21 Dec 15:06
1ce81ec
Compare
Choose a tag to compare

Release 2.4.3, available on crates.io

v3.0.0

15 Dec 18:06
0258a81
Compare
Choose a tag to compare

Release 3.0.0, available on crates.io

Cedar Language Version: 3.0.0

Added

  • Marked the Template::from_json and Template::to_json apis as public (#458)
  • New APIs to Entities to make it easy to add a collection of entities to an
    existing Entities structure. (#276)
  • Export the cedar_policy_core::evaluator::{EvaluationError, EvaluationErrorKind} and
    cedar_policy_core::authorizer::AuthorizationError error types. (#260, #271)
  • ParseError::primary_source_span to get the primary source span locating an
    error. (#324)
  • Experimental API PolicySet::unknown_entities to collect unknown entity UIDs
    from a PartialResponse. (#353, resolving #321)
  • PolicySet::remove_static, PolicySet::remove_template and
    PolicySet::unlink to remove policies from the policy set. (#337, resolving #328)
  • PolicySet::get_linked_policies to get the policies linked to a Template. (#337)
  • ValidationResult::validation_warnings to access non-fatal warnings returned
    by the validator and ValidationResult::validation_passed_without_warnings.
    The main validation entry point now checks for warnings previously only
    available through confusable_string_checker. (#404)
  • The is operation as described in
    RFC 5.
    (#396)
  • Entity::new_no_attrs() which provides an infallible constructor for Entity
    in the case that there are no attributes. (See changes to Entity::new()
    below.) (#430)
  • RestrictedExpression::new_entity_uid() (#442, resolving #350)

Changed

  • Rename cedar_policy_core::est::EstToAstError to
    cedar_policy_core::est::FromJsonError. (#197)
  • Rename cedar_policy_core::entities::JsonDeserializationError::ExtensionsError
    to cedar_policy_core::entities::JsonDeserializationError::ExtensionFunctionLookup.
    (#360)
  • Rename variants in SchemaError. (#231)
  • SchemaError has a new variant corresponding to errors evaluating action
    attributes. (#430)
  • Diagnostics::errors() now returns an iterator over AuthorizationErrors.
    (#260)
  • Response::new() now expects a Vec<AuthorizationError> as its third
    argument. (#260)
  • Implement RFC 19,
    making validation slightly more strict, but more explainable. (#282)
  • Implement RFC 20,
    disallowing duplicate keys in record values (including record literals in
    policies, request context, and records in entity attributes). (#375)
  • Entities::from_*() methods now automatically add action entities present in
    the schema to the constructed Entities, if a schema is provided. (#360)
  • Entities::from_*() methods now validate the entities against the schema,
    if a schema is provided. (#360)
  • Entities::from_entities() and Entities::add_entities() now take an
    optional schema argument. (#360)
  • Request::new() now takes an optional schema argument, and validates the request
    against that schema. To signal validation errors, it now returns a Result.
    (#393, resolving #191)
  • Change the semantics of equality for IP ranges. For example,
    ip("192.168.0.1/24") == ip("192.168.0.3/24") was previously true and is now
    false. The behavior of equality on single IP addresses is unchanged, and so is
    the behavior of .isInRange(). (#348)
  • Standardize on duplicates being errors instead of last-write-wins in the
    JSON-based APIs in the frontend module. This also means some error types
    have changed. (#365, #448)
  • Entity::new() now eagerly evaluates entity attributes, leading to
    performance improvements (particularly when entity data is reused across
    multiple is_authorized calls). As a result, it returns Result, because
    attribute evaluation can fail. (#430)
  • Entities::from_json_*() also now eagerly evaluates entity attributes, and as
    a result returns errors when attribute evaluation fails. (#430)
  • Entity::attr() now returns errors in many fewer cases (because the attribute
    is stored in already-evaluated form), and its error type has changed. (#430)
  • Context::from_*() methods also now eagerly evaluate the Context, and as
    a result return errors when evaluation fails. (#430)
  • <EntityId as FromStr>::Error is now Infallible instead of ParseErrors.
    (#372)
  • Improve the Display impls for Policy and PolicySet, and add a Display
    impl for Template. The displayed representations now more closely match the
    original input, whether the input was in string or JSON form. (#167, resolving
    #125)
  • ValidationWarning::location and ValidationWarning::to_kind_and_location
    now return &SourceLocation<'a> instead of &'a PolicyID, matching
    ValidationError::location. (#405)
  • ValidationWarningKind is now non_exhaustive, allowing future warnings to
    be added without a breaking change. (#404)
  • Improve schema parsing error messages when a cycle exists in the action
    hierarchy to includes an action which is part of the cycle (#436, resolving
    #416).

Fixed

  • Evaluation order of operand to > and >=. They now evaluate left to right,
    matching all other operators. This affects what error is reported when there is
    an evaluation error in both operands, but does not otherwise change the result
    of evaluation. (#402, resolving #112)
  • Updated PolicySet::link to not mutate internal state when failing to link a static
    policy. With this fix it is possible to create a link with a policy id
    after previously failing to create that link with the same id from a static
    policy. (#412)
  • Fixed schema-based parsing of entity data that includes unknowns (for the
    partial-eval experimental feature). (#419, resolving #418)

Removed

  • Removed __expr escape from Cedar JSON formats, which has been deprecated
    since Cedar 1.2. (#333)
  • Move ValidationMode::Permissive behind an experimental feature flag.
    To continue using this feature you must enable the permissive-validate
    feature flag. (#428)

v2.4.2

23 Oct 20:00
424e67a
Compare
Choose a tag to compare

Release 2.4.2, available on crates.io

Cedar Language Version: 2.1.2

Changed

  • Fixed bug (#370) related to how the validator handles template-linked policies

Full Changelog: v2.4.1...v2.4.2

v2.4.1

12 Oct 19:29
071d0ac
Compare
Choose a tag to compare

Release 2.4.1, available on crates.io

Cedar Language Version: 2.1.1

Added

  • New experimental API to construct queries with Unknown fields for partial evaluation.

Changed

  • Improved validation error messages for access to undeclared attributes and unsafe access to optional attributes to report the target of the access (fix #175).
  • EntityUid's impl of FromStr is no longer marked as deprecated.
  • Fixed #299, condition of if not being partial evaluated.
  • Update the behavior of Request::principal(), Request::action(), and Request::resource() to return None if the entities are unspecified (i.e., constructed by passing None to Request::new()).

Full Changelog: v2.4.0...v2.4.1

v2.4.0

21 Sep 14:16
660694f
Compare
Choose a tag to compare

Release 2.4.0, available on crates.io

Cedar Language Version: 2.1.1

Added

  • New methods exported for EntityTypeName.
    • basename to get the basename (without namespaces).
    • namespace_components to get the namespace as an iterator over its components.
    • namespace to get the namespace as a single string.

Changed

  • Some error types now carry more information about the error, with error
    messages updated appropriately. For instance, added list of attributes that do
    exist to the RecordAttrDoesNotExist error message.
  • Improved error messages for some schema type parsing errors.
    • When an entity type shape or action context is declared with type other than
      Record, the error message will indicated the affected entity type or action.
  • Improved a variety of other error messages
  • Increased precision for validating records. Previously,
    permit(principal, action, resource) when {{"foo": 5} has bar}; would validate.
    Now it will not, since we know {"foo": 5} has bar is False, and the
    validator will return an error for a policy that can never fire.
  • Removed deprecated __expr escapes from integration tests.

Full Changelog: v2.3.3...v2.4.0

v.2.3.3

29 Aug 17:24
9be167e
Compare
Choose a tag to compare

Release 2.3.3, available on crates.io

What's Changed

Added

  • Re-export cedar_policy_core::entities::EntitiesError.
  • Fixed bug (#150) around implicit namespaces for actions in memberOf lists in
    schemas. An action without an explicit namespace in a memberOf now
    correctly uses the default namespace.

Changed

  • Improved error messages and documentation for some errors raised during
    policy parsing, validation, and evaluation.
  • More precise "expected tokens" lists in some parse errors.

Full Changelog: v2.3.2...v2.3.3

v2.3.2

04 Aug 20:07
e232995
Compare
Choose a tag to compare

Release 2.3.2, available on crates.io

What's Changed

Removed

  • Move public API for partial evaluation behind experimental feature flag. To
    continue using this feature you must enable the partial-eval feature flag.

Changed

  • Improved error detection in schema based parsing (fix issues #73, #74).
    • Detect entities with parents of an incorrect entity type.
    • Detect entities with an undeclared entity type.
  • Slightly improved error text on some validation type errors
  • Improved error messages for some schema type parsing errors
    • Parsing a schema type without the "type" field will generate an error
      stating that "type" is a required field instead of an inscrutable error
      complaining about the untagged enum SchemaType.
    • Parsing a schema type with a "type" field corresponding to one of the
      builtin types but missing a required field for that type will generate an
      error stating that a required field is missing instead of claiming that it
      could not find "common types" definition for that builtin type.

Full Changelog: v2.3.1...v2.3.2

v2.3.1

20 Jul 17:52
02da3ed
Compare
Choose a tag to compare

Release 2.3.1, available on crates.io

What's Changed

Fixed

  • Fix a panic in PolicySet::link() that could occur when the function was called
    with a policy id corresponding to a static policy.

Full Changelog: v2.3.0...v2.3.1