pub enum AxisEnforcement {
Kernel,
Interceptor,
Advisory,
}Expand description
How a single restricted Caveat axis is actually enforced for a run (ADR 0004 D1).
Variants§
Kernel
An OS ruleset enforces this axis against the spawned program’s
interior (e.g. Landlock on fs_write). The strongest claim.
exec → kernel is about identity, not behavior (ADR 0013 D6 /
agent-bridle#114). It means “no un-granted program can run as a
process” — via Seatbelt process-exec* (ADR 0014), or a Linux minimal
rootfs that physically excludes un-granted binaries (ADR 0013). It does
NOT mean a granted program — especially a granted interpreter
(sh, python, perl) — is constrained in what it does: its interior
logic is still bounded only by the fs_read/fs_write/net axes (read
those for the data-side guarantee). Do not read exec → kernel as “this
program will only do what I expect.”
Interceptor
The in-process L2 leash gates this axis at the spawn/open chokepoint —
it holds for the engine’s own operations, not for a permitted
external child’s interior (a find -exec child’s reads escape it).
Advisory
Validated at admission, then ambient — nothing backstops the spawned interior. Honest “we checked the request, we cannot confine the effect.”
Trait Implementations§
Source§impl Clone for AxisEnforcement
impl Clone for AxisEnforcement
Source§fn clone(&self) -> AxisEnforcement
fn clone(&self) -> AxisEnforcement
1.0.0 (const: unstable) · Source§fn clone_from(&mut self, source: &Self)
fn clone_from(&mut self, source: &Self)
source. Read moreimpl Copy for AxisEnforcement
Source§impl Debug for AxisEnforcement
impl Debug for AxisEnforcement
Source§impl<'de> Deserialize<'de> for AxisEnforcement
impl<'de> Deserialize<'de> for AxisEnforcement
Source§fn deserialize<__D>(
__deserializer: __D,
) -> Result<AxisEnforcement, <__D as Deserializer<'de>>::Error>where
__D: Deserializer<'de>,
fn deserialize<__D>(
__deserializer: __D,
) -> Result<AxisEnforcement, <__D as Deserializer<'de>>::Error>where
__D: Deserializer<'de>,
impl Eq for AxisEnforcement
Source§impl Ord for AxisEnforcement
impl Ord for AxisEnforcement
Source§fn cmp(&self, other: &AxisEnforcement) -> Ordering
fn cmp(&self, other: &AxisEnforcement) -> Ordering
1.21.0 (const: unstable) · Source§fn max(self, other: Self) -> Selfwhere
Self: Sized,
fn max(self, other: Self) -> Selfwhere
Self: Sized,
1.21.0 (const: unstable) · Source§fn min(self, other: Self) -> Selfwhere
Self: Sized,
fn min(self, other: Self) -> Selfwhere
Self: Sized,
Source§impl PartialEq for AxisEnforcement
impl PartialEq for AxisEnforcement
Source§impl PartialOrd for AxisEnforcement
impl PartialOrd for AxisEnforcement
Source§impl Serialize for AxisEnforcement
impl Serialize for AxisEnforcement
Source§fn serialize<__S>(
&self,
__serializer: __S,
) -> Result<<__S as Serializer>::Ok, <__S as Serializer>::Error>where
__S: Serializer,
fn serialize<__S>(
&self,
__serializer: __S,
) -> Result<<__S as Serializer>::Ok, <__S as Serializer>::Error>where
__S: Serializer,
impl StructuralPartialEq for AxisEnforcement
Auto Trait Implementations§
impl Freeze for AxisEnforcement
impl RefUnwindSafe for AxisEnforcement
impl Send for AxisEnforcement
impl Sync for AxisEnforcement
impl Unpin for AxisEnforcement
impl UnsafeUnpin for AxisEnforcement
impl UnwindSafe for AxisEnforcement
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
impl<ST, DT> CastableFrom<ST, Initialized, Initialized> for DT
impl<ST, DT> CastableFrom<ST, Uninit, Uninit> for DT
Source§impl<T> CloneToUninit for Twhere
T: Clone,
impl<T> CloneToUninit for Twhere
T: Clone,
Source§impl<Q, K> Comparable<K> for Q
impl<Q, K> Comparable<K> for Q
Source§impl<F, T> ConvertInto<T> for Fwhere
T: ConvertFrom<F>,
impl<F, T> ConvertInto<T> for Fwhere
T: ConvertFrom<F>,
Source§fn convert_into(self) -> T
fn convert_into(self) -> T
Self to a value of type T.Source§impl<F, T> ConvertTryFrom<F> for Twhere
F: ConvertInto<T>,
impl<F, T> ConvertTryFrom<F> for Twhere
F: ConvertInto<T>,
Source§impl<F, T> ConvertTryInto<T> for Fwhere
T: ConvertTryFrom<F>,
impl<F, T> ConvertTryInto<T> for Fwhere
T: ConvertTryFrom<F>,
Source§type Error = <T as ConvertTryFrom<F>>::Error
type Error = <T as ConvertTryFrom<F>>::Error
Source§fn convert_try_into(self) -> Result<T, <T as ConvertTryFrom<F>>::Error>
fn convert_try_into(self) -> Result<T, <T as ConvertTryFrom<F>>::Error>
Self to a value of type T.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.impl<T> ErasedDestructor for Twhere
T: 'static,
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> ⓘ
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> ⓘ
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 more