在容器化和分布式软件快速发展的今天,确保数据与配置在分发过程中的安全性变得空前重要。无论是镜像仓库还是软件发布流水线,内容在传递环节是否被恶意篡改,是每一个团队都需要面对的挑战。而 Notary 就是为了解决这类问题而生的工具,它通过一套强大的签名与验证机制,为数据完整性建立信任基石,让开发者能够安全地分发和消费各种内容。
Notary 是什么?
Notary 是一个由 CNCF(云原生计算基金会)支持的开源项目。它允许用户对任意数据集合进行数字签名,从而在接收端验证这些数据自签名后未被篡改。在复杂的分布式系统环境下,Notary 提供了一种增强数据完整性的有效方法,帮助开发者和组织建立更高的互信水平。
核心功能
- 数据完整性检查:利用密码学签名算法,验证所传递数据的完整性与来源真实性。
- 轻松集成到 OCI 生态系统:原生支持对符合 OCI(开放容器倡议)标准的镜像及其他制品(Artifact)进行签名操作。
- 安全传递:无论传递的内容是简单的配置文件还是庞大的容器镜像,都能确保其在传输过程中未被修改。
- 支持多种签名模式:既支持单个实体的签名,也支持需要多方参与的联合签名模式,以适应不同的安全策略。
Notary 的使用场景
- 容器镜像分发:开发者可以对构建好的 Docker 镜像进行签名。当用户或自动化系统(如 Kubernetes)拉取镜像时,可以先验证镜像的签名,确认其来源可信且内容未被篡改,这对保障 云原生 应用供应链安全至关重要。
- 可验证数据分发:在 DevOps 流程中,团队间需要共享敏感的配置文件、凭证或数据集。对这些文件进行签名后,使用方在部署或加载前即可验证其完整性,及时发现潜在风险。
- CI/CD 集成:将 Notary 集成到软件交付流水线中,可以保证从源码到构建产物,供应链上的每一个组件都被正确签名和验证,构建起可信的软件供应链。
安装与快速启动
运行 Notary 服务通常可以通过 Docker 容器快速完成。以下是其快速上手步骤。
直接运行 Notary 服务
- 拉取 Notary 服务镜像:
docker pull notaryserver:latest
docker pull notarysigner:latest
- 启动服务:假设你已经准备好了所需的
docker-compose.yml 配置文件,可以直接运行以下命令启动服务。
docker-compose up -d
- 测试服务:确保服务成功启动并完成初始化配置后,你可以通过
curl 命令或 Notary 客户端工具进行基础的连接与交互测试。
使用 CLI 进行签名与验证
Notary 提供了强大的命令行工具,可以交互式地完成签名和验证任务。
- 对 Docker 镜像签名:
notary add <repository> <tag> <key-path>
- 验证签名:
notary verify <repository> <tag>
Notary 项目的现状
根据其 GitHub 仓库信息,Notary 项目已于 2025 年 7 月 31 日被开发团队归档(标记为只读状态),这意味着项目将不再接受新的功能更新或主动维护。
官方目前推荐用户转向其新的子项目——Notation,以继续获得现代化的安全签名与验证功能支持。
Notation 是什么?
Notation 是 Notary 项目团队为适应云原生发展而推出的新一代工具。它更专注于对 OCI 制品(包括容器镜像、Helm Chart、配置文件等)进行轻量化的签名和验证,并且在设计上与 Kubernetes 及主流镜像仓库的集成更加紧密、兼容性更广。
Notary 和同类工具对比
| 工具 |
功能特点 |
适用场景 |
| Notary |
经典的数据完整性校验和分发签名工具,支持联合签名等高级特性。 |
基础的镜像及数据签名验证场景。 |
| Notation |
继承自 Notary,专为现代化 OCI 制品签名校验设计的工具,更轻量、兼容性更好。 |
需要适配最新 OCI 标准,并希望与云原生生态广泛集成的场景。 |
| cosign |
另一款在云原生领域流行的签名工具,同样适配 Kubernetes 和 OCI 制品。 |
在云原生系统中,寻求成熟、活跃社区支持的 Artifact 签名验证方案。 |
选择哪种工具,需要根据你的具体技术栈、对功能特性的需求以及对社区活跃度的考量来决定。对于寻求可靠 安全 保障的新项目, Notation 或 cosign 可能是更优的选择。

技术世界日新月异,工具的迭代是常态。理解像 Notary 这样的项目其设计理念与解决的问题,能帮助我们在面对新的技术选择时做出更明智的判断。如果你想了解更多关于容器安全、云原生实践的内容,欢迎在 云栈社区 与更多开发者交流探讨。
|