We are working on cleaning up the Keystone code with an eye to Oslo and
reuse:
https://review.openstack.org/#/c/56333/
On 01/08/2014 02:47 PM, Georgy Okrokvertskhov wrote:
Hi,
Keep policy control in one place is a good idea. We can use standard
policy approach and keep access control configuration in json file as
it done in Nova and other projects.
Keystone uses wrapper function for methods. Here is a wrapper code:
https://github.com/openstack/keystone/blob/master/keystone/common/controller.py#L111.
Each controller method has @protected() wrapper, so a method
information is available through python f.__name__ instead of URL
parsing. It means that some RBAC parts anyway scattered among the code.
If we want to avoid RBAC scattered among the code we can use URL
parsing approach and have all the logic inside hook. In pecan hook
WSGI environment is already created and there is full access to
request parameters\content. We can map URL to policy key.
So we have two options:
1. Add wrapper to each API method like all other project did
2. Add a hook with URL parsing which maps path to policy key.
Thanks
Georgy
On Wed, Jan 8, 2014 at 9:05 AM, Kurt Griffiths
<kurt.griffi...@rackspace.com <mailto:kurt.griffi...@rackspace.com>>
wrote:
Yeah, that could work. The main thing is to try and keep policy
control in one place if you can rather than sprinkling it all over
the place.
From: Georgy Okrokvertskhov <gokrokvertsk...@mirantis.com
<mailto:gokrokvertsk...@mirantis.com>>
Reply-To: OpenStack Dev <openstack-dev@lists.openstack.org
<mailto:openstack-dev@lists.openstack.org>>
Date: Wednesday, January 8, 2014 at 10:41 AM
To: OpenStack Dev <openstack-dev@lists.openstack.org
<mailto:openstack-dev@lists.openstack.org>>
Subject: Re: [openstack-dev] [Solum][Pecan][Security] Pecan
SecureController vs. Nova policy
Hi Kurt,
As for WSGI middleware I think about Pecan hooks which can be
added before actual controller call. Here is an example how we
added a hook for keystone information collection:
https://review.openstack.org/#/c/64458/4/solum/api/auth.py
What do you think, will this approach with Pecan hooks work?
Thanks
Georgy
On Tue, Jan 7, 2014 at 2:25 PM, Kurt Griffiths
<kurt.griffi...@rackspace.com
<mailto:kurt.griffi...@rackspace.com>> wrote:
You might also consider doing this in WSGI middleware:
Pros:
* Consolidates policy code in once place, making it easier
to audit and maintain
* Simple to turn policy on/off -- just don't insert the
middleware when off!
* Does not preclude the use of oslo.policy for rule checking
* Blocks unauthorized requests before they have a chance to
touch the web framework or app. This reduces your attack
surface and can improve performance (since the web
framework has yet to parse the request).
Cons:
* Doesn't work for policies that require knowledge that
isn't available this early in the pipeline (without having
to duplicate a lot of code)
* You have to parse the WSGI environ dict yourself (this may
not be a big deal, depending on how much knowledge you
need to glean in order to enforce the policy).
* You have to keep your HTTP path matching in sync with with
your route definitions in the code. If you have full test
coverage, you will know when you get out of sync. That
being said, API routes tend to be quite stable in relation
to to other parts of the code implementation once you have
settled on your API spec.
I'm sure there are other pros and cons I missed, but you can
make your own best judgement whether this option makes sense
in Solum's case.
From: Doug Hellmann <doug.hellm...@dreamhost.com
<mailto:doug.hellm...@dreamhost.com>>
Reply-To: OpenStack Dev <openstack-dev@lists.openstack.org
<mailto:openstack-dev@lists.openstack.org>>
Date: Tuesday, January 7, 2014 at 6:54 AM
To: OpenStack Dev <openstack-dev@lists.openstack.org
<mailto:openstack-dev@lists.openstack.org>>
Subject: Re: [openstack-dev] [Solum][Pecan][Security] Pecan
SecureController vs. Nova policy
On Mon, Jan 6, 2014 at 6:26 PM, Georgy Okrokvertskhov
<gokrokvertsk...@mirantis.com
<mailto:gokrokvertsk...@mirantis.com>> wrote:
Hi Dough,
Thank you for pointing to this code. As I see you use
OpenStack policy framework but not Pecan security
features. How do you implement fine grain access control
like user allowed to read only, writers and admins. Can
you block part of API methods for specific user like
access to create methods for specific user role?
The policy enforcement isn't simple on/off switching in
ceilometer, so we're using the policy framework calls in a
couple of places within our API code (look through v2.py for
examples). As a result, we didn't need to build much on top of
the existing policy module to interface with pecan.
For your needs, it shouldn't be difficult to create a couple
of decorators to combine with pecan's hook framework to
enforce the policy, which might be less complex than trying to
match the operating model of the policy system to pecan's
security framework.
This is the sort of thing that should probably go through Oslo
and be shared, so please consider contributing to the
incubator when you have something working.
Doug
Thanks
Georgy
On Mon, Jan 6, 2014 at 2:45 PM, Doug Hellmann
<doug.hellm...@dreamhost.com
<mailto:doug.hellm...@dreamhost.com>> wrote:
On Mon, Jan 6, 2014 at 2:56 PM, Georgy Okrokvertskhov
<gokrokvertsk...@mirantis.com
<mailto:gokrokvertsk...@mirantis.com>> wrote:
Hi,
In Solum project we will need to implement
security and ACL for Solum API. Currently we use
Pecan framework for API. Pecan has its own
security model based on SecureController class. At
the same time OpenStack widely uses policy
mechanism which uses json files to control access
to specific API methods.
I wonder if someone has any experience with
implementing security and ACL stuff with using
Pecan framework. What is the right way to provide
security for API?
In ceilometer we are using the keystone middleware and
the policy framework to manage arguments that
constrain the queries handled by the storage layer.
http://git.openstack.org/cgit/openstack/ceilometer/tree/ceilometer/api/acl.py
and
http://git.openstack.org/cgit/openstack/ceilometer/tree/ceilometer/api/controllers/v2.py#n337
Doug
Thanks
Georgy
_______________________________________________
OpenStack-dev mailing list
OpenStack-dev@lists.openstack.org
<mailto:OpenStack-dev@lists.openstack.org>
http://lists.openstack.org/cgi-bin/mailman/listinfo/openstack-dev
_______________________________________________
OpenStack-dev mailing list
OpenStack-dev@lists.openstack.org
<mailto:OpenStack-dev@lists.openstack.org>
http://lists.openstack.org/cgi-bin/mailman/listinfo/openstack-dev
--
Georgy Okrokvertskhov
Technical Program Manager,
Cloud and Infrastructure Services,
Mirantis
http://www.mirantis.com <http://www.mirantis.com/>
Tel. +1 650 963 9828 <tel:%2B1%20650%20963%209828>
Mob. +1 650 996 3284 <tel:%2B1%20650%20996%203284>
_______________________________________________
OpenStack-dev mailing list
OpenStack-dev@lists.openstack.org
<mailto:OpenStack-dev@lists.openstack.org>
http://lists.openstack.org/cgi-bin/mailman/listinfo/openstack-dev
_______________________________________________
OpenStack-dev mailing list
OpenStack-dev@lists.openstack.org
<mailto:OpenStack-dev@lists.openstack.org>
http://lists.openstack.org/cgi-bin/mailman/listinfo/openstack-dev
--
Georgy Okrokvertskhov
Technical Program Manager,
Cloud and Infrastructure Services,
Mirantis
http://www.mirantis.com <http://www.mirantis.com/>
Tel. +1 650 963 9828 <tel:%2B1%20650%20963%209828>
Mob. +1 650 996 3284 <tel:%2B1%20650%20996%203284>
_______________________________________________
OpenStack-dev mailing list
OpenStack-dev@lists.openstack.org
<mailto:OpenStack-dev@lists.openstack.org>
http://lists.openstack.org/cgi-bin/mailman/listinfo/openstack-dev
--
Georgy Okrokvertskhov
Technical Program Manager,
Cloud and Infrastructure Services,
Mirantis
http://www.mirantis.com <http://www.mirantis.com/>
Tel. +1 650 963 9828
Mob. +1 650 996 3284
_______________________________________________
OpenStack-dev mailing list
OpenStack-dev@lists.openstack.org
http://lists.openstack.org/cgi-bin/mailman/listinfo/openstack-dev
_______________________________________________
OpenStack-dev mailing list
OpenStack-dev@lists.openstack.org
http://lists.openstack.org/cgi-bin/mailman/listinfo/openstack-dev