What is Notary?

Notary is an open-source project that provides a framework for securing software distribution. In container contexts, it's often used for content trust and image signing. Notary helps ensure the integrity and authenticity of container images.

In the world of software engineering, containerization and orchestration are two critical concepts that have revolutionized the way applications are developed, deployed, and managed. One of the key tools that play a significant role in this domain is Notary, a project that allows anyone to have trust over arbitrary collections of data. This article aims to provide a comprehensive understanding of Notary, its relation to containerization and orchestration, its history, use cases, and specific examples.

Containerization is a lightweight alternative to full machine virtualization that involves encapsulating an application in a container with its own operating environment. This provides many of the benefits of load balancing, microservices, and increased portability. On the other hand, orchestration is the automated configuration, coordination, and management of computer systems, applications, and services. Orchestration helps manage operations and processes that are routine in nature.

Definition of Notary

Notary is an open-source project that provides a platform to publish and verify content. The service provides a means of establishing trust over arbitrary collections of data. Notary aims to make the internet more secure by making it easy for people to publish and verify content. It is based on The Update Framework, a secure general design for the problem of software distribution and updates.

Notary is designed to be scalable and secure, focusing on the distribution of necessary trust information. It is built with the understanding that the internet is a hostile environment, and it provides mechanisms to survive various attacks, even when the keys are compromised.

Components of Notary

Notary is composed of a server and a client. The Notary server is responsible for storing and distributing the signed metadata, while the Notary client is responsible for creating, managing, and verifying the metadata. The client and server communicate over an HTTP API, but all of the actual signing operations happen on the client side.

Notary also includes a signer service, which is responsible for carrying out the actual signing operations. This service is separate from the server to ensure that sensitive signing keys are not directly exposed to the internet.

Notary and Containerization

Notary plays a crucial role in the world of containerization. It provides a mechanism to verify the integrity and publisher of specific sets of data. This is particularly important in a containerized environment where applications are broken down into multiple independent components (containers) that need to be verified and trusted.

With Notary, developers can sign their container images and allow users to verify that the image they are using is exactly the one that the publisher intended. This adds an extra layer of security and trust in the containerized application deployment process.

Notary in Docker

Docker, a popular containerization platform, has integrated Notary into its ecosystem under the name Docker Content Trust. Docker Content Trust uses Notary to automatically sign and verify the images. This allows Docker users to ensure the integrity and the publisher of all the data received.

By integrating Notary, Docker provides a way to verify the origin and integrity of the container images, thereby enhancing the security of the containerized applications. This is particularly important in a multi-tenant environment where images are frequently pulled from public registries.

Notary and Orchestration

Orchestration tools like Kubernetes also benefit from Notary. In an orchestrated environment, where multiple containers are managed across different hosts, Notary can provide an additional layer of security. It can ensure that only verified and trusted containers are deployed in the environment.

By integrating Notary into the orchestration process, system administrators can ensure that the deployed containers are exactly what they expect, free from any malicious modifications. This is particularly important in a large-scale deployment where manual verification of each container is not feasible.

Notary in Kubernetes

Kubernetes, a popular orchestration tool, can be configured to use Notary for verifying the container images. This can be achieved by configuring the Kubernetes admission controllers to only admit signed images.

By integrating Notary, Kubernetes provides a way to ensure that only trusted and verified containers are deployed in the cluster. This enhances the security of the orchestrated applications and provides a way to enforce compliance and governance policies.

History of Notary

Notary was introduced by Docker in 2015 as a way to improve the security of the Docker platform. Docker wanted to provide a way for users to verify the integrity and publisher of Docker images, and Notary was the solution.

Notary was built on The Update Framework (TUF), a secure general design for the problem of software distribution and updates. TUF was designed to provide a way to secure software update systems, and Notary extended this design to provide a way to establish trust over arbitrary collections of data.

Use Cases of Notary

Notary is used in a wide range of applications, from securing containerized applications to providing a way to distribute and verify software updates. It is used by companies like Docker and VMware to secure their container platforms and by Linux distributions like Debian to secure their software update process.

Notary can also be used in any scenario where there is a need to establish trust over arbitrary collections of data. This could be anything from verifying the integrity of downloaded files, to ensuring the authenticity of data in a distributed database.

Examples of Notary

One specific example of Notary in action is in the Docker Content Trust. Docker Content Trust uses Notary to sign and verify Docker images. When a user pulls an image from the Docker Hub, Docker Content Trust verifies the image using Notary. If the image is not signed or if the signature does not match, Docker will not run the image.

Another example is in the use of Notary in Kubernetes. Kubernetes can be configured to use Notary to verify the container images. This ensures that only trusted and verified containers are deployed in the Kubernetes cluster, enhancing the security of the orchestrated applications.

High-impact engineers ship 2x faster with Graph
Ready to join the revolution?
High-impact engineers ship 2x faster with Graph
Ready to join the revolution?

Code happier

Join the waitlist