Madhuri,

On Jun 15, 2015, at 12:47 AM, Madhuri Rai 
<madhuri.ra...@gmail.com<mailto:madhuri.ra...@gmail.com>> wrote:

Hi,

Thanks Adrian for the quick response. Please find my response inline.

On Mon, Jun 15, 2015 at 3:09 PM, Adrian Otto 
<adrian.o...@rackspace.com<mailto:adrian.o...@rackspace.com>> wrote:
Madhuri,

On Jun 14, 2015, at 10:30 PM, Madhuri Rai 
<madhuri.ra...@gmail.com<mailto:madhuri.ra...@gmail.com>> wrote:

Hi All,

This is to bring the blueprint  
secure-kubernetes<https://blueprints.launchpad.net/magnum/+spec/secure-kubernetes>
 in discussion. I have been trying to figure out what could be the possible 
change area to support this feature in Magnum. Below is just a rough idea on 
how to proceed further on it.

This task can be further broken in smaller pieces.

1. Add support for TLS in python-k8sclient.
The current auto-generated code doesn't support TLS. So this work will be to 
add TLS support in kubernetes python APIs.

2. Add support for Barbican in Magnum.
Barbican will be used to store all the keys and certificates.

Keep in mind that not all clouds will support Barbican yet, so this approach 
could impair adoption of Magnum until Barbican is universally supported. It 
might be worth considering a solution that would generate all keys on the 
client, and copy them to the Bay master for communication with other Bay nodes. 
This is less secure than using Barbican, but would allow for use of Magnum 
before Barbican is adopted.

+1, I agree. One question here, we are trying to secure the communication 
between magnum-conductor and kube-apiserver. Right?

We need API services that are on public networks to be secured with TLS, or 
another approach that will allow us to implement access control so that these 
API’s can only be accessed by those with the correct keys. This need extends to 
all places in Magnum where we are exposing native API’s.

If both methods were supported, the Barbican method should be the default, and 
we should put warning messages in the config file so that when the 
administrator relaxes the setting to use the non-Barbican configuration he/she 
is made aware that it requires a less secure mode of operation.

In non-Barbican support, client will generate the keys and pass the location of 
the key to the magnum services. Then again heat template will copy and 
configure the kubernetes services on master node. Same as the below step.

Good!

My suggestion is to completely implement the Barbican support first, and follow 
up that implementation with a non-Barbican option as a second iteration for the 
feature.

How about implementing the non-Barbican support first as this would be easy to 
implement, so that we can first concentrate on Point 1 and 3. And then after 
it, we can work on Barbican support with more insights.

Another possibility would be for Magnum to use its own private installation of 
Barbican in cases where it is not available in the service catalog. I dislike 
this option because it creates an operational burden for maintaining the 
private Barbican service, and additional complexities with securing it.

In my opinion, installation of Barbican should be independent of Magnum. My 
idea here is, if user wants to store his/her keys in Barbican then he/she will 
install it.
We will have a config paramter like "store_secure" when True means we have to 
store the keys in Barbican or else not.
What do you think?

3. Add support of TLS in Magnum.
This work mainly involves supporting the use of key and certificates in magnum 
to support TLS.

The user generates the keys, certificates and store them in Barbican. Now there 
is two way to access these keys while creating a bay.

Rather than "the user generates the keys…", perhaps it might be better to word 
that as "the magnum client library code generates the keys for the user…”.

It is "user" here. In my opinion, there could be users who don't want to use 
magnum client rather the APIs directly, in that case the user will generate the 
key themselves.

Good point.

In our first implementation, we can support the user generating the keys and 
then later client generating the keys.

Users should not require any knowledge of how TLS works, or related certificate 
management tools in order to use Magnum. Let’s aim for this.

I do agree that’s a good logical first step, but I am reluctant to agree to it 
without confidence that we will add the additional security later. I want to 
achieve a secure-by-default configuration in Magnum. I’m happy to take measured 
forward progress toward this, but I don’t want the less secure option(s) to be 
the default once more secure options come along. By doing the more secure one 
first, and making it the default, we allow other options only when the 
administrator makes a conscious action to relax security to meet their 
constraints.

So, if our team agrees that doing simple key management without Barbican should 
be our first step, I will agree to that under the condition that we adjust the 
default later to require Barbican as soon as that feature is added, and that we 
commit to implementing it. It would be a real shame if we got as far as simple 
ket management, and never implemented Barbican support. What do you all think?

1. Heat will access Barbican directly.
While creating bay, the user will provide this key and heat templates will 
fetch this key from Barbican.

I think you mean that Heat will use the Barbican key to fetch the TLS key for 
accessing the native API service running on the Bay.
Yes.

2. Magnum-conductor access Barbican.
While creating bay, the user will provide this key and then Magnum-conductor 
will fetch this key from Barbican and provide this key to heat.

Then heat will copy this files on kubernetes master node. Then bay will use 
this key to start a Kubernetes services signed with these keys.

Make sure that the Barbican keys used by Heat and magnum-conductor to store the 
various TLS certificates/keys are unique per tenant and per bay, and are not 
shared among multiple tenants. We don’t want it to ever be possible to trick 
Magnum into revealing secrets belonging to other tenants.

Yes, I will take care of it.

Excellent, thanks!

After discussion when we all come to same point, I will create separate 
blueprints for each task.
I am currently working on configuring Kubernetes services with TLS keys.

I’m looking forward to more team input on this.

Thanks,

Adrian


Please provide your suggestions if any.

Thanks for kicking off this discussion.

Regards,

Adrian



Regards,
Madhuri
__________________________________________________________________________
OpenStack Development Mailing List (not for usage questions)
Unsubscribe: 
openstack-dev-requ...@lists.openstack.org<mailto:openstack-dev-requ...@lists.openstack.org>?subject:unsubscribe
http://lists.openstack.org/cgi-bin/mailman/listinfo/openstack-dev


__________________________________________________________________________
OpenStack Development Mailing List (not for usage questions)
Unsubscribe: 
openstack-dev-requ...@lists.openstack.org?subject:unsubscribe<http://openstack-dev-requ...@lists.openstack.org/?subject:unsubscribe>
http://lists.openstack.org/cgi-bin/mailman/listinfo/openstack-dev


Regards,
Madhuri
__________________________________________________________________________
OpenStack Development Mailing List (not for usage questions)
Unsubscribe: 
openstack-dev-requ...@lists.openstack.org<mailto:openstack-dev-requ...@lists.openstack.org>?subject:unsubscribe
http://lists.openstack.org/cgi-bin/mailman/listinfo/openstack-dev

__________________________________________________________________________
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

Reply via email to