docker swarm英文文档学习-11-上锁你的集群来保护你的加密密钥

Lock your swarm to protect its encryption key上锁你的集群来保护你的加密密钥

在Docker 1.13及更高版本中,默认情况下,群管理器使用的Raft日志在磁盘上加密。这种静止加密保护你的服务的配置和数据不受获得加密Raft日志访问权的攻击者的攻击。引入该特性的原因之一是支持新的Docker secrets特性。

当Docker重新启动时,用于加密集群节点间通信的TLS密钥和用于加密和解密磁盘Raft日志的密钥都被加载到每个管理器节点的内存中。Docker 1.13引入了保护相互TLS加密密钥和用于加密和解密Raft日志的密钥的能力,允许你获得这些密钥的所有权,并要求手动解锁管理器。这个功能叫做自动锁。

当Docker重新启动时,必须首先使用Docker在集群被锁定时生成的密钥加密密钥对集群进行解锁。你可以在任何时候轮转此密钥加密密钥。

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

Initialize a swarm with autolocking enabled 初始化启动自动锁功能的集群

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

$ docker swarm init --autolock

Swarm initialized: current node (k1q27tfyx9rncpixhk69sa61v) is now a manager.

To add a worker to this swarm, run the following command:

    docker swarm join     --token SWMTKN-1-0j52ln6hxjpxk2wgk917abcnxywj3xed0y8vi1e5m9t3uttrtu-7bnxvvlz2mrcpfonjuztmtts9     172.31.46.109:2377

To add a manager to this swarm, run ‘docker swarm join-token manager‘ and follow the instructions.

To unlock a swarm manager after it restarts, run the `docker swarm unlock`
command and provide the following key:

    SWMKEY-1-WuYH/IX284+lRcXuoVf38viIDK3HJEKY13MIHX+tTt8

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

当Docker重启时,你需要解锁集群。当你试图启动或重新启动服务时,锁定的集群会导致如下错误:

$ sudo service docker restart

$ docker service ls

Error response from daemon: Swarm is encrypted and needs to be unlocked before it can be used. Use "docker swarm unlock" to unlock it.

Enable or disable autolock on an existing swarm在已有集群中启用或禁用自动锁功能

在已有集群中启用自动锁功能,设置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

在禁用自动锁之后,请将解锁密钥保留一段时间,以防在仍然配置为使用旧密钥锁定时,管理器出现故障。

Unlock a swarm解锁集群

使用docker swarm unlock 命令解锁一个上锁集群

$ docker swarm unlock

Please enter unlock key:

输入在锁定集群或轮转密钥时生成并显示在命令输出中的加密密钥,集群就会解锁。

View the current unlock key for a running swarm 查看正在运行的集群的当前解锁密钥

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

如果自节点离开群集后密钥没有被轮转,并且你在群集中有一个仲裁的函数管理器节点,那么你可以使用docker swarm unlock-key查看当前的解锁密钥,而不需要任何参数。

$ docker swarm unlock-key

To unlock a swarm manager after it restarts, run the `docker swarm unlock`
command and provide the following key:

    SWMKEY-1-8jDgbUNlJtUe5P/lcr9IXGVxqZpZUXPzd+qzcGp4ZYA

Please remember to store this key in a password manager, since without it you
will not be able to restart the manager.

如果在群集节点不可用之后轮转了密钥,并且你没有上一个密钥的记录,则可能需要强制管理器离开群集,并将其作为新管理器加入到群集中。

Rotate the unlock key轮转解锁密钥

你应该定期轮转被锁集群的解锁密钥。

$ docker swarm unlock-key --rotate

Successfully rotated manager unlock key.

To unlock a swarm manager after it restarts, run the `docker swarm unlock`
command and provide the following key:

    SWMKEY-1-8jDgbUNlJtUe5P/lcr9IXGVxqZpZUXPzd+qzcGp4ZYA

Please remember to store this key in a password manager, since without it you
will not be able to restart the manager.

警告:当你轮转解锁密钥时,请将旧键的记录保留几分钟,这样,如果管理器在获取新键之前宕机,那么它仍然可以使用旧键解锁。

原文地址:https://www.cnblogs.com/wanghui-garcia/p/10245865.html

时间: 2024-10-12 14:58:08

docker swarm英文文档学习-11-上锁你的集群来保护你的加密密钥的相关文章

docker swarm英文文档学习-12-在集群模式中的Raft共识

