Address review comments

Signed-off-by: Riyaz Faizullabhoy <riyaz.faizullabhoy@docker.com>
This commit is contained in:
Riyaz Faizullabhoy 2017-03-31 11:27:31 -07:00
parent 52fa33d6d1
commit c1f84921fe

View File

@ -17,8 +17,8 @@ and elsewhere.
The Moby project maintainers are actively collaborating with KSPP and it is an established [priority for the project](../projects/kspp/roadmap.md). The Moby project maintainers are actively collaborating with KSPP and it is an established [priority for the project](../projects/kspp/roadmap.md).
The Moby kernel is intended to be identical to the upstream kernel - at the time of this writing the only patches in the The Moby kernel is intended to be identical to the upstream kernel - We only intend to carry patches that are on track
`4.9.x` series are for Hyper-V socket fixes that are intended to be upstreamed. to be upstreamed, or fix regressions or bugs and that we will upstream.
## Minimal Base ## Minimal Base
@ -31,7 +31,7 @@ individual operators to include any additional bits they may require.
## Type Safe System Daemons ## Type Safe System Daemons
The the core system components that we must include in Moby userspace are key to security, and we believe The core system components that we must include in Moby userspace are key to security, and we believe
they should be written in type safe languages, such as [Rust](https://www.rust-lang.org/en-US/), [Go](https://golang.org/) they should be written in type safe languages, such as [Rust](https://www.rust-lang.org/en-US/), [Go](https://golang.org/)
and [OCaml](http://www.ocaml.org/), and run with maximum privilege separation and isolation. and [OCaml](http://www.ocaml.org/), and run with maximum privilege separation and isolation.
@ -46,25 +46,31 @@ and namespaced separately from the host as appropriate.
## Built With Hardened Toolchains and Containers ## Built With Hardened Toolchains and Containers
Moby's build process heavily leverages Docker images for packaging. Of note, all intermediate build images Moby's build process heavily leverages Docker images for packaging. Of note, all intermediate build images
are referenced by digest - which ensures reproducibility across Moby builds. are referenced by digest to ensures reproducibility across Moby builds. Tags are mutable, and thus subject to override
Certain images, such as the kernel image, are signed by Moby maintainers using [Docker Content Trust](https://docs.docker.com/engine/security/trust/content_trust/), (intentionally or maliciously) - referencing by digest mitigates classes of registry poisoning attacks in Moby's buildchain.
Certain images, such as the kernel image, will be signed by Moby maintainers using [Docker Content Trust](https://docs.docker.com/engine/security/trust/content_trust/),
which guarantees authenticity, integrity, and freshness of the image. which guarantees authenticity, integrity, and freshness of the image.
Moreover, Moby's build process leverages [Alpine Linux's](https://alpinelinux.org/) hardened userspace tools such as its Moreover, Moby's build process leverages [Alpine Linux's](https://alpinelinux.org/) hardened userspace tools such as
musl libc C-compiler with default `-fstack-protector` and position-independent executable output. Go binaries are also PIE. Musl libc, and compiler options that include `-fstack-protector` and position-independent executable output. Go binaries
are also PIE.
## Immutable Infrastructure ## Immutable Infrastructure
Moby runs as an initramfs and its system containers are baked in at build-time, essentially making Moby immutable. Moby runs as an initramfs and its system containers are baked in at build-time, essentially making Moby immutable.
Moreover, Moby has a read-only root filesystem: the only userspace that is allowed to modified pertains to namespaced Moreover, Moby has a read-only root filesystem: system configuration and sensitive files cannot be modified after boot.
container data and stateful partitions. The only files on Moby that are allowed to be modified pertain to namespaced container data and stateful partitions.
As such, Moby access to the Moby base system is limited in scope: in the event of any container escape, the attack surface As such, Moby access to the Moby base system is limited in scope: in the event of any container escape, the attack surface
is also limited because the system binaries and configuration is unmodifiable. To that end, the Moby base system does not is also limited because the system binaries and configuration is unmodifiable. To that end, the Moby base system does not
supply a package manger: containers must be built beforehand with the dependencies they require. supply a package manger: containers must be built beforehand with the dependencies they require.
Once a secure Moby base system has been built, it cannot be tampered with, even by malicious user containers. Even if user
containers unintentionally expose themselves to attack vectors, immutability of the Moby base system limits the scope of
host attack.
## External Updates - Trusted Provisioning ## External Updates - Trusted Provisioning
@ -80,7 +86,7 @@ can be used to provide trusted boot information and integrate with existing trus
"trusted boot-ready" and the team is already collaborating with cloud and hardware providers to make this a reality. "trusted boot-ready" and the team is already collaborating with cloud and hardware providers to make this a reality.
## Incubating Next-generation Kernel Security ## Incubating Next-generation Security Projects
Since Moby is meant to only run containers and be secure, it is the perfect platform to incubate new (and potentially radical!) Since Moby is meant to only run containers and be secure, it is the perfect platform to incubate new (and potentially radical!)
paradigms and strategies for securing the Linux kernel - allowing them to be used in production environments and attract paradigms and strategies for securing the Linux kernel - allowing them to be used in production environments and attract