队列中的加密消息

https://blueprints.launchpad.net/zaqar/+spec/encrypted-messages-in-queue

Zaqar 中的队列将支持在存储到存储后端之前加密消息,并且在消费者声明消息时也可能支持解密(或不解密)消息。此功能将增强消息服务的安全性。

问题描述

目前,Zaqar 无法加密任何消息,只是将这些消息存储到存储后端。这将带来一些安全问题,例如信息泄露或黑客攻击。

提议的变更

  1. 在队列对象中添加一个新元数据,用于指示如何加密消息

  2. “_enable_encrypt_messages=true/false”:这将告诉 Zaqar 是否在存储到后端之前加密消息。

  1. 支持在传输层使用算法加密消息,然后再将其存储到后端。在 V 周期中,Zaqar 可能只支持用于加密和解密的全局密钥,并且该密钥将由 Zaqar 服务持有。用户无需自行加密/解密消息。

  2. 更进一步,Zaqar 还可以支持让用户上传他们的公钥并自行持有私钥。在这种情况下,Zaqar 只需要使用公钥加密消息并将加密后的消息返回给用户。

  3. 关于算法,在 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

工作项

  1. 修改 api 和传输代码。

  2. 添加对加密算法和密钥管理的的支持。

  3. 添加此功能的发布说明。

  4. 更新 API 参考。

  5. 相应地更改单元测试、功能测试和 tempest 测试。

  6. 添加客户端支持。

依赖项

参考资料