Azure 容器注册表将于 2028 年 3 月 31 日停用 Docker 内容信任。 为了帮助进行这种转换,我们提供了有关如何禁用 Docker 内容信任并采用公证项目进行签名和验证容器映像的指导。
Docker 内容信任弃用
Docker 内容信任允许映像发布者对其映像和映像使用者进行签名,以验证请求的映像是否已签名。 随着技术的进步,Docker 内容信任不再满足容器现代供应链安全性的要求。 因此,从 2025 年 3 月 31 日起,Docker 内容信任将弃用,并在 2028 年 3 月 31 日从 Azure 容器注册表 (ACR) 中完全删除。
Microsoft 基于 Notary 项目提供签名和验证解决方案,而不是使用 Docker 内容信任。 Notary Project 是一组规范和工具,旨在使用真实的容器映像和其他 OCI 项目为保护软件供应链提供跨行业标准。 Notation (来自 Notary Project 的工具)实现 Notary Project 规范,并包括用于签名和验证容器映像和项目的 CLI 和库。 使用 Notary Project 解决方案来确保容器映像的完整性和真实性的好处包括:
- 可移植性和互作性:Notary Project 签名遵循开放容器计划 (OCI) 标准,并且可以存储在符合 OCI 的注册表(如 ACR)中,从而促进不同云环境中的签名可移植性和互作性。
- 安全密钥管理:使用 Azure 密钥保管库 (AKV) 安全地管理签名密钥和证书。 即将推出更多密钥管理系统 (KMS) 选项。
- CI/CD 管道集成:实现 CI/CD 管道(包括 Azure DevOps (ADO) 和 GitHub 工作流的登录)。 即将推出更多 CI/CD 集成选项。
- 综合验证:验证 CI/CD 管道(例如 ADO 和 GitHub 工作流),以及 Azure Kubernetes 服务 (AKS) 中的容器映像,以防止使用和部署不受信任的映像。
禁用 Docker 内容信任
在转换到 Notation Project 解决方案之前,必须禁用 Docker 内容信任。 使用以下任一方法禁用 Docker 内容信任:
通过将
DOCKER_CONTENT_TRUST
环境变量设置为0
来禁用 shell 中的 Docker 内容信任。 例如,在 Bash shell 中,请执行以下代码:export DOCKER_CONTENT_TRUST=0
或者,可以取消设置环境变量:
unset DOCKER_CONTENT_TRUST
从 Azure 门户禁用 Docker 内容信任。 在 Azure 门户中导航到注册表。 在“策略”下,选择“内容信任”,然后选择“禁用”,并选择“保存”。
使用 Azure CLI 禁用 Docker 内容信任:
az acr config content-trust update -r myregistry --status disabled
使用 Notary Project 对容器映像进行签名和验证
禁用 Docker 内容信任后,可以使用 Notary Project 对容器映像进行签名和验证。 使用以下参考资料开始。
对容器映像签名:
- 要配合使用 AKV 与自签名证书,请参阅使用自签名证书通过 Notation 和 Azure Key Vault 对容器映像进行签名
- 若要将 AKV 用于 CA 颁发的证书,请参阅使用 Notation 和 CA 颁发的证书 Azure Key Vault 对容器映像进行签名
- 若要登录 ADO 管道,请参阅在 Azure Pipeline 中使用 Notation 对容器映像进行签名和验证
- 若要登录 GitHub 工作流,请参阅使用 GitHub 工作流通过 Notation 对容器映像进行签名
验证容器映像:
- 若要在 ADO 管道中验证,请参阅在 Azure Pipeline 中使用 Notation 对容器映像进行签名和验证
- 若要在 GitHub 工作流中验证,请参阅 使用 GitHub Actions 通过 Notation 验证容器映像
- 若要在 AKS 上验证,请参阅 保护 AKS 工作负载:使用 Ratify 和 Azure Policy 验证容器映像签名