cedar_policy_core

Module ast

Source
Expand description

This module contains the AST datatypes.

Modules§

Structs§

  • Struct which holds the value of a particular annotation
  • Struct which holds the annotations for a policy
  • Like Id, except this specifically can contain Cedar reserved identifiers. (It still can’t contain, for instance, spaces or characters like ‘+’.)
  • A borrowed version of LiteralPolicy exclusively for serialization
  • While RestrictedExpr wraps an owned Expr, BorrowedRestrictedExpr wraps a borrowed Expr, with the same invariants.
  • The PartialValue is a residual, i.e., contains an unknown
  • The Eid type represents the id of an Entity, without the typename. Together with the typename it comprises an EntityUID. For example, in User::"alice", the Eid is alice.
  • Entity datatype
  • Error type for evaluation errors when evaluating an entity attribute or tag. Contains some extra contextual information and the underlying EvaluationError.
  • Entity type names are just Names, but we have some operations on them specific to entity types.
  • Unique ID for an entity. These represent entities in the AST.
  • Internal AST for expressions used by the policy evaluator. This structure is a wrapper around an ExprKind, which is the expression variant this object contains. It also contains source information about where the expression was written in policy source code, and some generic data which is stored on each node of the AST. Cloning is O(1).
  • Builder for constructing Expr objects annotated with some data (possibly taking default value) and optionally a source_loc.
  • This structure implements the iterator used to traverse subexpressions of an expression.
  • A new type wrapper around Expr that provides Eq and Hash implementations that ignore any source information or other generic data used to annotate the Expr.
  • Cedar extension.
  • Extension function. These can be called by the given name in Ceder expressions.
  • Object container for extension values, also stores the constructor-and-args that can reproduce the value (important for converting the value back to RestrictedExpr for instance)
  • Identifiers. Anything in Id should be a valid identifier, this means it does not contain, for instance, spaces or characters like ‘+’; and also is not one of the Cedar reserved identifiers (at time of writing, true | false | if | then | else | in | is | like | has).
  • Wrapper around std::convert::Infallible which also implements miette::Diagnostic
  • Represents the name of an entity type, function, etc. The name may include namespaces. Clone is O(1).
  • Wraps the BTreeMap` into an opaque type so we can change it later if need be
  • Represents either an static policy or a template linked policy This is the serializable version because it simply refers to the Template by its Id;
  • A new type which indicates that the contained InternalName does not contain reserved __cedar, as specified by RFC 52. This represents names which are legal for end-users to define, while InternalName represents names which are legal for end-users to reference.
  • PartialValue, but serialized as a RestrictedExpr.
  • Represent a pattern literal (the RHS of the like operator) Also provides an implementation of the Display trait as well as a wildcard matching method.
  • A Policy that contains: a pointer to its template an link ID (unless it’s an static policy) the bound values for slots in the template
  • A unique identifier for a policy statement
  • Represents a set of Policys
  • Template constraint on principal scope variables
  • Represents the request tuple <P, A, R, C> (see the Cedar design doc).
  • A RequestSchema that does no validation and always reports a passing result
  • Represents the principal type, resource type, and action UID.
  • Error when a reserved name is used where it is not allowed
  • Template constraint on resource scope variables
  • A few places in Core use these “restricted expressions” (for lack of a better term) which are in some sense the minimal subset of Expr required to express all possible Values.
  • Like ExprShapeOnly, but for restricted expressions.
  • Value’s internal representation of a Set
  • SlotId plus a source location
  • Identifier for a slot Clone is O(1).
  • Static Policies are policy that do not come from templates. They have the same structure as a template definition, but cannot contain slots
  • Top level structure for a policy template. Contains both the AST for template, and the list of open slots in the template.
  • Policy datatype. This is used for both templates (in which case it contains slots) and static policies (in which case it contains zero slots).
  • Representation of a partial-evaluation Unknown at the AST level
  • An Id that is not equal to __cedar, as specified by RFC 52
  • This describes all the values which could be the dynamic result of evaluating an Expr. Cloning is O(1).

Enums§

Statics§

Traits§

  • Extension value.
  • Extensions provide a type implementing ExtensionValue, Eq, and Ord. We automatically implement InternalExtensionValue for that type (with the impl below). Internally, we use dyn InternalExtensionValue instead of dyn ExtensionValue.
  • Trait for schemas capable of validating Requests
  • Trait for everything in Cedar that has a type known statically.

Functions§

  • Collect an iterator of either residuals or values into one of the following a) An iterator over values, if everything evaluated to values b) An iterator over residuals expressions, if anything only evaluated to a residual Order is preserved.

Type Aliases§

  • Trait object that implements the extension function call.
  • The integer type we use when parsing input
  • The integer types we use (both internally and for parsing). By default this is i64, but you may change to some suitable Integer type. If you do change this, some tests for over/underflow will need to change as well. The integer type we use internally
  • Map from Slot Ids to Entity UIDs which fill the slots