第 4 章 Ceph on-wire 加密
您可以使用 messenger 版本 2 协议通过网络为所有 Ceph 流量启用加密。me
senger v2 的安全模式设置加密 Ceph 守护进程和 Ceph 客户端之间的通信,从而为您提供端到端加密。
Ceph on-wire 协议 msgr2
的第二个版本包括几个新功能:
- 安全模式通过网络加密所有数据。
- 身份验证有效负载的封装改进。
- 功能公告和协商的改进。
Ceph 守护进程绑定到多个端口,允许旧旧 v1- 兼容新的 v2 兼容 Ceph 客户端,以连接同一存储集群。Ceph 客户端或其他 Ceph 守护进程连接到 Ceph Monitor 守护进程将先尝试使用 v2
协议(如果可能),但若不可能,则使用旧的 v1
协议。默认情况下,启用 messenger 协议 v1
和 v2
。新的 v2 端口为 3300,旧的 v1 端口默认为 6789。
messenger v2 协议有两个配置选项,用于控制是否使用 v1 还是 v2 协议:
-
ms_bind_msgr1
- 这个选项控制守护进程是否绑定到 v1 协议的端口,默认为true
。 -
ms_bind_msgr2
- 这个选项控制守护进程是否绑定到 v2 协议的端口,默认为true
。
同样,两个选项根据使用的 IPv4 和 IPv6 地址进行控制:
-
ms_bind_ipv4
- 此选项控制守护进程是否绑定到 IPv4 地址;默认为true
。 -
ms_bind_ipv6
- 这个选项控制守护进程是否绑定到 IPv6 地址,默认为true
。
使用 messenger 协议 v1
或 v2
的 Ceph 守护进程或客户端可以实施节流,即限制消息队列增长的机制。在个别情况下,守护进程或客户端可能会超过其节流,这会导致消息处理出现可能的延迟。命中节流限制后,您会收到以下低级警告信息:
Throttler Limit has been hit. Some message processing may be significantly delayed.
msgr2
协议支持两种连接模式:
crc
-
当使用
cephx
建立连接时,提供强大的初始身份验证。 -
提供
crc32c
完整性检查,以防止比特反转(bit flipping)攻击。 - 不能提供对恶意的中间人攻击提供保护。
- 不能阻止对认证后的网络流量进行窃听。
-
当使用
secure
-
当使用
cephx
建立连接时,提供强大的初始身份验证。 - 提供所有认证后的网络流量的完全加密。
- 提供加密完整性检查。
-
当使用
默认模式是 crc
。
请确定在规划 Red Hat Ceph Storage 集群时考虑集群 CPU 要求,使其包含加密开销。
Ceph 内核客户端目前支持使用 secure
模式,比如 Red Hat Enterprise Linux 上的 CephFS 和 krbd
。Ceph 客户端使用 librbd
(如 OpenStack Nova、Glance 和 Cinder)支持使用 secure
模式。
地址更改
对于同一存储集群中共存的 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 映射转储的示例:
epoch 1 fsid 50fcf227-be32-4bcb-8b41-34ca8370bd17 last_changed 2021-12-12 11:10:46.700821 created 2021-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
。 - 身份验证交换
- 所有数据(发送或接收)包含在连接的持续时间内。服务器将决定身份验证是否已完成,以及连接模式是什么。框架格式已被修复,可以采用三种不同的形式,具体取决于所使用的身份验证标志。
- Message Flow Handshake Exchange
- 对等点互相识别并建立会话。客户端会发送第一个消息,服务器将使用相同的消息进行回复。如果客户端与错误守护进程通信,服务器可以关闭连接。对于新会话,客户端和服务器会继续交换消息。客户端 Cookie 用于识别会话,并可重新连接现有会话。
- 消息交换
- 客户端和服务器开始交换消息,直到连接关闭为止。
其它资源
-
如需了解有关启用
msgr2
协议的详细信息 ,请参阅 Red Hat Ceph Storage 数据安全性和强化指南。