pub enum SandboxKind {
Landlock,
Seatbelt,
AppContainer,
MinimalRootfs,
MicroVm,
None,
}Expand description
Which OS-level sandbox actually backs an authorization.
Recorded in every crate::ToolContext and surfaced in every result
envelope so callers can tell whether the leash is kernel-enforced or merely
advisory.
Variants§
Landlock
A real Landlock ruleset is active (Linux). Kernel-enforced.
Seatbelt
A real Seatbelt (sandbox-exec SBPL) profile is active (macOS).
Kernel-enforced against the spawned program’s interior.
AppContainer
A real AppContainer token is active (Windows). Kernel-enforced.
MinimalRootfs
A Linux minimal-rootfs mount-namespace jail is active (ADR 0013 D3/D4,
agent-bridle#109/#108). The process runs in a pivot_root jail that
physically contains only the granted program files, so exec is
kernel-confined by identity — no un-granted binary exists to run or to
ld.so-trampoline into (ADR 0011 D7’s precondition is now physically true,
not asserted) — and the filesystem axes are kernel-confined by the
read-only/read-write bind-mounts. Network is not namespaced at this tier, so
net stays advisory (never overclaimed). Reserved for the minimal-rootfs
mode: a Landlock-only boundary run stays SandboxKind::Landlock (its exec
axis is held — ADR 0011).
MicroVm
A Linux Tier-2 micro-VM is active (ADR 0013 D3, ADR 0009 D2,
agent-bridle#111): the same minimal rootfs booted as a qemu guest under a
separate kernel. Identity is closed as in SandboxKind::MinimalRootfs
(only the granted program exists in the guest) and the filesystem is confined
by the guest boundary; with no guest network device, egress is impossible —
so exec, the fs axes, and net are all kernel-confined, and a
guest-kernel compromise is still contained. The strongest tier.
None
No OS-level sandbox — the leash is in-process/advisory only. This is the honest default on a host with no compiled-and-capable backend.
Trait Implementations§
Source§impl Clone for SandboxKind
impl Clone for SandboxKind
Source§fn clone(&self) -> SandboxKind
fn clone(&self) -> SandboxKind
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 SandboxKind
Source§impl Debug for SandboxKind
impl Debug for SandboxKind
Source§impl Default for SandboxKind
impl Default for SandboxKind
Source§fn default() -> SandboxKind
fn default() -> SandboxKind
Source§impl<'de> Deserialize<'de> for SandboxKind
impl<'de> Deserialize<'de> for SandboxKind
Source§fn deserialize<__D>(
__deserializer: __D,
) -> Result<SandboxKind, <__D as Deserializer<'de>>::Error>where
__D: Deserializer<'de>,
fn deserialize<__D>(
__deserializer: __D,
) -> Result<SandboxKind, <__D as Deserializer<'de>>::Error>where
__D: Deserializer<'de>,
impl Eq for SandboxKind
Source§impl PartialEq for SandboxKind
impl PartialEq for SandboxKind
Source§impl Serialize for SandboxKind
impl Serialize for SandboxKind
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 SandboxKind
Auto Trait Implementations§
impl Freeze for SandboxKind
impl RefUnwindSafe for SandboxKind
impl Send for SandboxKind
impl Sync for SandboxKind
impl Unpin for SandboxKind
impl UnsafeUnpin for SandboxKind
impl UnwindSafe for SandboxKind
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<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