注意

本文档适用于 Ceph 的开发版本。

加密

创建 OSD 时,通过指定 --dmcrypt 标志,可以使用 dmcrypt 对逻辑卷进行加密。当使用 LVM 时,逻辑卷可以通过不同的方式进行加密。ceph-volume 没有 LVM 提供那么多的选项,但它以一致且可靠的方式加密逻辑卷。

在这种情况下,ceph-volume lvm 遵循以下约束:

  • 非 LVM 设备(例如分区)使用相同的 OSD 密钥进行加密。

LUKS

LUKS 目前有两个版本:1 和 2。版本 2 的实现稍微容易一些,但在 Ceph 支持的所有 Linux 发行版中并不普遍可用。

注意

本文档中将 LUKS 版本 1 称为“LUKS”。本文档中将 LUKS 版本 2 称为“LUKS2”。

LVM 上的 LUKS

加密是在现有逻辑卷之上完成的(这与加密物理设备不同)。任何单个逻辑卷都可以被加密,而其他卷保持未加密。这种方法还允许灵活的逻辑卷设置,因为加密将在 LV 创建后进行。

工作流程

设置 OSD 时,会创建一个密钥。该密钥以 JSON 格式传递给 Monitor 作为 stdin,以防止密钥被记录到日志中。

JSON payload 看起来像这样:

{
    "cephx_secret": CEPHX_SECRET,
    "dmcrypt_key": DMCRYPT_KEY,
    "cephx_lockbox_secret": LOCKBOX_SECRET,
}

密钥的命名约定是严格的,它们的命名方式是为了与 ceph-disk 使用的硬编码(旧版)名称保持一致。

  • cephx_secret:用于身份验证的 cephx 密钥

  • dmcrypt_key:用于解锁加密设备的密钥(或私钥)

  • cephx_lockbox_secret:用于检索 dmcrypt_key 的身份验证密钥。它被称为 lockbox 是因为 ceph-disk 过去有一个以它命名的未加密分区,用于存储公共密钥和其他 OSD 元数据。

命名约定很严格,因为 Monitors 支持 ceph-disk 使用这些密钥名称的命名约定。为了保持兼容性并防止 ceph-disk 出现故障,ceph-volume 使用相同的命名约定,尽管对于新的加密工作流程来说没有意义

在“prepare stage”(准备阶段)设置 OSD 的常规步骤之后(使用 bluestore),逻辑卷处于可以激活的状态,无论设备的状态如何(加密或解密)。

在激活时,逻辑卷被解密。OSD 在此过程正确完成后启动。

创建新 OSD 的加密工作流程摘要

  1. 创建 OSD。lockbox 和 dmcrypt 密钥都被创建并以 JSON 格式发送给 Monitors,表明这是一个加密的 OSD。

  2. 所有辅助设备(如 journal、db 或 wal)都使用相同的 OSD 密钥创建和加密。密钥存储在 OSD 的 LVM 元数据中。

  3. 激活通过确保设备已挂载、从 Monitors 检索 dmcrypt 密钥并在 OSD 启动前进行解密来继续。

由 Ceph 基金会为您呈现

Ceph 文档是由非营利性 Ceph 基金会 资助和托管的社区资源。如果您希望支持这项工作和我们的其他努力,请考虑 立即加入