pub struct PolicyEngine { /* private fields */ }Expand description
Policy engine with a read-through cache backed by SQLite.
Implementations§
Source§impl PolicyEngine
impl PolicyEngine
Sourcepub fn new(pool: SqlitePool, config: Arc<GuardConfig>) -> Self
pub fn new(pool: SqlitePool, config: Arc<GuardConfig>) -> Self
Creates a new policy engine.
Sourcepub async fn evaluate(&self, ctx: &EvalContext) -> GuardResult<PolicyDecision>
pub async fn evaluate(&self, ctx: &EvalContext) -> GuardResult<PolicyDecision>
Evaluates enabled policies in descending priority order.
Sourcepub fn compute_risk(&self, ctx: &EvalContext) -> f64
pub fn compute_risk(&self, ctx: &EvalContext) -> f64
Computes a risk score for the provided context.
Sourcepub async fn load_from_dir(&self, dir: &Path) -> GuardResult<usize>
pub async fn load_from_dir(&self, dir: &Path) -> GuardResult<usize>
Loads all TOML policy files from a directory and upserts them into SQLite.
Sourcepub async fn add_policy_from_toml(
&self,
source: &str,
fallback_name: &str,
) -> GuardResult<Policy>
pub async fn add_policy_from_toml( &self, source: &str, fallback_name: &str, ) -> GuardResult<Policy>
Parses one TOML source string and upserts the contained policies.
Sourcepub async fn list_policies(&self) -> GuardResult<Vec<Policy>>
pub async fn list_policies(&self) -> GuardResult<Vec<Policy>>
Lists persisted policies in evaluation order.
Sourcepub async fn remove_policy(&self, policy_id: Uuid) -> GuardResult<()>
pub async fn remove_policy(&self, policy_id: Uuid) -> GuardResult<()>
Removes a policy by id.
Trait Implementations§
Source§impl Clone for PolicyEngine
impl Clone for PolicyEngine
Source§fn clone(&self) -> PolicyEngine
fn clone(&self) -> PolicyEngine
Returns a duplicate of the value. Read more
1.0.0 · Source§fn clone_from(&mut self, source: &Self)
fn clone_from(&mut self, source: &Self)
Performs copy-assignment from
source. Read moreAuto Trait Implementations§
impl Freeze for PolicyEngine
impl !RefUnwindSafe for PolicyEngine
impl Send for PolicyEngine
impl Sync for PolicyEngine
impl Unpin for PolicyEngine
impl UnsafeUnpin for PolicyEngine
impl !UnwindSafe for PolicyEngine
Blanket Implementations§
Source§impl<T> BorrowMut<T> for Twhere
T: ?Sized,
impl<T> BorrowMut<T> for Twhere
T: ?Sized,
Source§fn borrow_mut(&mut self) -> &mut T
fn borrow_mut(&mut self) -> &mut T
Mutably borrows from an owned value. Read more
Source§impl<T> CloneToUninit for Twhere
T: Clone,
impl<T> CloneToUninit for Twhere
T: Clone,
Source§impl<T> Instrument for T
impl<T> Instrument for T
Source§fn instrument(self, span: Span) -> Instrumented<Self>
fn instrument(self, span: Span) -> Instrumented<Self>
Source§fn in_current_span(self) -> Instrumented<Self>
fn in_current_span(self) -> Instrumented<Self>
Source§impl<T> IntoEither for T
impl<T> IntoEither for T
Source§fn into_either(self, into_left: bool) -> Either<Self, Self>
fn into_either(self, into_left: bool) -> Either<Self, Self>
Converts
self into a Left variant of Either<Self, Self>
if into_left is true.
Converts self into a Right variant of Either<Self, Self>
otherwise. Read moreSource§fn into_either_with<F>(self, into_left: F) -> Either<Self, Self>
fn into_either_with<F>(self, into_left: F) -> Either<Self, Self>
Converts
self into a Left variant of Either<Self, Self>
if into_left(&self) returns true.
Converts self into a Right variant of Either<Self, Self>
otherwise. Read moreSource§impl<T> IntoRequest<T> for T
impl<T> IntoRequest<T> for T
Source§fn into_request(self) -> Request<T>
fn into_request(self) -> Request<T>
Wrap the input message
T in a tonic::Request