第 5 章 Ceph on-wire 加密
自红帽 Ceph 存储 4 及更高版本开始,您可以通过引入 messenger 版本 2 协议,通过网络为所有 Ceph 流量启用加密。消息传递 v2 的 secure
模式设置加密 Ceph 守护进程和 Ceph 客户端之间的通信,为您提供端到端加密。
Ceph 的第二个版本 on-wire 协议 msgr2
包括几个新功能:
- 加密通过网络移动的所有数据的安全模式。
- 验证有效负载的封装改进。
- 功能广告和协商改进.
Ceph 守护进程绑定到多个端口,允许传统的 v1- 兼容和新的 v2 兼容 Ceph 客户端连接相同的存储集群。Ceph 客户端或其他与 Ceph 监控守护进程连接的 Ceph 守护进程将首先尝试使用 v2
协议(如果可能),但如果未使用,则将使用传统的 v1
协议。默认情况下,消息传递协议 v1
和 v2
均被启用。新的 v2 端口为 3300,默认情况下,传统 v1 端口为 6789。
msgr2
协议支持两种连接模式:
crc
-
使用
cephx
建立连接时,提供强大的初始身份验证。 -
提供
crc32c
完整性检查来防止位片段。 - 不提供对中间人恶意攻击的保护。
- 不会阻止窃听器查看所有验证后流量。
-
使用
secure
-
使用
cephx
建立连接时,提供强大的初始身份验证。 - 提供所有验证后流量的完整加密。
- 提供加密完整性检查。
-
使用
默认模式为 crc
。
在规划 Red Hat Ceph Storage 集群时,请考虑集群 CPU 的要求,使其包含加密开销。
Ceph 内核客户端目前支持使用 secure
模式,如 CephFS 和 Red Hat Enterprise Linux 8.2 上的 krbd
。使用 librbd
的 Ceph 客户端支持使用 secure
模式,如 OpenStack Nova、Glance 和 Cinder。
地址更改
对于两个版本的 messenger 协议,在同一存储集群中共存,地址格式已改变:
-
旧地址格式为
IP_ADDR : PORT / CLIENT_ID
,例如1.2.3.4:5678/91011
。 -
新地址格式为
PROTOCOL_VERSION : IP_ADDR : PORT / CLIENT_ID
,例如v2:1.2.3.4:5678/91011
,其中 PROTOCOL_VERSION 可以是v1
或v2
。
由于 Ceph 守护进程现在绑定到多个端口,守护进程会显示多个地址,而不是一个地址。以下是 monitor map 的转储示例:
epoch 1 fsid 50fcf227-be32-4bcb-8b41-34ca8370bd17 last_changed 2019-12-12 11:10:46.700821 created 2019-12-12 11:10:46.700821 min_mon_release 14 (nautilus) 0: [v2:10.0.0.10:3300/0,v1:10.0.0.10:6789/0] mon.a 1: [v2:10.0.0.11:3300/0,v1:10.0.0.11:6789/0] mon.b 2: [v2:10.0.0.12:3300/0,v1:10.0.0.12:6789/0] mon.c
另外,mon_host
配置选项以及在命令行中使用 -m
指定地址支持新的地址格式。
连接阶段
进行加密连接有四个阶段:
- 横幅
-
在连接上,客户端和服务器都发送横幅。目前,Ceph 横幅为
ceph 0 0n
。 - 身份验证 Exchange
- 在连接期间,所有发送或接收的数据都包含在一个帧中。服务器决定身份验证是否已完成,以及连接模式是什么。帧格式是固定的,可以是三种不同的形式,具体取决于所使用的身份验证标志。
- 消息流 Handshake Exchange
- 同行互相识别并组成一个会话。客户端发送第一条消息,服务器将回复相同的消息。如果客户端与错误的守护进程通信,服务器可以关闭连接。对于新会话,客户端和服务器继续交换消息。客户端 Cookie 用于识别会话,并可重新连接到现有会话。
- 消息交换
- 客户端和服务器开始交换消息,直到连接关闭。
其它资源
-
有关启用
msgr2
协议的详情,请参阅红帽 Ceph 存储数据安全性和硬化指南。