第 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 协议。默认情况下,消息传递协议 v1v2 均被启用。新的 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 可以是 v1v2

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

其它资源