Container-based systems create new layers in software delivery pipelines. It's essential to protect the host OS, the container runtime, and the containers themselves, all of which run on the same hosting stack. This brings up new points to think about. We need to consider how we build and run containerised apps.
How Container Security Differs from Traditional Security
In the old days, cloud security was about protecting a single point of defence: a perimeter. Yet, the advent of containerisation brought this approach under scrutiny, as organisations must now rethink their security postures. The container ecosystem is no small feat, given the dazzling array of tools and unique challenges they present, which diverge so much from the traditional security methods we once knew.
The container environment is more complex and dynamic. With container technologies, any changes need to be made upstream, unlike traditional methods where software is updated on the host it runs on.
Also, cloud native computing changed how we approach creating, deploying, and securing applications. To keep up with this, we must adopt new approaches and strategies and leave traditional ones in the dust.
And while container technologies are gaining widespread traction, responsibilities are being “shift-left”. Meaning that, containers need protection right from the earliest stages of the CI/CD pipeline through to deployment and production (being driven by developers as they define software as code, infrastructure as code, etc.). Developers are asked to handle security in ways they haven’t before.
What makes containers unique?
Among the mere fact that containers differ from virtual machines (VMs) and other deployment methods, the most significant stand-off is that the entire application lifecycle is changed when adopting containerisation.
- Containers have fewer dependencies on the underlying infrastructure to support them.
- They're built from machine-readable images, allowing various operating systems and application types to coexist on the same machine. This setup ensures isolation among different applications while effectively optimising the use of machine resources.
- Because they are so declarative and written in a way that they only do exactly as defined in the code application, they behave consistently – predictable. Consequently, any deviation from that expected behaviour results in an anomaly or suspicious activity that can be tracked.
- Not only that, but containers are ephemeral by nature, as they allow you to spin up and down within minutes or seconds.
- Plus, they are portable, which makes deployment across distributed environments (multi-cloud) more seamless.
One issue can amplify across layers
What sets container security apart is the impact of a single issue. When one container image is flawed, every instance of the container can be up to grabs of exposure, enhancing the attack surface. This grows as you have multiple containers spun up from the same image. And with public image repositories, one compromised image can be distributed to millions of machines worldwide. Visibility also becomes hard when containers are spread across your environment; the difficulty of seeing into system operations and security posture only worsens.
Long-lived containers: A new paradigm
What’s more, containers originated with the idea of ephemeral workloads (short-lived processes that spin up, perform a function, and then shut down). Now, containers are widely used beyond just short-lived microservices. Many traditional applications, which used to run on a VM, are now containerised and deployed. These long-lived containers introduce new security challenges we cannot hide from.