Hi Stan,
Thanks for your input on this.
I'm finding the problem with doing the encryption/decryption on the
engine side only is that at this point it is too late - the object model
has already been written into the database at the API layer. I can't
think how we can change this without moving the data persist logic into
the engine which would be quite a large change.
If we encrypt just user specified properties on session create, this may
still work as you outline, but this leads to the problem of how to
signal to the API which property values are to be encrypted, as metadata
and contracts are again only parsed once the object model reaches the
engine.
The only other things I can think to improve this would be to either use
some form of caching such as memcached, or drop barbican and do some
form of local crypto that avoids the round trip time to barbican.
Neither seem ideal.
If you have any other ideas on this or if some of the assumptions I've
made above wrt the engine are incorrect I'd appreciate your thoughts.
The current approach where we encrypt the entire object model is
available as a work in progress at https://review.openstack.org/#/c/471772/.
Thanks again,
-Paul
On 08/06/17 04:09, Stan Lagun wrote:
Hi Ellen,
If you want my opinion I wouldn't recommend encrypt all the object model
as it can create a lot of issues like this. What I suggest instead is to
have special contract
(say $.secureString()) which does the decryption/encryption right from
the engine while all calls to API would result in object model with some
encrypted fields. This way
it would be possible to have this contract only for password and similar
properties. I'd also introduce encryptString()/decryptString() yaql
functions so that it would be possible
to do it manually (for example, to store sensitive values in attributes,
which do not have contracts). But this can be done later. With contracts
encryption would be completely
transparent to the rest of the code. Also, AFAIK MySQL enterprise has
encryption capabilities so that you can make DB with object model be
encrypted as well.
Regards,
Stan
On June 7, 2017 at 4:33:54 PM, Ellen Batbouta (ellen.batbo...@oracle.com
<mailto:ellen.batbo...@oracle.com>) wrote:
Hi Stan,
Thanks for your last mail. Today, I am trying it out. It looks
promising but haven't
gotten too far due to many interruptions.
Onto another issue that Paul and I would like your opinion on. Paul is
a co-worker of mine
and he is working on the murano blueprint,
https://blueprints.launchpad.net/murano/+spec/allow-encrypting-of-muranopl-properties
and has posted a spec and code review. The reason we need to encrypt
the object model (or at least some
of the attributes) is because our database application contains
passwords and we cannot have these
passwords stored in the database in clear text. We must absolutely fix
this and for the Pike release.
A short summary (from Paul's code review) is:
This commit introduces optional integration for Murano with Barbican
(or any other key manager supported via Castellan). When enabled, all
object model will first be encrypted into Barbican, and a 'secret key'
will be written to the Murano database in it's place. The code is
compatible with mixed (encrypted and unencrypted) databases, however,
environments/sessions created when encrypt_data is on cannot be read
if encrypt_data is subsequently turned off. The complete configuration
required in the api murano.conf to enable this change is as follows:
[murano]
encrypt_data = True
[barbican]
auth_endpoint = <keystone_uri>:<keystone_public_port>
However, he is running into a performance problem. When listing the
environments, the performance is
slow. The Murano code looks up the object model multiple times, which
results in multiple calls to barbican.
Is it possible to reduce the number of look ups for the object model?
We will be investigating further.
Just wondering if you have an opinion on this.
Thank you.
Ellen.
__________________________________________________________________________
OpenStack Development Mailing List (not for usage questions)
Unsubscribe: openstack-dev-requ...@lists.openstack.org?subject:unsubscribe
http://lists.openstack.org/cgi-bin/mailman/listinfo/openstack-dev