Jumping in with another "us too" here. We have some custom Horizon extensions that allow project owners to manage some of this stuff.
On Wed, Aug 5, 2015 at 4:14 PM, Marc Heckmann <marc.heckm...@ubisoft.com> wrote: > Echoing what others have said, we too have an abstraction layer in the > form of a custom UI to allow project "owners" to create/delete users. > > As for your questions Adam, having policy in the Keystone database as > data seems like a no brainer. As you suggest it enables us to do so much > more. > > For problem #2, that's already a problem today, so I don't see how it > has an impact (other than the problem of giving the keys to end-users). > In fact, I'd argue that it's an even bigger problem today as an admin > (i.e admin everywhere) can delete a project with running resources. A > "project_admin" role limited in scope could be delegated the rights to > create/delete users but not projects. > > -m > > On Wed, 2015-08-05 at 18:15 +0000, Kris G. Lindgren wrote: > > See inline. > > ____________________________________________ > > > > Kris Lindgren > > Senior Linux Systems Engineer > > GoDaddy, LLC. > > > > > > > > On 8/5/15, 11:19 AM, "Adam Young" <ayo...@redhat.com> wrote: > > > > >On 08/05/2015 12:01 PM, Kris G. Lindgren wrote: > > >> We ran into this as well. > > >> > > >> What we did is create an external to keystone api, that we expose to > our > > >> end users via a UI. The api will let user create projects (with a > > >> specific defined quota) and also add users with the "project admins" > > >>role > > >> to the project. Those admins can add/remove users from the project > and > > >> also delete the project. You can also be a "member", where you have > the > > >> ability to spin up vm's under the project but not add/remove users or > > >> remove the project. We also do some other stuff to clean up items in > a > > >> project before its deleted. We are working to move this functionality > > >>out > > >> of the current external API and into keystone. I believe we were > going > > >>to > > >> look at waffle-haus to add a paste filter to intercept the project > > >>create > > >> calls and do the needful. > > >> > > >> We also modified the policy.json files for the services that we care > > >>about > > >> to add the new roles that we created. > > > > > >Were you working around limitation by building an external system to > > >Keystone to provide a means of delegating the ability to assign roles? > > > > Yes. Basically we wrapped a function that required admin permissions in > an > > keystone API - so that non-admin users could do some admin level tasks. > > Also, we have ran into the admin on a project in keystone == admin > > everywhere problem. We were using a created "project_admin" role to get > > around that limitation. > > > > > > > >Would you have wanted to synchronize the roles you defined in your > > >Keytone instance with the policy files directly? Did you have to modify > > >policy files beyond the Keystone policy file? > > > > Yes. And Yes, we did modify other services policy files as well to handle > > the newly created project_admin role. > > > > > > > > > >> ____________________________________________ > > >> > > >> Kris Lindgren > > >> Senior Linux Systems Engineer > > >> GoDaddy, LLC. > > >> > > >> > > >> > > >> > > >> On 8/5/15, 9:39 AM, "Fox, Kevin M" <kevin....@pnnl.gov> wrote: > > >> > > >>> As an Op, I've ran into this problem and keep running into it. I > would > > >>> very much like a solution. > > >>> > > >>> Its also quite related to the nova instance user issue I've been > > >>>working > > >>> on, that's needed by the App Catalog project. > > >>> > > >>> So, yes, please keep fighting the good fight. > > >>> > > >>> Thanks, > > >>> Kevin > > >>> ________________________________________ > > >>> From: Adam Young [ayo...@redhat.com] > > >>> Sent: Wednesday, August 05, 2015 7:50 AM > > >>> To: openstack-operators@lists.openstack.org > > >>> Subject: [Openstack-operators] Dynamic Policy > > >>> > > >>> How do you delegate the ability to delegate? > > >>> > > >>> Lets say you are running a large cloud (purely hypothetical here) and > > >>> you want to let a user manage their own project. They are "admin" > but > > >>> they should be able to invite or eject people. > > >>> > > >>> In order to do this, an ordinary user needs to be able to make a role > > >>> assignment. However, Keystone does not support this today: if you > are > > >>> admin somewhere, you are admin everywhere: > > >>> > > >>> https://bugs.launchpad.net/keystone/+bug/968696 > > >>> > > >>> Access control in OpenStack is controlled by Policy. An informal > > >>>survey > > >>> of operators shows that most people run with the stock policies such > as > > >>> the Nova policy: > > >>> > > >>> > http://git.openstack.org/cgit/openstack/nova/tree/etc/nova/policy.json > > >>> > > >>> In order to scope admin to the proejct, we would need to have rules > > >>>that > > >>> enforce this scoping: Evey rule should check that the project_id in > > >>>the > > >>> token provided matches the project_id of the resource of the API. > > >>> > > >>> If we manage to get the policy files rewritten this way, We then > need a > > >>> way to limit what roles a user can assign. The default mechanism > > >>> would say that a user needs to have an administrative role on the > > >>> project (or domain) that they want to assign the role on. > > >>> > > >>> I don't think anything I've written thus far is controversial. Then, > > >>>why > > >>> has it not happened yet? here are the list of problems we need to > > >>>solve: > > >>> > > >>> 1. Operators expect the existing policy files to work as is. Changing > > >>> them will break workflow. > > >>> 2. If everything is scoped, we need a way to delete resources left > > >>> orphan when a project is deleted from Keystone and the service does > not > > >>> get the notification (or know how to handle it). > > >>> > > >>> Of the two, I think the top one is the more difficult to solve. > Scoping > > >>> everything can be handled via one of two mechanism; either allow a > > >>> power-admin user to get a token scoped to some random project (even > if > > >>> it has been deleted) or allow a token scoped to an administrative > > >>> project to also delete resources for a random project. > > >>> > > >>> Dealing with the existing policy file issues is trickier, and that is > > >>> the real reason for the Dynamic Policy approach: give the endpoints > > >>> the ability to fetch their policy files from Keystone. If policy > goes > > >> >from being a configuration file to data, it is managed outside of the > > >>> configuration management tools, and becomes much more fluid. This has > > >>> risks, and should be an Opt-In mechanism. > > >>> > > >>> Fetching the policy files from Keystone also provides the start of a > > >>> richer set of management for policy rules. Currently, each of the > > >>>stock > > >>> policy files exists only in their seperate git repos. There is no > > >>> sharing of policy rules across projects. If the policy files were > > >>> managed, rule by rule, from a centralized repository, rules could be > > >>> shared, providing, among other things, the ability to enforce > > >>> hierarchical roles, roles namespaced to a service, and other, richer > > >>> policy management. > > >>> > > >>> Feedback on this approach from operators is greatly appreciated. I > > >>>need > > >>> to justify the effort that would go in to making this happen, so if > you > > >>> want it, speak up. > > >>> > > >>> If, on the other hand, you feel that this is needlessly complicated > or > > >>> would make deployments more difficult, that is important too, and > > >>>please > > >>> let me know. > > >>> > > >>> Finally, if you can see some alternative methods of implementing a > more > > >>> dynamic access control, please chime in. > > >>> > > >>> > > >>> > > >>> > > >>> > > >>> _______________________________________________ > > >>> OpenStack-operators mailing list > > >>> OpenStack-operators@lists.openstack.org > > >>> > http://lists.openstack.org/cgi-bin/mailman/listinfo/openstack-operators > > >>> > > >>> _______________________________________________ > > >>> OpenStack-operators mailing list > > >>> OpenStack-operators@lists.openstack.org > > >>> > http://lists.openstack.org/cgi-bin/mailman/listinfo/openstack-operators > > > > > > > > > _______________________________________________ > > OpenStack-operators mailing list > > OpenStack-operators@lists.openstack.org > > http://lists.openstack.org/cgi-bin/mailman/listinfo/openstack-operators > > > _______________________________________________ > OpenStack-operators mailing list > OpenStack-operators@lists.openstack.org > http://lists.openstack.org/cgi-bin/mailman/listinfo/openstack-operators >
_______________________________________________ OpenStack-operators mailing list OpenStack-operators@lists.openstack.org http://lists.openstack.org/cgi-bin/mailman/listinfo/openstack-operators