题图摄于北京怀柔区:五色梅
阅读导航
一、Harbor 内容信任功能防止镜像被篡改
二、镜像内容信任功能原理
三、镜像内容信任演示视频
四、Harbor征文活动送T-Shirt等纪念品,含平板电脑、Kindle等大奖
五、10月27日云原生DevOps运维论坛免费报名
(本文发布时,Harbor在Github上已获得2915颗星:https://github.com/vmware/harbor)
采用容器封装应用十分方便,已经得到越来越多的使用。用户通过一些基础容器镜像,如 Ubuntu:16.04 等,可构造出符合应用场景的镜像。由于构建容器镜像时经过了很多环节,会带来一个问题,特别是在生产环境中会更多关注:用于部署的应用镜像是否具有可信任的来源?如果有人悄悄把镜像替换了,怎样可以发现?
在容器镜像管理中,我们可通过内容信任(Content Trust)的机制来确保镜像的来源可信。镜像的创建者可以对镜像做数字签名,签名的结果称为摘要(Digest),保存在一个称为 Notary 服务中。当镜像的用户下载时,根据镜像的名称,可以从 Notary 获得镜像的摘要,然后使用 Registry V2 的 API,做 Pull by content (Digest)的 Registry 调用,即可获得来自信任者的镜像。如果镜像没有签过名,获取 Digest 会失败,因而无法下载镜像。
镜像内容信任的机制
开源企业级 Harbor 镜像仓库从 v1.1 起增加了镜像内容信任的能力,可以帮助用户实现容器镜像的内容信任问题。在安装 Harbor 时,加上 --with-notary 选项,并且设置 HTTPS 功能,即可启动 Notary 服务。在 Docker 客户端可设置两个环境变量,即可使用内容信任功能获取信任的镜像:
export DOCKER_CONTENT_TRUST=1
export DOCKER_CONTENT_TRUST_SERVER=https://Harbor_IP:4443
集成了内容信任Notary之后的Harbor架构图
更详细的使用说明,可参考 Harbor 的用户使用文档和安装部署文档。
https://github.com/vmware/harbor/blob/master/docs/user_guide.md
https://github.com/vmware/harbor/blob/master/docs/installation_guide.md
下面视频由 Harbor 核心开发工程师邹佳录制,演示了 Harbor 镜像内容信任的功能。