1. Devops/

锁定集群以保护加密文件

·69 字·1 分钟· loading
docker devops
demo007x
作者
demo007x

锁定集群以保护加密文件
#

什么是“自动锁定”
#

默认情况下,集群管理器使用的raft 算法的日志在磁盘上加密。这种静态加密可保护服务配置和数据免受访问加密Raft日志的攻击者的攻击。因此引入了Docker secret 功能,来保证加密文件的安全。

当Docker重新启动时,用于加密群节点之间通信的TLS密钥和用于加密和解密磁盘上的Raft日志的密钥都加载到每个管理器节点的内存中。Docker能够保护相互TLS加密密钥以及用于加密和解密静态Raft日志的密钥,允许您拥有这些密钥,并要求在 manager手动解锁。此功能称为自动锁定

当Docker重新启动时,您必须首先使用Docker在集群锁定时生成的密钥加密密钥来解锁集群。并且我们也可以随时修改此密钥加密密钥。

注意:当新节点加入集群时,是不不需要解锁蜂群,因为密钥通过相互TLS传播给它。

在启用自动锁定的情况下初始化蜂群
#

当我们初始化新的集群时,您可以使用--autolock标志在Docker重新启动时启用群管理器节点的自动锁定。

 docker swarm init --autolock

将密钥存储在安全的地方,例如密码管理器中。

当Docker重新或重新启动服务时,锁定的集群会导致以下错误:

 sudo service docker restart
 docker service ls

在现有集群上启用或禁用自动锁定
#

要在现有蜂群上启用自动锁定,请将autolock标志设置为true

 docker swarm update --autolock=true

要禁用自动锁定,请将--autolock设置为false。用于读取和写入Raft日志的相互TLS密钥和加密密钥未加密存储在磁盘上。在静态存储未加密的加密密钥的风险和无需解锁每个manager即可重新启动蜂群的便利性之间存在权衡。

 docker swarm update --autolock=false

禁用自动锁定后,请将解锁密钥保留一段时间,以防manager在仍配置为使用旧密钥锁定时出现服务停止 s。

解锁集群
#

要解锁锁定的集群,请使用docker swarm unlock

 docker swarm unlock

当锁定集群或修改密钥时,输入生成并在命令输出中显示的加密密钥,集群解锁。

查看正在运行的集群当前解锁密钥
#

考虑我们的集群按预期运行的情况,然后管理器节点变得不可用。对问题进行故障排除,并使物理节点重新联机,但需要通过提供解锁密钥来读取加密的凭据和Raft日志来解锁管理器。

如果自节点离开集群后,密钥尚未被修改,并且在集群中有一个功能管理器节点的法定人数,您可以使用docker swarm unlock-key查看当前解锁密钥,而无需任何参数。

 docker swarm unlock-key

如果密钥在群节点不可用后修改,并且没有上一个密钥的记录,我们可能需要强制manager离开蜂群,并将其作为新manager重新加入集群。

修改解锁键
#

我们应该定期修改锁定的集群的解锁密钥。

 docker swarm unlock-key --rotate

Note:当在修改解锁密钥时,请将旧密钥记录几分钟,这样如果manager在获得新密钥之前停止,它仍然可能被旧密钥解锁。

Related

使用Docker secret 管理敏感数据
docker devops
使用Docker secret 管理敏感数据
使用Docker config 存储数据
docker devops
使用Docker config 存储数据
docker-swarm 教程:stack(堆栈式服务)及节点管理篇
docker devops
docker-swarm 教程:stack(堆栈式服务)及节点管理篇