| It is important to understand that as implemented by runtimes such as docker, containerd, cri-o, and podman, containers are absolutely a security device. These things force the application to run in restricted environments where capabilities are reduced, system calls are filtered, apparmor profiles and selinux labels are applied, among other things. These are the same sort of things that chrome, for instance, does to make it harder to do bad things from the browser.
They are hardening techniques.
Images are automatically checksummed on download, and for certain things even signatures are checked (more of this soon). Just because they do not protect you from a kernel exploit (also actually not true, seccomp filters have prevented a number of kernel exploits from inside the container) does not mean they are not added security. The important thing to know what your attack surface is and what is acceptable risk for the workloads you are running.
And yes, it is important to understand that containers do not isolate you completely from kernel exploits. It is also important to understand the control plane (runtime up to the orchestrator) is much more likely to introduce security issues than the container itself. |
There are multiple independent projects involved in securing a standard orchestrated docker style container (some of the set of Linux kernel/Linux distro/runc/containerd/docker/k8s) and no obvious owner of overall security configuration and problems.
we've seen examples of this, e.g. k8s disabling Docker's seccomp filter, or more recently the difficulty in how to handle clone(3) and seccomp filters.
For me it's that comparison with dedicated security sandboxes, is that in other projects there's a single team handling the whole security picture , which is likely to make things easier to manage.