第 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 协议 v1v2。新的 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 协议 v1v2 的 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 可以是 v1v2

由于 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 用于识别会话,并可重新连接现有会话。
消息交换
客户端和服务器开始交换消息,直到连接关闭为止。

其它资源