非常教程

Docker 17参考手册

引擎: 安全 | Engine: Security

管理内容信任的密钥 | Manage keys for content trust (Engine)

通过使用密钥来管理图像标签的信任。Docker的内容信任使用五种不同类型的密钥:

描述

根密钥

图像标签的内容信任根。启用内容信任后,您将创建一次根密钥。也称为脱机密钥,因为它应该保持脱机状态。

目标

此密钥允许您签署图像标记,以管理委托,包括委托密钥或允许的委派路径。也称为存储库密钥,因为此密钥确定可以将哪些标签签入图像存储库。

快照

这个键标记当前的图像标签集合,防止混合和匹配攻击。

时间戳

此密钥允许Docker映像存储库具有新鲜度安全保证,而无需在客户端定期刷新内容。

委托键

授权密钥是可选的标签密钥,允许您将签名图像标签委托给其他发布者,而无需共享目标密钥。

当做一个docker push在第一次启用内容信任之后,将自动为映像存储库生成根、目标、快照和时间戳键:

  • 根键和目标键是本地客户端生成和存储的.
  • 时间戳和快照键安全地生成并存储在部署在Docker注册表旁边的签名服务器中。这些密钥是在后端服务中生成的,该后端服务不直接暴露在互联网上,而是在休息时加密。

授权密钥是可选的,不是作为正常docker工作流程的一部分生成的。他们需要手动生成并添加到存储库。

注意:在Docker Engine 1.11之前,快照键也是在客户端本地生成和存储的。使用公证卡CLI再次本地管理您的快照密钥,以获取使用较新版本的Docker创建的存储库。

选择一个密码

您为根密钥和存储库密钥选择的密码应该随机生成并存储在密码管理器中。使用存储库密钥允许用户在存储库上签名图像标签。密码短语用于加密您的密钥,并确保丢失的笔记本电脑或意外备份不会使密钥材料处于危险之中。

备份你的钥匙

所有Docker信任密钥都使用您在创建时提供的密码进行加密存储。即使如此,您仍应该照顾您备份它们的位置。好的做法是创建两个加密的USB密钥。

将钥匙备份到安全,安全的位置非常重要。存储库密钥的丢失是可恢复的,而根键的损失却不是。

Docker客户端将密钥存储在~/.docker/trust/private目录中。在备份之前,您应该将tar归档:

$ umask 077; tar -zcvf private_keys_backup.tar.gz ~/.docker/trust/private; umask 022

硬件存储和签名

Docker Content Trust可以使用Yubikey 4的根密钥进行存储和签名。Yubikey优先于存储在文件系统中的密钥。当您使用内容信任初始化新的存储库时,Docker Engine会在本地查找根密钥。如果没有找到密钥并且存在Yubikey 4,则Docker Engine将在Yubikey 4中创建一个根密钥。请参阅公证文档以获取更多详细信息。

在Docker Engine 1.11之前,这一特性只出现在实验分支中。

丢失的钥匙

如果发行商丢失密钥,这意味着您无法为您的存储库签署可信内容。如果丢失密钥,请联系Docker Support(support@docker.com)以重置存储库状态。

这种损失还需要每个在损失之前拉动标签图像的消费者进行手动干预。图片使用者会收到他们已经下载的内容的错误讯息:

Warning: potential malicious behavior - trust data has insufficient signatures for remote repository docker.io/my/image: valid signatures did not meet threshold

要纠正这一点,他们需要下载一个新的图像标记,该标记是用新键签名的。

相关信息

  • 码头的内容信任
  • 内容信任的自动化
  • 内容信任授权
  • 在内容信任沙箱中播放

信任,安全,根,密钥,存储库

Docker 17

Docker 是一个开源的应用容器引擎,让开发者可以打包他们的应用以及依赖包到一个可移植的容器中,然后发布到任何流行的 Linux 机器上,也可以实现虚拟化。容器是完全使用沙箱机制,相互之间不会有任何接口。

主页 https://docker.com/
源码 https://github.com/docker/docker
版本 17
发布版本 17.06