You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
{{ message }}
Repository navigation
Commit cbc7aa2
Browse filesBrowse the repository at this point in the historyBrowse files
Copy file name to clipboardExpand all lines: architecture/sandbox.md
+13-10Lines changed: 13 additions & 10 deletions
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -84,17 +84,20 @@ replacement from granting authority.
84
84
6. Exec, signaling, PTY, DNS, TCP, and loopback-forwarding operations cross the
85
85
authenticated channel for the lifetime of the sandbox generation.
86
86
87
-
The shared isolation contract receives only the driver's normalized outer-fence
88
-
guarantees: egress is default-deny, there is no unmanaged egress path, the
89
-
evidence is bound to the sandbox generation, revocation has been verified, and
90
-
controller loss fails closed. A digest commits those guarantees to the native
91
-
driver evidence without teaching the shared contract about container networks,
87
+
The shared isolation contract receives only normalized outer-fence guarantees:
88
+
egress is default-deny, there is no unmanaged egress path, the evidence is bound
89
+
to the sandbox generation, revocation has been verified, and controller loss
90
+
fails closed. A digest commits those guarantees to the native
91
+
evidence without teaching the shared contract about container networks,
92
92
Kubernetes objects, VM devices, or accelerator resources.
93
93
94
-
Each driver makes that projection explicitly. Non-empty native evidence alone
95
-
does not establish a guarantee:
94
+
The component that owns the outer fence also validates its native evidence and
95
+
makes that projection explicitly. In the current Docker, Podman, Kubernetes,
96
+
and VM placements, that component is the compute driver. A delegated isolation
97
+
backend may own the fence and make the same projection instead. Non-empty native
98
+
evidence alone does not establish a guarantee:
96
99
97
-
|Driver | Native evidence | Guarantees projected by the driver|
100
+
|Current enforcement owner | Native evidence | Guarantees projected by the owner|
98
101
|---|---|---|
99
102
| Docker | Pinned container ID, `network_mode=none`, and no unexpected network attachments | No workload route establishes default-deny, revocation, and controller-loss behavior; the attachment inspection establishes that no unmanaged route exists. |
100
103
| Podman | Pinned container ID, `--network=none`, and no unexpected network attachments | The same container-network facts establish the same four guarantees. |
@@ -129,7 +132,7 @@ OpenShell uses overlapping controls rather than a single sandbox primitive:
129
132
| Filesystem policy | Landlock restricts the paths the agent can read or write. |
130
133
| Process policy | Sandbox and children run as one immutable non-root identity with zero capabilities. |
131
134
| Seccomp notification | Virtualizes supported INET sockets and sends DNS/TCP decisions to the supervisor without nftables or proxy environment variables. |
132
-
|Driver outer fence |Docker `network_mode=none`, a NIC-less VM, or Kubernetes NetworkPolicy prevents any missed or unsupported kernel path from escaping. |
135
+
|Outer network fence |The component that owns network enforcement prevents any missed or unsupported kernel path from escaping. Current examples are Docker `network_mode=none`, a NIC-less VM, and Kubernetes NetworkPolicy. |
0 commit comments