使用 Barbican 作为密钥后端¶
https://blueprints.launchpad.net/heat/+spec/barbican-as-secret-backend
我们使用简单的对称加密和静态密钥在 Heat 数据库中存储一些秘密数据。为了提高存储的安全性,我们应该可选地支持使用 Barbican 来存储这些密钥。
问题描述¶
Heat 使用简单的加密机制在其数据库中存储秘密数据,密钥在配置文件中指定。虽然它提供了一些安全性,但如果 Heat 节点被攻破,攻击者将可以访问所有用户的密钥。
提议的变更¶
添加一个新的标志到 Heat 配置文件,指定是否必须使用 Barbican 来存储密钥。如果设置,Heat 将查询服务目录以获取 Barbican 服务,并将密钥存储在用户项目中,使用可预测的前缀。
我们已经支持 2 种不同的解密方法,‘heat’ 是遗留版本,‘oslo_v1’ 是当前版本。当前使用这些方法加密的值将继续以相同的方式解密。当使用 Barbican 时,加密方法将被设置为 ‘barbican_v1’,并且值将是密钥的引用。
这需要重构,因为数据加密目前在 SQLAlchemy 数据层管理,而将其管理在更高级别可能更容易,特别是我们需要用户凭据才能与 Barbican 通信。
备选方案¶
似乎正在努力创建一个密钥管理 shim,它可以使用本地安全存储作为选项。我们可能需要等待这项工作完成。
实现¶
负责人¶
- 主要负责人
therve
里程碑¶
- 完成目标里程碑
Kilo-2
工作项¶
从 SQLAlchemy 层提取加密管理
将 Barbican 客户端移出 contrib
添加一个配置选项,将密钥发送到 Barbican 服务
依赖项¶
无