队列中的加密消息¶
https://blueprints.launchpad.net/zaqar/+spec/encrypted-messages-in-queue
Zaqar 中的队列将支持在存储到存储后端之前加密消息,并且在消费者声明消息时也可能支持解密(或不解密)消息。此功能将增强消息服务的安全性。
问题描述¶
目前,Zaqar 无法加密任何消息,只是将这些消息存储到存储后端。这将带来一些安全问题,例如信息泄露或黑客攻击。
提议的变更¶
在队列对象中添加一个新元数据,用于指示如何加密消息
“_enable_encrypt_messages=true/false”:这将告诉 Zaqar 是否在存储到后端之前加密消息。
支持在传输层使用算法加密消息,然后再将其存储到后端。在 V 周期中,Zaqar 可能只支持用于加密和解密的全局密钥,并且该密钥将由 Zaqar 服务持有。用户无需自行加密/解密消息。
更进一步,Zaqar 还可以支持让用户上传他们的公钥并自行持有私钥。在这种情况下,Zaqar 只需要使用公钥加密消息并将加密后的消息返回给用户。
关于算法,在 V 周期中,Zaqar 将首先引入 AES-256 加密。在后续周期中,Zaqar 可以支持非对称加密,让用户上传公钥并自行保存私钥。
注意
关于加密算法和密钥的选项,Zaqar 将支持通过队列的更多元数据来指定它们,但这将在接下来的几个周期中完成。在 Victoria 中,我们将选择一种算法(例如 AES256)来支持,并支持由 Zaqar 本身或其他服务(如 Barbican)存储密钥。
API 影响¶
创建队列列表
POST: /v2/queues/queue_name
RESPONSE CODE: 200
REQUEST BODY:
{
"_enable_encrypt_messages": true
}
缺点¶
加密算法将影响将消息存储到后端和从队列中获取消息的性能。
这取决于我们选择和支持哪种加密算法。
备选方案¶
无
实现¶
负责人¶
- 主要负责人
wanghao <sxmatch1986@gmail.com>
- 二级分配人
无
里程碑¶
- 完成目标里程碑
victoria M-2
工作项¶
修改 api 和传输代码。
添加对加密算法和密钥管理的的支持。
添加此功能的发布说明。
更新 API 参考。
相应地更改单元测试、功能测试和 tempest 测试。
添加客户端支持。
依赖项¶
无
参考资料¶
无