pub enum EgressNamespaceBlocker {
CapabilityGrantMissing,
KernelSupportMissing,
CreatorUnavailable,
}Expand description
Which remediation an EgressNamespaceFailure calls for.
Not an EnforcementTier variant and not tied to ContainmentClass: a network
namespace is required for every Linux capsule that can spawn a subprocess, at every
containment class, so hanging it off the class ladder would make advisory capsules silently
exempt from this boundary.
Variants§
CapabilityGrantMissing
The kernel implements unprivileged user namespaces and something on this host refused one
to mur: AppArmor’s unprivileged-userns restriction, another AppArmor profile confining
mur, a container runtime’s seccomp filter or capabilities, or another security module.
The refusal came at unshare, or after it while the namespace was owned or configured.
KernelSupportMissing
The kernel does not provide the mechanism: unshare failed with ENOSPC
(user.max_user_namespaces), EINVAL or ENOSYS (CONFIG_USER_NS=n), or EUSERS (the
nesting limit).
The runtime could not run the namespace creator, or the creator stopped without reporting a step — a process or descriptor limit, memory, or a policy that killed it — so the host’s answer is unknown. Refused like the other two: a namespace nobody could create is a namespace the capsule does not get.
Trait Implementations§
Source§impl Clone for EgressNamespaceBlocker
impl Clone for EgressNamespaceBlocker
impl Copy for EgressNamespaceBlocker
Source§impl Debug for EgressNamespaceBlocker
impl Debug for EgressNamespaceBlocker
impl Eq for EgressNamespaceBlocker
Source§impl Hash for EgressNamespaceBlocker
impl Hash for EgressNamespaceBlocker
Source§impl PartialEq for EgressNamespaceBlocker
impl PartialEq for EgressNamespaceBlocker
Source§impl Serialize for EgressNamespaceBlocker
impl Serialize for EgressNamespaceBlocker
impl StructuralPartialEq for EgressNamespaceBlocker
Auto Trait Implementations§
impl Forget for EgressNamespaceBlocker
impl Freeze for EgressNamespaceBlocker
impl Move for EgressNamespaceBlocker
impl RefUnwindSafe for EgressNamespaceBlocker
impl Send for EgressNamespaceBlocker
impl Sync for EgressNamespaceBlocker
impl Unpin for EgressNamespaceBlocker
impl UnsafeUnpin for EgressNamespaceBlocker
impl UnwindSafe for EgressNamespaceBlocker
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,
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.Source§impl<Q, K> Equivalent<K> for Q
impl<Q, K> Equivalent<K> for Q
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