64d0a2a0de
a few cleanups: - Remove obsolete sections from setup.cfg - Switch to using sphinx-build - Remove install_command from tox.ini, the default is fine - Update pbr requirement - Fix build problems - Switch to py38 for testing following Victoria testing platforms Change-Id: I1ff3853020d69aeceb8b81c21ce608b269015ece
129 lines
3.4 KiB
ReStructuredText
129 lines
3.4 KiB
ReStructuredText
..
|
|
This template should be in ReSTructured text. The filename in the git
|
|
repository should match the launchpad URL, for example a URL of
|
|
https://blueprints.launchpad.net/zaqar/+spec/awesome-thing should be named
|
|
awesome-thing.rst.
|
|
|
|
Please do not delete any of the sections in this
|
|
template. If you have nothing to say for a whole section, just write: None
|
|
|
|
For help with syntax, see http://sphinx-doc.org/rest.html
|
|
To test out your formatting, see http://www.tele3.cz/jbar/rest/rest.html
|
|
|
|
===========================
|
|
Encrypted Messages in Queue
|
|
===========================
|
|
|
|
https://blueprints.launchpad.net/zaqar/+spec/encrypted-messages-in-queue
|
|
|
|
The queue in Zaqar will support to encrypt messages before storing them into
|
|
storage backends, also could support to decrypt (or not) messages when those
|
|
are claimed by consumer. This feature will enhance the security of messaging
|
|
service.
|
|
|
|
Problem description
|
|
===================
|
|
|
|
Currently, Zaqar can't encrypt any messages and just store those messages into
|
|
storage backends. That'll bring some security issues like information leakage
|
|
or hacker attack.
|
|
|
|
Proposed change
|
|
===============
|
|
|
|
1. Add one new metadata in queue object that will indicate how to
|
|
encrypt messages:
|
|
|
|
#. "_enable_encrypt_messages=true/false" : this will tell Zaqar whether encrypt
|
|
messages before storing them into backends or not.
|
|
|
|
2. Support to use algorithms to encrypt messages in transport layer before
|
|
storing them into backends. In V cycle, Zaqar may just support the global
|
|
key for encryption and decryption, and it will be held by Zaqar service.
|
|
Users don't need to encrypt/decypt message by themselves.
|
|
|
|
3. Go a step further, Zaqar also could support to let user upload their public
|
|
key and hold the private key by themselves. In this case, Zaqar just need to
|
|
encrypt the message by using public key and return the encrypted messages to
|
|
user.
|
|
|
|
4. About the algorithms, in V cycle, Zaqar will introduce the AES-256
|
|
encryption at first. In next cycles, Zaqar can suppot asymmetric
|
|
encryption to let user upload public key and keep the private key
|
|
by their own.
|
|
|
|
.. note::
|
|
|
|
About the option of encryption algorithms and keys, Zaqar would support
|
|
specify them throught more metadatas of queues, but it will be done in next
|
|
serveral cycles. In Victoria, we will choose one algorithm (like AES256) to
|
|
support and support to storage the keys by Zaqar itself or other
|
|
service like Barbican.
|
|
|
|
API Impact
|
|
-----------
|
|
|
|
Create queue list:
|
|
|
|
.. code-block::
|
|
|
|
POST: /v2/queues/queue_name
|
|
|
|
RESPONSE CODE: 200
|
|
REQUEST BODY:
|
|
{
|
|
"_enable_encrypt_messages": true
|
|
}
|
|
|
|
Drawbacks
|
|
---------
|
|
|
|
The ecryption algorithms will impact the performance of storing
|
|
messages into backends
|
|
and getting the messages from the queue.
|
|
|
|
This depends on which kind of encryption algorithms we choose and support.
|
|
|
|
Alternatives
|
|
------------
|
|
|
|
None
|
|
|
|
Implementation
|
|
==============
|
|
|
|
Assignee(s)
|
|
-----------
|
|
|
|
Primary assignee:
|
|
wanghao <sxmatch1986@gmail.com>
|
|
|
|
Secondary assignee:
|
|
None
|
|
|
|
Milestones
|
|
----------
|
|
|
|
Target Milestone for completion:
|
|
victoria M-2
|
|
|
|
Work Items
|
|
----------
|
|
|
|
#. Modify api and transport code.
|
|
#. Add support for encryption algorithm and key management.
|
|
#. Add release note for this feature.
|
|
#. Update API reference.
|
|
#. Change unit, functional and tempest tests accordingly.
|
|
#. Add client support.
|
|
|
|
Dependencies
|
|
============
|
|
|
|
None
|
|
|
|
References
|
|
==========
|
|
|
|
None
|