群管理器使用的 Raft 日志默认在磁盘上加密。这种静态加密可以保护您的服务的配置和数据免受访问加密 Raft 日志的攻击者的侵害。引入此功能的原因之一是为了支持Docker 机密功能。
当 Docker 重新启动时,用于加密 swarm 节点之间通信的 TLS 密钥和用于加密和解密磁盘上 Raft 日志的密钥都会加载到每个管理器节点的内存中。Docker 能够保护相互 TLS 加密密钥和用于加密和解密静态 Raft 日志的密钥,允许您拥有这些密钥的所有权并要求您的管理器手动解锁。此功能称为自动锁定。
当 Docker 重新启动时,您必须先 解锁 swarm,使用swarm 锁定时 Docker 生成的 密钥加密密钥。您可以随时轮换此密钥加密密钥。
在现有群上启用或禁用自动锁定
要在现有群上启用自动锁定,请将autolock标志设置为true。
$ docker swarm update --autolock=true
Swarm updated.
To unlock a swarm manager after it restarts, run the `docker swarm unlock`
command and provide the following key:
SWMKEY-1-+MrE8NgAyKj5r3NcR4FiQMdgu+7W72urH0EZeSmP/0Y
Please remember to store this key in a password manager, since without it you
will not be able to restart the manager.
要禁用自动锁定,请设置--autolock为false。用于读写 Raft 日志的双向 TLS 密钥和加密密钥未加密地存储在磁盘上。在存储未加密的加密密钥的风险与无需解锁每个管理器的情况下重新启动群的便利性之间存在权衡。
$ docker swarm update --autolock=false
禁用自动锁定后,将解锁密钥保留一小段时间,以防管理器在仍配置为使用旧密钥锁定的情况下宕机。