添加传输证书引用

Launchpad 蓝图: https://blueprints.launchpad.net/barbican/+spec/add-transport-cert-ref

问题描述

传输密钥用于确保秘密被预先加密,只有客户端和后端存储才能解密该秘密。

这适用于不信任 Barbican,但信任后端密钥存储的用户。或者,如果客户端需要符合 FIPS 或通用标准 (CC) 要求,并且只能使用 CC 认证的组件,他们可能可以论证使用 Barbican,只要秘密在通过 Barbican 传输到最终存储后端时保持不透明即可。

目前,客户端从 Barbican 获取传输密钥。但如果客户端不信任 Barbican,这可能存在漏洞。我们需要添加客户端直接从后端存储检索传输密钥的能力。

提议的变更

这里的更改很简单。除了在 GET /transportkeys/{key_id} 调用结果中仅返回传输证书外,我们还将在标头中返回对传输密钥的引用 (TRANSPORT_KEY_URL)。此引用将由插件提供,应该是指向可信位置的链接,客户端可以在该位置检索传输证书。实际上,这很可能通过 HTTPS 连接到后端密钥存储。

从内部来看,这意味着 secret_store 接口中的 get_transport_key() 方法将被修改为返回一个包含传输密钥值和外部 URL 的字典。我们将使用此字典填充响应的内容和标头。

由于此方法已经具有 None 默认配置,因此此更改不应需要对现有插件进行任何更改。

备选方案

这是一个微不足道的更改,使传输密钥的故事更加完整。

数据模型影响

无。

REST API 影响

将添加一个新字段到响应标头中,用于 GET /transportkeys/{key_id},如上所述。

安全影响

使传输密钥更安全。

通知影响

无。

其他最终用户影响

客户端需要决定是接受 Barbican 返回的传输证书值,还是从提供的 URL 检索该值。

性能影响

无。

其他部署者影响

无。

开发人员影响

无。

实现

负责人

主要负责人

alee

工作项

  1. 服务器端更改可能在一个 CR 中完成。

  2. 客户端更改。

依赖项

无。

测试

需要编写单元和功能测试。

文档影响

需要编写和更新有关传输密钥使用的文档。

参考资料