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--0j52ln6hxjpxk2wgk917abcnxywj3xed0y8vi1e5m9t3uttrtu-7bnxvvlz2mrcpfonjuztmtts9 \
172.31.46.109: 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--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--+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--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--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.

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

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

  1. docker swarm英文文档学习-6-添加节点到集群

    Join nodes to a swarm添加节点到集群 当你第一次创建集群时,你将单个Docker引擎置于集群模式中.为了充分利用群体模式,可以在集群中添加节点: 添加工作节点可以增加容量.当你将服 ...

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

    Deploy services to a swarm在集群中部署服务 集群服务使用声明式模型,这意味着你需要定义服务的所需状态,并依赖Docker来维护该状态.该状态包括以下信息(但不限于): 应该运 ...

  3. docker swarm英文文档学习-7-在集群中管理节点

    Manage nodes in a swarm在集群中管理节点 List nodes列举节点 为了查看集群中的节点列表,可以在管理节点中运行docker node ls: $ docker node ...

  4. docker swarm英文文档学习-4-swarm模式如何运行

    1)How nodes work Docker引擎1.12引入了集群模式,使你能够创建一个由一个或多个Docker引擎组成的集群,称为集群.集群由一个或多个节点组成:在群模式下运行Docker引擎1. ...

  5. docker swarm英文文档学习-5-在swarm模式中运行Docker引擎

    Run Docker Engine in swarm mode在swarm模式中运行Docker引擎 当你第一次安装并开始使用Docker引擎时,默认情况下禁用swarm模式.在启用集群模式时,需要处 ...

  6. docker swarm英文文档学习-3-开始

    https://docs.docker.com/engine/swarm/swarm-tutorial/ 1)Getting started with swarm mode 本教程向你介绍Docker ...

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

    Raft consensus in swarm mode 在集群模式中的Raft共识 当Docker引擎在集群模式下运行时,manager节点实现Raft 共识算法来管理全局集群状态.Docker s ...

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

    Store configuration data using Docker Configs 使用Docker Configs存储配置数据 Docker 17.06引入了集群服务配置,允许你在服务镜像或 ...

  9. docker swarm英文文档学习-10-使用Docker密钥管理敏感数据

    Manage sensitive data with Docker secrets使用Docker secrets管理敏感数据 About secrets 对于Docker Swarm服务来说,sec ...

随机推荐

  1. 左连接,右连接,内连接(left join ,right join,inner join)

    浅谈左连接,右连接,内连接(left join ,right join,inner join) 这个问题一直困扰着我,每次遇到就打擦边球,不正面应对.今天索性把这几个连接搞懂了,写下这篇博客, 让跟我 ...

  2. AOP 怎么理解?

    什么是 AOP ? AOP 为 Aspect Oriented Programming 的缩写,意为:面向切面编程,通过预编译方式和运行期动态代理实现程序功能的统一维护的一种技术.AOP 是 OOP ...

  3. centos7.4+mysql5.6+virtualenv+python3.6+nginx+uwsgi+django生产环境搭建

    一 更新yum # yum update 二 安装gcc  lrzsz软件 # yum install gcc 用来编译python3.6源码 # yum install lrzsz 用来上传文件 三 ...

  4. canvas-6font.html

    <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8&quo ...

  5. The Minimum Cycle Mean in a Digraph 《有向图中的最小平均权值回路》 Karp

    文件链接 Karp在1977年的论文,讲述了一种\(O(nm)\)的算法,用来求有向强连通图中最小平均权值回路(具体问题请参照这里) 本人翻译(有删改): 首先任取一个节点 \(s\) ,定义 \(F ...

  6. REM在edge浏览器中不重新计算解决

    经过多分析和排查,此问题解决的方案 第一种: 在CSS样式中添加 body { font-size:100% } 如果不起作用,可以尝试将引用的REMjs放在head内引用

  7. 在vue配置sass

    先npm两个插件 npm install sass-loader --save-dev npm install node-sass --save-dev 然后在webpack当中配置 { test: ...

  8. FreeSSHD login with permission denied

    登录遇到问题: Permission denied, please try again. 解决方法: 在window中使用freesshd开启ssh后,客户端登陆时报 access denied错误 ...

  9. Ansible--原理

    什么是Ansible Ansible是一种IT自动化运维工具,它可以配置系统,部署软件以及协调更高级的IT任务,例如持续部署或者是零停机滚动更新Ansible是新出现的自动化运维工具,基于Python ...

  10. Android Studio 通过一个登录功能介绍SQLite数据库的使用

    前言: SQLite简介:是一款轻型的数据库,是遵守ACID的关系型数据库管理系统,它包含在一个相对小的C库中.它是D.RichardHipp建立的公有领域项目.它的设计目标是嵌入式的,而且目前已经在 ...