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 测试进行测试。
文档影响¶
无
参考资料¶
无