Raft consensus in swarm mode 在集群模式中的Raft共识 当Docker引擎在集群模式下运行时,manager节点实现Raft 共识算法来管理全局集群状态.Docker swarm模式使用共识算法的原因是为了确保集群中负责管理和调度任务的所有manager节点都存储相同的一致性状态.跨集群具有相同的一致状态意味着在出现故障时,任何管理器节点都可以接收任务并将服务恢复到稳定状态.例如,如果集群中负责调度任务的Leader Manager意外死亡,那么任何其他Manage

docker swarm英文文档学习-2-关键概念

参考https://docs.docker.com/engine/swarm/key-concepts/ Swarm mode key concepts集群模式关键概念 本主题介绍Docker Engine 1.12集群管理和编配特性特有的一些概念. What is a swarm? Docker引擎中嵌入的集群管理和编配功能是使用swarmkit构建的.Swarmkit是一个独立的项目,它实现了Docker的编配层,并直接在Docker中使用. 集群由多台以集群模式运行的Docker主机组成,

docker swarm英文文档学习-1-概述

参考https://docs.docker.com/engine/swarm/ Swarm mode overview群模式概述 Docker的当前版本包括集群模式,用于本地管理称为集群的Docker引擎集群.使用Docker CLI创建一个集群,将应用程序服务部署到一个集群,并管理集群行为. 1.突出特性: 1)与Docker引擎集成的集群管理 : 使用Docker引擎CLI创建一组Docker引擎的集群,你可以在其中部署应用程序服务.你不需要额外的编配软件来创建或管理集群. 2)去中心化设计

docker swarm英文文档学习-8-在集群中部署服务

Deploy services to a swarm在集群中部署服务 集群服务使用声明式模型,这意味着你需要定义服务的所需状态,并依赖Docker来维护该状态.该状态包括以下信息(但不限于): 应该运行服务容器的镜像名称和标记有多少容器参与服务是否有任何端口暴露给集群之外的客户端当Docker启动时,服务是否应该自动启动重启服务时发生的特定行为(例如是否使用滚动重启)服务可以运行的节点的特征(例如资源约束和位置首选项)有关群模式的概述,请参见 Swarm mode key concepts.有关

docker swarm英文文档学习-9-使用Docker Configs存储配置数据

Store configuration data using Docker Configs 使用Docker Configs存储配置数据 Docker 17.06引入了集群服务配置,允许你在服务镜像或运行的容器之外存储非敏感信息,如配置文件.这允许你尽可能保持镜像的通用性,而不需要将配置文件绑定到容器中或使用环境变量.Configs的操作方式与secret类似,不同的是它们没有在静止时加密,而是直接挂载到容器的文件系统中,而不使用RAM磁盘.配置可以在任何时候从服务中添加或删除,服务可以共享配置

py爬取英文文档学习单词

最近开始看一些整本整本的英文典籍,虽然能看个大概,但是作为四级都没过的我来说还是有些吃力,总还有一部分很关键的单词影响我对句子的理解,因为看的是纸质的,所以查询也很不方便,于是想来个突击,我想把程序单词收拢在一起学习一下,希望这样的更有针对性一些,因为你想,arbitrary (任意的,武断的)这样的单词不太可能会出现在技术文档上,学了这样的单词对理解英文技术文档没有太大帮助.所以今天花了几个小时研究了一下,发现是很可行的,实现也不算难.步骤主要是以下几点,第一:先搞定翻译接口.翻译的来源分为接

storm文档(11)----搭建storm集群

转载请注明出处:http://blog.csdn.net/beitiandijun/article/details/41684717 源地址:http://storm.apache.org/documentation/Setting-up-a-Storm-cluster.html 本文叙述了storm集群搭建和运行步骤.如果你打算在AWS上进行的话,可以使用storm-deploy项目.storm-deploy在EC2上完全自动进行下载.配置.以及storm集群的安装等步骤.它也为你配置了Gan

PHP-redis英文文档

作为程序员,看英文文档是必备技能,所以尽量还是多看英文版的^^ PhpRedis The phpredis extension provides an API for communicating with the Redis key-value store. It is released under the PHP License, version 3.01. This code has been developed and maintained by Owlient from November

Android 英文文档下载地址

通过英文Android API学习Android技术是一个不错选择,当然养鸡的专业户要小心了,下面分享一些下载英文文档的链接(请使用迅雷下载): https://dl-ssl.google.com/android/repository/docs-16_r03.zip        https://dl-ssl.google.com/android/repository/docs-17_r02.zip        https://dl-ssl.google.com/android/reposit