Linux least-privilege sandbox planning and runtime for MoonBit
Dependencies
moon run cmd/moonjail -- capabilities
moon run cmd/moonjail -- explain
moon run cmd/moonjail -- demo
moon run cmd/moonjail -- check examples/deny-socket.json
moon run cmd/moonjail -- explain-profile examples/deny-socket.json
bash examples/agent-tool-smoke.sh///|
test "compile a console tool policy" {
let policy = @moonjail.Policy::from_profile(ConsoleTool)
.allow_read("./workspace")
.allow_write("./workspace/out")
.limit_cpu(2)
.limit_open_files(32)
let plan = @moonjail.compile(policy, X86_64)
assert_true(plan.seccomp.instructions.length() > 0)
}moon fmt --check
moon check --target all --warn-list +unnecessary_annotation
moon test --target native
moon build --target nativepub(all) suberror CompileError {
InvalidPolicy(Array[Diagnostic])
UnknownSyscall(architecture~ : Architecture, name~ : String)
InvalidProgram(String)
} derive(Debug)pub(all) suberror ProfileError {
InvalidJson(String)
UnsupportedVersion(Int)
InvalidAction(String)
InvalidRight(String)
} derive(Debug)pub(all) struct Policy {
name : String
default_action : SeccompAction
syscall_rules : Array[SyscallRule]
path_rules : Array[PathRule]
limits : ResourceLimits
require_landlock : Bool
} derive(Eq, Debug)pub(all) struct SandboxPlan {
name : String
architecture : Architecture
default_action : SeccompAction
syscall_rules : Array[SyscallRule]
seccomp : SeccompProgram
path_rules : Array[PathRule]
limits : ResourceLimits
require_landlock : Bool
} derive(Eq, Debug)pub(all) struct SeccompProgram {
architecture : Architecture
instructions : Array[BpfInstruction]
} derive(Eq, Debug)Install
Download zipLinux least-privilege sandbox planning and runtime for MoonBit
Dependencies