Releases: cedar-policy/cedar
Releases · cedar-policy/cedar
v2.4.4
Release 2.4.4, available on crates.io
Cedar Language Version: 2.1.3
Changed
- Calling
add_template
with aPolicyId
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 asprincipal
,then
, andtrue
. (#672, backport of #628)
Full Changelog: v2.4.3...v2.4.4
v3.0.1
v2.4.3
v3.0.0
Release 3.0.0, available on crates.io
Cedar Language Version: 3.0.0
Added
- Marked the
Template::from_json
andTemplate::to_json
apis as public (#458) - New APIs to
Entities
to make it easy to add a collection of entities to an
existingEntities
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 aPartialResponse
. (#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 aTemplate
. (#337)ValidationResult::validation_warnings
to access non-fatal warnings returned
by the validator andValidationResult::validation_passed_without_warnings
.
The main validation entry point now checks for warnings previously only
available throughconfusable_string_checker
. (#404)- The
is
operation as described in
RFC 5.
(#396) Entity::new_no_attrs()
which provides an infallible constructor forEntity
in the case that there are no attributes. (See changes toEntity::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
tocedar_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 overAuthorizationError
s.
(#260)Response::new()
now expects aVec<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, requestcontext
, and records in entity attributes). (#375) Entities::from_*()
methods now automatically add action entities present in
theschema
to the constructedEntities
, if aschema
is provided. (#360)Entities::from_*()
methods now validate the entities against theschema
,
if aschema
is provided. (#360)Entities::from_entities()
andEntities::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 aResult
.
(#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 previouslytrue
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 thefrontend
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
multipleis_authorized
calls). As a result, it returnsResult
, 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 theContext
, and as
a result return errors when evaluation fails. (#430)<EntityId as FromStr>::Error
is nowInfallible
instead ofParseErrors
.
(#372)- Improve the
Display
impls forPolicy
andPolicySet
, and add aDisplay
impl forTemplate
. The displayed representations now more closely match the
original input, whether the input was in string or JSON form. (#167, resolving
#125) ValidationWarning::location
andValidationWarning::to_kind_and_location
now return&SourceLocation<'a>
instead of&'a PolicyID
, matching
ValidationError::location
. (#405)ValidationWarningKind
is nownon_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
v2.4.2
v2.4.1
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 ofFromStr
is no longer marked as deprecated.- Fixed #299, condition of
if
not being partial evaluated. - Update the behavior of
Request::principal()
,Request::action()
, andRequest::resource()
to returnNone
if the entities are unspecified (i.e., constructed by passingNone
toRequest::new()
).
Full Changelog: v2.4.0...v2.4.1
v2.4.0
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 theRecordAttrDoesNotExist
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.
- When an entity type shape or action context is declared with type other than
- 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
isFalse
, 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
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 amemberOf
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
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 thepartial-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 enumSchemaType
. - 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.
- Parsing a schema type without the
Full Changelog: v2.3.1...v2.3.2
v2.3.1
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