使用 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 服务

依赖项