This won’t come as a surprise, but technology is evolving quickly. The transition from physical servers to virtual servers, to virtual servers in the cloud, to DevOps tools and practices, to microservices has all happened in a relatively short period time. Each shift has introduced significant benefits, but one of the biggest challenges—particularly when everything changes so quickly—is how to implement and maintain security. Organizations are enthusiastically embracing containers while simultaneously struggling to understand how to secure and protect them.
One thing has become clear: Effective container security requires a holistic view of the environment and the end-to-end life cycle.
Three Stages of the Container Life Cycle
There are a number of stages in the life cycle of a container as it moves from initial development to an image in a repository, to deployment and execution in production and eventually is shut down and disappears. The container life cycle is comprised of three main stages—build, deploy and run. Each stage is exposed to risk and potential compromise, and each stage requires protection.
Effective container security requires a broad view that provides visibility across all three stages. You must secure container images and assess the risk profile of assets during the build stage, harden the container environment and reduce the available attack surface in the deploy stage and be able to detect malicious activity in your container ecosystem in real time and take action to block attacks or alert IT personnel to respond.
Visibility and Context are Essential
Tracking CVEs or monitoring containers without understanding the broader context is not enough. That approach results simultaneously in both missing suspicious and malicious activity and focusing effort and resources on perceived issues that don’t really pose a significant risk. You need a deployment-centric view—across all elements of Kubernetes deployment versus a single container—for comprehensive visibility.
Different factors affect the risk or impact of a given vulnerability. A vulnerability—even a critical vulnerability—needs to be weighed based on broader context. A container with a serious vulnerability on a publicly exposed application or production environment is a much more serious issue than the same vulnerability in an isolated development environment. To make better decisions and implement effective container security that makes efficient use of limited resources, you need to be able to prioritize risk based on the broader context.
Rinse and Repeat
One of the features of developing in a DevOps environment is that there is no “beginning” or “end,” in the traditional sense. There is a constant loop of development, deployment and monitoring and feedback that fuel the next iteration of development. It is a much more responsive and dynamic approach to developing and deploying software.
A similar feedback loop is also integral to effective container security. As containers flow from build to deploy to run, then back to build, container security issues are continuously identified and resolved as well. With each iteration, security learnings throughout the container life cycle constantly shrink the available attack surface at the same time. Data from the build and deployment stages enable more accurate detection of potential security issues, and monitoring container activity during runtime yields more effective and actionable feedback that enables you to harden your container environment.
Container security is holistic. You can’t effectively secure and protect your container environment without broad visibility of your environment across the container life cycle, combined with the necessary context to assess risk and prioritize your resources.