使密钥管理器接口与 Barbican 互操作¶
Launchpad 蓝图 URL
https://blueprints.launchpad.net/nova/+spec/encryption-with-barbican
Havana 版本中添加的卷加密功能目前只能使用硬编码的单个密钥进行操作。一个更灵活和安全的解决方案是在 Barbican 中生成和存储密钥,Barbican 是一个连贯且安全的基于 Linux 的密钥管理系统 https://github.com/cloudkeep/barbican/wiki,目前正在 OpenStack 孵化过程中。
问题描述¶
问题 1:由于缺乏密钥管理服务,OpenStack 卷加密功能目前无法提供其设计的安全级别。现在仅提供一个占位符,这不足以在企业环境中部署卷加密功能。密钥无法存储,并且仅为所有卷提供一个硬编码密钥。 拟议的结果将提供为单个用户或租户创建和安全存储专用密钥的能力。
问题 2:由于缺乏密钥管理器,支持 LVM 的临时磁盘加密功能未被接受到 Icehouse 版本中。出于安全原因,由于磁盘与虚拟主机非常接近,临时磁盘加密必须使用安全存储在虚拟主机环境之外的密钥。
这两种情况都需要企业级的密钥管理器,Barbican(于 2014 年 3 月 10 日批准进入孵化期)正成为默认密钥管理器,预计将支持 OpenStack 卷加密、临时磁盘存储加密和其他潜在的安全功能。 https://wiki.openstack.org/wiki/Barbican/Incubation。为了使 Barbican 支持这两种存储加密功能,需要开发现有密钥管理器接口(nova/keymgr/key_mgr.py)与 Barbican 密钥管理器之间的接口,该接口用于卷加密。
用例¶
目前希望使用 OpenStack 卷加密功能的用户无法按租户进行加密。它当前只有一个不可更改的密钥。通过添加使用 Barbican 密钥管理器的选项,可以为每个租户创建和存储单独的密钥。这使得该功能更加安全。
项目优先级¶
N/A
提议的变更¶
创建一个接口,该接口将调用 python-barbicanclient,允许 Barbican 安全地生成、存储和呈现加密密钥给 Nova,以支持卷加密功能。该适配器是对卷加密功能中现有密钥管理抽象层的修改,支持 Cinder 上的块存储加密和临时磁盘加密。
备选方案¶
虽然可以直接调用 python-barbicanclient 而不是实现现有的密钥管理器接口,但额外的间接性允许更多的可扩展性,如果以后需要集成不同的密钥管理器。
数据模型影响¶
无
REST API 影响¶
无
安全影响¶
使用真正的密钥管理器极大地提高了卷加密和即将推出的临时磁盘加密功能的安全性。当每个用户或租户使用唯一密钥而不是通用密钥时,并且当密钥存储在单独的服务器上时,攻击者访问存储的加密数据将更加困难,这些数据属于用户或租户内的集体用户组。
虽然该包装器将处理加密密钥,但由于主机必须受信任,并且该包装器仅临时持有密钥,因此安全风险被认为很小。
通知影响¶
无
其他最终用户影响¶
无
性能影响¶
最初查询 Barbican 获取加密密钥的额外存储写入和读取时间应该可以忽略不计。
其他部署者影响¶
假设 Barbican 是默认密钥管理器,则没有影响。如果不是默认密钥管理器,则需要在 Nova 中添加一个配置标志。
开发人员影响¶
无
实现¶
负责人¶
- 主要负责人
hadi-esiely-barrera
- 其他贡献者
brianna-poulos bruce-benjamin
工作项¶
开发现有密钥管理器接口方法(例如,get_key)到相应的 python-barbicanclient 调用的简单翻译。
依赖项¶
无
测试¶
应执行 Tempest 测试,以确保包装器工作正常。
文档影响¶
需要记录将 Barbican 作为存储加密的默认密钥管理器使用情况。
参考资料¶
无