Volume Rekey

https://blueprints.launchpad.net/cinder/+spec/volume-rekey

Cinder 支持使用 Barbican 存储的密钥进行卷加密。

本规范跟踪了我们可以改进加密密钥处理方式的一些改进。

问题描述

当克隆卷时,cinder 也会克隆加密密钥,因此可以使用相同的加密密钥解锁多个卷。

我们可以通过在卷克隆时更改加密密钥来使此加密方案更加健壮,从而使克隆卷无法使用源卷的密钥解锁。

这是可能的,因为我们使用 LUKS 加密卷。更改密钥不需要重新加密卷。

用例

卷加密的安全加固。

提议的变更

在克隆过程中将卷附加为克隆过程的一部分,并使用 LUKS 工具更改加密密钥。

此后,克隆过程将正常继续。

我当前的实现通过在 create_volume 流中调用一个新的 rekey_volume() 方法来做到这一点,该方法使用“cryptsetup luksChangeKey”。这应该适用于所有 iSCSI/FC 驱动程序,这些驱动程序在从镜像创建卷时已经必须执行类似的附加操作。

一些工作(计划在 Train 之后进行)仍然需要使它适用于 RBD,因为似乎没有 qemu-img 工具可以更改加密密钥,并且 cryptsetup 需要一个本地块设备。这为 RBD 留下了两个选项:a) 使用 krbd 映射获取块设备 b) 使用 rbd-nbd 获取块设备

NBD 在相关操作系统中支持度不高,因此 krbd 看起来是那里更好的选择。

备选方案

数据模型影响

REST API 影响

安全影响

  • 由于单个加密密钥泄露,卷加密得到了更好的安全加固。

Active/Active HA 影响

通知影响

其他最终用户影响

性能影响

克隆加密卷的时间略微增加。

其他部署者影响

开发人员影响

实现

负责人

主要负责人

eharney

工作项

  • 为 iSCSI/FC 驱动程序实现此功能

  • 使用 LVM 驱动程序进行测试

在后续版本中… * 为 RBD 实现此功能 - 需要一些额外的努力 * 考虑其他可以使用此概念的场景 - 卷传输 - 备份恢复(?)

依赖项

测试

默认情况下启用,因此将被克隆加密卷的 tempest 测试进行测试。

文档影响

参考资料