Centralize sandbox destination authority
This commit is contained in:
parent
54cc167f81
commit
f8849cdb5f
2 changed files with 112 additions and 48 deletions
|
|
@ -10,6 +10,12 @@ use std::path::{Component, Path, PathBuf};
|
|||
use lazaret_core::configuration::{ConfinedPathPlan, ResolvedDomainConfiguration, SandboxLayoutV1};
|
||||
use lazaret_core::identity::{ConfigurationFingerprint, ContainerId, DomainId, NamespaceIdentity};
|
||||
use lazaret_core::records::VolumeAccess;
|
||||
pub use lazaret_sandbox_contract::{
|
||||
CONTROL_ROOT_DESTINATION, CREDENTIALS_DESTINATION, DEV_DESTINATION,
|
||||
ESCALATION_CLIENT_DESTINATION, MAILBOX_REQUESTS_DESTINATION, MAILBOX_RESULTS_DESTINATION,
|
||||
PROC_DESTINATION, SANDBOX_INIT_DESTINATION, SYS_DESTINATION, TERMINFO_ROOT_DESTINATION,
|
||||
WORKSPACE_DESTINATION,
|
||||
};
|
||||
use oci_spec::runtime::{
|
||||
Capabilities, LinuxBuilder, LinuxCapabilitiesBuilder, LinuxIdMappingBuilder,
|
||||
LinuxNamespaceBuilder, LinuxNamespaceType, Mount, MountBuilder, ProcessBuilder, RootBuilder,
|
||||
|
|
@ -18,14 +24,6 @@ use oci_spec::runtime::{
|
|||
use rustix::fs::{AtFlags, FileType, Mode, OFlags, ResolveFlags, StatxFlags, openat2, statx};
|
||||
use sha2::{Digest, Sha256};
|
||||
|
||||
pub const WORKSPACE_DESTINATION: &str = "/workspace";
|
||||
pub const CONTROL_ROOT_DESTINATION: &str = "/run/lazaret";
|
||||
pub const CREDENTIALS_DESTINATION: &str = "/run/lazaret/credentials";
|
||||
pub const MAILBOX_REQUESTS_DESTINATION: &str = "/run/lazaret/mailbox/requests";
|
||||
pub const MAILBOX_RESULTS_DESTINATION: &str = "/run/lazaret/mailbox/results";
|
||||
pub const ESCALATION_CLIENT_DESTINATION: &str = "/run/lazaret/bin/lazaret-escalate";
|
||||
pub const SANDBOX_INIT_DESTINATION: &str = "/run/lazaret/bin/lazaret-sandbox-init";
|
||||
pub const TERMINFO_ROOT_DESTINATION: &str = "/run/lazaret/terminfo";
|
||||
pub const NETWORK_NAMESPACE_PATH: &str = "/proc/self/ns/net";
|
||||
|
||||
const OCI_VERSION: &str = "1.2.1";
|
||||
|
|
@ -604,7 +602,7 @@ impl SandboxBundle {
|
|||
/// # Errors
|
||||
/// Returns an error if the fixed layout violates the configuration layout contract.
|
||||
pub fn default_sandbox_layout() -> Result<SandboxLayoutV1, SandboxBuildError> {
|
||||
SandboxLayoutV1::default_layout().map_err(|error| {
|
||||
lazaret_sandbox_contract::default_sandbox_layout().map_err(|error| {
|
||||
SandboxBuildError::new(
|
||||
SandboxBuildErrorKind::InvalidPath,
|
||||
format!("default sandbox layout is invalid: {error}"),
|
||||
|
|
|
|||
|
|
@ -1,8 +1,13 @@
|
|||
fn standard_mounts() -> Result<Vec<Mount>, SandboxBuildError> {
|
||||
[
|
||||
("/proc", "proc", "proc", vec!["nosuid", "noexec", "nodev"]),
|
||||
(
|
||||
"/dev",
|
||||
PROC_DESTINATION,
|
||||
"proc",
|
||||
"proc",
|
||||
vec!["nosuid", "noexec", "nodev"],
|
||||
),
|
||||
(
|
||||
DEV_DESTINATION,
|
||||
"tmpfs",
|
||||
"tmpfs",
|
||||
vec!["nosuid", "strictatime", "mode=755", "size=65536k"],
|
||||
|
|
@ -32,7 +37,7 @@ fn standard_mounts() -> Result<Vec<Mount>, SandboxBuildError> {
|
|||
vec!["nosuid", "noexec", "nodev"],
|
||||
),
|
||||
(
|
||||
"/sys",
|
||||
SYS_DESTINATION,
|
||||
"sysfs",
|
||||
"sysfs",
|
||||
vec!["nosuid", "noexec", "nodev", "ro"],
|
||||
|
|
@ -107,4 +112,3 @@ fn bind_mount(
|
|||
.build()
|
||||
.map_err(oci_error)
|
||||
}
|
||||
|
||||
|
|
|
|||
Loading…
Reference in a new issue