pub struct Policy {
pub version: u32,
pub defaults: Defaults,
pub scope: Option<Scope>,
pub deny: Vec<RuleGroup>,
pub allow: Vec<RuleGroup>,
pub ask: Vec<RuleGroup>,
pub approval: Option<Approval>,
pub executables: BTreeMap<String, Vec<String>>,
pub sandbox: Option<SandboxSettings>,
pub secrets: Vec<Secret>,
pub taint: Option<TaintSettings>,
pub repo_ask: Vec<RuleGroup>,
}Expand description
The policy document (policy.yaml), as written by users.
Fields§
§version: u32Schema version; only 1 is supported.
defaults: DefaultsVerdict when no rule matches.
scope: Option<Scope>Reserved for multi-root projects; parsed so existing files stay valid,
not yet consulted (policy lint warns).
deny: Vec<RuleGroup>Evaluated first; a match is final.
allow: Vec<RuleGroup>Evaluated after deny.
ask: Vec<RuleGroup>Evaluated after allow.
approval: Option<Approval>Reserved for the kernel’s own approval prompt; parsed so existing files
stay valid, not yet consulted (policy lint warns).
executables: BTreeMap<String, Vec<String>>Basename → allowed absolute paths (defeats PATH poisoning).
sandbox: Option<SandboxSettings>What the operating-system layers OpenMoat configures need beyond the rules (ADR-018). Absent in policies written before it existed.
secrets: Vec<Secret>Secrets moat proxy keeps from the agent and injects for one host each.
taint: Option<TaintSettings>What session taint protects beyond the built-in list. Absent in older policies.
repo_ask: Vec<RuleGroup>Ask rules merged in from a repository policy (crate::RepoPolicy,
ADR-022). Tried after deny and before allow, so a repository can make
an action the user allows ask. Never read from or written to a file, and
not lowered to OS layers, which are generated from the user policy alone.
Implementations§
Source§impl Policy
impl Policy
Sourcepub fn parse(yaml: &str) -> Result<Self, PolicyError>
pub fn parse(yaml: &str) -> Result<Self, PolicyError>
Parse and lint a policy document. Pure: takes the YAML text.
Sourcepub fn lint(&self) -> Result<(), PolicyError>
pub fn lint(&self) -> Result<(), PolicyError>
Structural validation independent of any environment.
Sourcepub fn rule_count(&self) -> (usize, usize, usize)
pub fn rule_count(&self) -> (usize, usize, usize)
Number of rule groups in deny, allow and ask.
Trait Implementations§
Source§impl<'de> Deserialize<'de> for Policy
impl<'de> Deserialize<'de> for Policy
Source§fn deserialize<__D>(__deserializer: __D) -> Result<Self, __D::Error>where
__D: Deserializer<'de>,
fn deserialize<__D>(__deserializer: __D) -> Result<Self, __D::Error>where
__D: Deserializer<'de>,
impl Eq for Policy
impl StructuralPartialEq for Policy
Auto Trait Implementations§
impl Freeze for Policy
impl RefUnwindSafe for Policy
impl Send for Policy
impl Sync for Policy
impl Unpin for Policy
impl UnsafeUnpin for Policy
impl UnwindSafe for Policy
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
Source§impl<T> CloneToUninit for Twhere
T: Clone,
impl<T> CloneToUninit for Twhere
T: Clone,
impl<T> DeserializeOwned for Twhere
T: for<'de> Deserialize<'de>,
Source§impl<Q, K> Equivalent<K> for Q
impl<Q, K> Equivalent<K> for Q
Source§impl<Q, K> Equivalent<K> for Q
impl<Q, K> Equivalent<K> for Q
Source§fn equivalent(&self, key: &K) -> bool
fn equivalent(&self, key: &K) -> bool
key and return true if they are equal.