注意

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

Encryption

逻辑卷可以使用dmcrypt通过在创建 OSD 时指定--dmcrypt标志。在使用 LVM 时,逻辑卷可以ceph-volume与 LVM 相比,它提供的选项较少,但它以一致且稳健的方式加密逻辑卷。

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

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

LUKS

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

Note

本文档中提到的 LUKS 版本 1 称为“LUKS”。本文档中提到的 LUKS 版本 2 称为“LUKS2”。

LVM 上的 LUKS

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

工作流程

在设置 OSD 时,会创建一个密钥。该密钥以 JSON 格式传递给监控器,stdin以防止密钥被捕获在日志中。

JSON 负载看起来像这样:

{
    "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 元数据。

命名约定是严格的,因为监控器支持 ceph-disk 的命名约定,该约定使用了这些密钥名称。为了保持兼容性并防止 ceph-disk 出现问题,ceph-volume 使用相同的命名约定尽管这对新的加密工作流程来说没有意义。.

在“准备阶段”(使用bluestore)设置 OSD 的常见步骤之后,逻辑卷准备就绪,可以激活,无论设备的状态如何(加密或未加密)。

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

创建新 OSD 的加密工作流程总结

  1. 创建 OSD。lockbox 和 dmcrypt 密钥被创建并以 JSON 格式发送给监控器,表示加密的 OSD。

  2. 所有辅助设备(如日志、数据库或 wal)被创建并以相同的 OSD 密钥加密。密钥存储在 OSD 的 LVM 元数据中。

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

由 Ceph 基金会带给您

Ceph 文档是一个社区资源,由非盈利的 Ceph 基金会资助和托管Ceph Foundation. 如果您想支持这一点和我们的其他工作,请考虑加入现在加入.