Skip to content

Commit 8684a39

Browse files
committed
Document Firecracker's defense in depth approach
Remove the mention that Firecracker won't start without the jailer in the future. Clearly mention that secure isolation and defense in depth can be guaranted only if prod-host-setup recommendations are implemented. Signed-off-by: Radu Iliescu <riliescu@amazon.com>
1 parent 05d8bd2 commit 8684a39

File tree

2 files changed

+28
-8
lines changed

2 files changed

+28
-8
lines changed

docs/design.md

Lines changed: 16 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -49,10 +49,10 @@ images/firecracker_host_integration.png?raw=true
4949
Firecracker runs on Linux hosts with 4.14 or newer kernels and with Linux
5050
guest OSs (from this point on, referred to as guests). In production
5151
environments, Firecracker should be started only via the `jailer` binary.
52-
The `firecracker` binary can also be executed directly, but this will no longer
53-
be possible in the future. After launching the process, users interact with
54-
the Firecracker API to configure the microVM, before issuing the
55-
`InstanceStart` command.
52+
See [Sandboxing](#Sandboxing) for more details.
53+
54+
After launching the process, users interact with the Firecracker API to
55+
configure the microVM, before issuing the `InstanceStart` command.
5656

5757
### Host Networking Integration
5858

@@ -147,11 +147,21 @@ service is fully configured by users.
147147

148148
#### __Firecracker process__
149149

150+
Firecracker is designed to assure secure isolation using multiple layers.
151+
The first layer of isolation is provided by the Linux KVM and the Firecracker
152+
virtualization boundary. To assure defense in depth, Firecracker should only
153+
run constrained at the process level. This is achieved by the following:
154+
seccomp filters for disallowing unwanted system calls, cgroups and namespaces
155+
for resource isolation, and dropping privileges by jailing the process. Seccomp
156+
filters are automatically installed by Firecracker, while for the latter, we
157+
recommend starting Firecracker with the `jailer` binary that's part of each
158+
Firecracker release.
159+
150160
##### Seccomp
151161

152162
Seccomp filters are used by default to limit the host system calls Firecracker
153-
can use. The default filters only allow the bare minimum set of system calls and
154-
parameters that Firecracker needs in order to function correctly.
163+
can use. The default filters only allow the bare minimum set of system calls
164+
and parameters that Firecracker needs in order to function correctly.
155165

156166
The filters are loaded in the Firecracker process, on a per-thread basis,
157167
before executing any guest code.

docs/prod-host-setup.md

Lines changed: 12 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,10 @@
11
# Production Host Setup Recommendations
22

3+
Firecracker relies on KVM and on the processor virtualization features
4+
for workload isolation. Security guarantees and defense in depth can only be
5+
upheld, if the following list of recommendations are implemented in
6+
production.
7+
38
## Firecracker Configuration
49

510
### Seccomp
@@ -77,8 +82,13 @@ for Firecracker processes that are unresponsive, and kills them, by SIGKILL.
7782

7883
## Jailer Configuration
7984

80-
Using Jailer in a production Firecracker deployment is highly recommended,
81-
as it provides additional security boundaries for the microVM.
85+
For assuring secure isolation in production deployments, Firecracker should
86+
only be started only using the `jailer` binary that's part of each Firecracker
87+
release, or executed under process constraints equal or more restrictive than
88+
those in the jailer. For more about Firecracker sandboxing please see
89+
[Firecracker design](design.md)
90+
91+
8292
The Jailer process applies
8393
[cgroup](https://www.kernel.org/doc/Documentation/cgroup-v1/cgroups.txt),
8494
namespace isolation and drops privileges of the Firecracker process.

0 commit comments

Comments
 (0)