Docker 的群模式公钥基础设施(PKI)为容器编排系统的安全部署提供了简化方案。群内节点通过传输层安全(TLS)进行身份验证、授权与通信加密。
创建群时,执行命令 docker swarm init 后,管理节点会被设为群的主管理员。默认情况下,该管理员会生成一个自签根证书颁发机构(CA)及配套密钥对,用于保护新加入节点与群内通信的安全性。若需要,也可以通过 –external-ca 选项指定外部生成的根 CA。
当其他节点加入群时,管理节点还会产出两枚令牌供使用:工作令牌与管理令牌。每个令牌包含根 CA 的摘要和一个随机生成的私密信息。加入群的节点会使用该摘要来验证远端管理节点的根 CA 证书;远端管理节点则通过私密信息确认加入节点的授权状态。
每当新节点进入群,管理节点都会向其颁发证书。证书中包含随机生成的节点ID,用于在通用名(CN)和组织单位(OU)下标识节点及其角色。该节点ID 在当前群的生命周期内用于身份验证与加密。
下图示意管理节点与工作节点之间至少以 TLS 1.2 进行加密通信。

下列示例显示了来自工作节点证书的相关信息:

默认情况下,群内每个节点的证书每三个月更新一次。可以通过执行 docker swarm update –cert-expiry 来配置更新周期,最小轮换间隔为 1 小时。有关更多详情,请参考相关 CLI 文档。
