
随着 Docker 内容信任(Docker Content Trust,DCT)的使用量下降,以及其他类似的产品取代了它的功能和易用性,Docker 宣布 Docker 内容信任(DCT)即将退役。Docker 建议使用 DCT 的组织转向使用Sigstore或Notation等替代方案。
DCT 通过允许镜像发布者使用私钥对容器镜像进行数字签名,然后通过 Docker Notary 服务器存储在注册表中的公钥进行验证。DCT 在拉取镜像时检查这些数字签名,创建一个信任链,帮助防止篡改,并确保镜像来自可信来源。这个过程防止了未签名容器镜像的部署。DCT 于 2015 年作为使用更新框架(TUF)的验证系统推出,并作为孵化项目“Notary”捐赠给了云原生计算基金会。
根据 Docker 的公告,使用量已显著下降。Docker 的 Brian Pratt 表示:“如今,使用 DCT 的 Docker Hub 镜像拉取不到 0.05%,微软最近宣布在 Azure 容器注册表中弃用 DCT 支持。”
Pratt 解释了退役 DCT 的原因:
上游 Notary 代码库不再积极维护,生态系统已经转向了更新的镜像签名和验证工具。
——Brian Pratt
退役始于 2025 年 8 月 8 日,当时 Docker 官方镜像的最老的 DCT 签名证书开始过期。启用了 DOCKER_CONTENT_TRUST 环境变量的用户将会遇到拉取失败,现在必须关闭此设置。docker trust inspect 命令也停止了对 Docker 官方镜像的工作。
对于寻求替代 DCT 或实现其功能的组织,有许多选择,Snyk的一篇文章记录了几种可能的替代方案。Sigstore Cosign通过 OIDC 身份和透明度日志提供无钥匙签名,因此,它没有管理临时密钥的复杂性。Cosign 提供了一个去中心化和联合的信任委托模型,拥有强大的社区支持,适合优先考虑跨多个注册表安全透明软件更新的组织。

Notary项目为保护软件供应链提供了规范和工具。Notary V2(Notation)提供了一种规范驱动的方法来签名和验证容器镜像,支持多个签名并集成到现有的 PKI 中。DCT 只支持每个镜像一个签名,这意味着如果供应商已经签名了镜像,组织无法添加额外的审批签名。与 DCT 不同,Notary v2 通过多个签名启用验证,允许组织添加审批链。然而,该项目需要更复杂的设置,涉及 TLS 证书和 TUF 密钥管理。
微软的Azure容器注册表团队提供了一个具体的过渡时间表。从 2025 年 9 月 30 日起,客户将无法在新注册表上启用 Docker 内容信任,所有 DCT 数据将在 2028 年 3 月 31 日被永久删除,届时该功能将被完全移除。在这个 Github 拉取请求中,Azure 推广迁移到 Notary 项目生态系统,特别是 Notation 工具。这将带来诸如 OCI 标准合规性、Azure Key Vault 密钥管理集成和 CI/CD 管道集成等优势。
设置 DCT 需要完整的基础设施,包括 Notary 服务器、Notary 签名者、Notary 客户端和带有相互 TLS 配置的 MySQL 数据库。此外,在注册表之间移动镜像时,如果没有附带 Notary 服务器,签名数据会丢失,这限制了 DCT 的互操作性。Nigel Douglas 在All Things Open上写道,现代替代方案通过改进的互操作性、更好的密钥管理和更好的集成到开发工作流程中,部分解决了这些限制。Sigstore 将所有签名存储在公共注册表中,以提高透明度和可审计性,并支持大多数生产注册表。Notary v2 为签名 OCI 镜像提供了全面的跨注册表规范,尽管注册表支持仍然有限。
Docker 计划使用现代工具为 Docker 官方镜像实现一个现代镜像签名解决方案,尽管细节尚未公布。
原文链接:
https://www.infoq.com/news/2025/08/docker-content-trust-retired/
评论