你当前正在访问 Microsoft Azure Global Edition 技术文档网站。 如果需要访问由世纪互联运营的 Microsoft Azure 中国技术文档网站,请访问 https://docs.azure.cn。
Azure 容器注册表将于 2028 年 3 月 31 日停用 Docker 内容信任(DCT )。 为了帮助进行此转换,本文提供了有关如何禁用 DCT 并采用 Notary Project 对容器映像进行签名和验证的指导。
DCT 弃用
DCT 允许映像发布者对其映像进行签名,并允许映像使用者验证他们拉取的映像是否已签名。 随着技术的进步,DCT 不再满足容器现代供应链安全性的要求。 因此,DCT 的弃用始于 2025 年 3 月 31 日。 DCT 将于 2028 年 3 月 31 日从 Azure 容器注册表中完全删除。
作为 DCT 的替代方法,Microsoft提供基于公证项目的签名和验证解决方案。 公证项目 是一组规范和工具,提供跨行业标准,通过使用真实的容器镜像和其他开放容器倡议(OCI)项目来保护软件供应链。
Notation 是 Notary Project 的工具,可实现公证项目规范。 它包括用于签名和验证容器映像和项目的命令行接口(CLI)和库。 使用 Notary Project 解决方案来确保容器映像的完整性和真实性的好处包括:
- 可移植性和互作性: 公证项目签名 遵循 OCI 标准 ,并且可以存储在符合 OCI 的注册表(如容器注册表)中。 这些功能有助于跨云环境实现签名可移植性和互作性。
- 安全密钥管理:可以使用 Azure Key Vault 管理签名密钥和证书。
- 与持续集成和持续交付(CI/CD)管道集成:实现 CI/CD 管道(包括 Azure DevOps 和 GitHub 工作流)的登录。
- 全面验证:验证 CI/CD 管道(例如 Azure DevOps 和 GitHub 工作流)和 Azure Kubernetes 服务(AKS) 中的容器映像,以防止使用和部署不受信任的映像。
禁用 DCT
在转换到 Notation 项目解决方案之前,您必须禁用 DCT。 请使用以下任一方法:
通过将环境变量
DOCKER_CONTENT_TRUST设置为0来禁用 shell 中的 DCT。 例如,在 Bash shell 中,使用以下命令:export DOCKER_CONTENT_TRUST=0或者,可以取消设置环境变量:
unset DOCKER_CONTENT_TRUST在 Azure 门户中禁用 DCT。 转到注册表,然后在“ 策略”下,选择“ 内容信任>已禁用>保存”。
使用 Azure CLI 禁用 DCT:
az acr config content-trust update -r myregistry --status disabled
使用 Notary Project 对容器映像进行签名和验证
禁用 DCT 后,可以使用 Notary Project 对容器映像进行签名和验证。 使用以下参考资料开始。
对容器映像签名:
- 若要将 Key Vault 与自签名证书配合使用,请参阅 使用表示法、Azure Key Vault 和自签名证书对容器映像进行签名。
- 若要将 Key Vault 与证书颁发机构(CA)颁发的证书配合使用,请参阅 使用表示法、Azure Key Vault 和 CA 颁发的证书对容器映像进行签名。
- 若要登录 Azure DevOps 管道,请参阅 在 Azure 管道中使用表示法对容器映像进行签名和验证。
- 若要登录 GitHub 工作流,请参阅 在 GitHub Actions 中使用表示法对容器映像进行签名。
验证容器映像:
- 若要在 Azure DevOps 管道中验证,请参阅 在 Azure 管道中使用表示法对容器映像进行签名和验证。
- 若要在 GitHub 工作流中验证,请参阅在 GitHub Actions 中使用表示法验证容器映像。
- 若要在 AKS 上验证,请参阅 使用批准和 Azure Policy 验证容器映像签名。