开启Docker Content Trust后如何验证拉取镜像的来源合法性
DCT场景下验证已拉取镜像来源的操作方法
开启Docker Content Trust(DCT)功能后,拉取镜像时已经自动完成了基础的签名校验,要主动确认镜像的发布方身份,比如验证拉取的nginx镜像确实由官方发布,可按以下步骤操作:
1. 基础来源校验
- 执行
docker trust inspect --pretty 镜像名:标签命令查看镜像的签名信息,以nginx:latest为例,命令为docker trust inspect --pretty nginx:latest - 查看输出中的Signers(签名者)字段,Docker官方镜像的签名者会明确标注为
Official Repo Signer,该签名密钥是Docker官方预先内置在DCT信任根中的,不存在伪造可能 - 核对输出中Signed Tags列表对应标签的digest值,和本地拉取镜像的digest是否一致:本地镜像digest可通过
docker images --digests nginx查询,二者完全匹配即可证明镜像未被篡改,且来源为官方签名的版本
2. 进阶身份校验
如果需要进一步确认签名密钥的合法性,可执行notary key list查看本地存储的已信任根密钥列表,Docker官方镜像的根密钥指纹为固定公开值,和列表中对应密钥的指纹一致即可100%确认发布方身份。
3. 私有仓库镜像校验
如果拉取的是私有仓库的镜像,需要提前将仓库发布方的公钥添加到本地~/.docker/trust/pubkeys目录下,拉取完成后执行docker trust verify 镜像名:标签,返回Successfully verified signature for 镜像名:标签即代表来源合法。
注意:只要开启DCT后成功拉取的镜像,默认已经过签名校验,以上步骤为主动二次确认的操作,避免极端场景下信任根被篡改的风险。
内容的提问来源于stack exchange,提问作者yzftnt
相关产品推荐
相关产品推荐

