[openstack-dev] [keystone] Custom ProjectID upon creation

Morgan Fainberg morgan.fainberg at gmail.com
Mon Dec 5 23:03:02 UTC 2016

On Mon, Dec 5, 2016 at 2:31 PM, Andrey Grebennikov <
agrebennikov at mirantis.com> wrote:

> -----Original Message-----
>> From: Andrey Grebennikov <agrebennikov at mirantis.com>
>> Reply: OpenStack Development Mailing List (not for usage questions)
>> <openstack-dev at lists.openstack.org>
>> Date: December 5, 2016 at 12:22:09
>> To: openstack-dev at lists.openstack.org <openstack-dev at lists.openstack.org>
>> Subject:  [openstack-dev] [keystone] Custom ProjectID upon creation
>> > Hi keystoners,
>> I'm not a keystoner, but I hope youu don't mind my replying.
>> > I'd like to open the discussion about the little feature which I'm
>> trying
>> > to push forward for a while but I need some feedbacks/opinions/concerns
>> > regarding this.
>> > Here is the review I'm talking about https://review.
>> > openstack.org/#/c/403866/
>> >
>> > What I'm trying to cover is multi-region deployment, which includes
>> > geo-distributed cloud with independent Keystone in every region.
>> >
>> > There is a number of use cases for the change:
>> > 1. Allow users to re-use their tokens in all regions across the
>> distributed
>> > cloud. With global authentication (LDAP backed) and same roles names
>> this
>> > is only one missing piece which prevents the user to switch between
>> regions
>> > even withing single Horizon session.
>> So this just doesn't sound right to me. You say above that there are
>> independent Keystone deployments in each region. What token type are
>> you using that each region could validate a token (assuming project
>> IDs that are identical across regions) that would do this for
>> "independent Keystone" deployments?
>> Specifically, let's presume you use Keystone's new default of fernet
>> tokens and you have independently deployed Keystone in each region.
>> Without synchronizing the keys Keystone uses to generate and validate
>> fernet tokens, I can't imagine how one token would work across all
>> regions. This sounds like a lofty goal.
>> Further, if Keystone is backed by LDAP, why are there projects being
>> created in the Keystone database at all? I thought using LDAP as a
>> backend would avoid that necessity. (Again, I'm not a keystone
>> developer ;))
>> Sorry that I didn't mention this in the beginning.
> Yes, it is supposed to be fernet tokens installation for sure, UUID will
> not work by default, PKI is deprecated. Keys are supposed to be
> synchronized. Without it multi-site will never work even if I replicate the
> database.
> This is what I started from about half a year ago immediately after
> receiving the usecase. I created 2 clouds, replicated the key, set up each
> Keystone to know about both sites as Regions, made project IDs same, and
> voilla - having global LDAP for authentication in place I could even switch
> between these regions within one Horizon session. So that one works.
> Next, the ability to store projects in LDAP was removed 2 releases ago.
> From my personal opinion (and in fact not just mine but hundreds of other
> users as well) this was one of the biggest mistakes.
> This is one of the major questions from my side to the community - if it
> was always possible to store project IDs in the external provider, and if
> it is still possible to do it for the userIDs - what is the point of
> preventing it now?
I want to go on record that we (the maintainers of Keystone) and those of
us who have spent a significant amount of time working through the LDAP
code came to the community and asked who used this feature (Through many
channels). There were exactly 2 responses of deployers using LDAP to store
project IDs. Both of them were open or actively working towards moving
projects into SQL (or alternatively, developing their own "resource"
store). The LDAP backend for resources (projects/domains) was poorly
supported, had limited interest from the community (for improvements) and
generally was a very large volume of work to bring up to being on-par with
the SQL implementation.

Without the interest of stakeholders (and with few/no active users), it
wasn't feasible to continue to maintain it. There is nothing stopping you
from storing projects externally. You can develop a driver to communicate
with the backend of your choice. The main reason projects were stored in
LDAP was due to the "all or nothing" original design of "KeystoneV2 "; you
could store users in LDAP but you also had to store projects, role
assignments, etc. Most deployments only wanted Users in LDAP but suffered
through the rest because it was required (there was no split of User,
Resource, and Assignment like there is today).

> 2. Automated tools responsible for statistics collection may access all
>> > regions using one token (real customer's usecase)
>> Why can't the automated tools be updated to talk to each Keystone and
>> get a token while talking to that region?
> They may. Depending on what is currently being used in production. It is
> not always so easy to completely refactor external tooling, especially if
> they are proprietary or semi-proprietary.
>> > 3. Glance replication may happen because the images' parameter "owner"
>> > (which is a project) should be consistent across the regions.
>> So, Glance replication doesn't even guarantee identical image IDs
>> across regions. If Glance's replication isn't working because the
>> owner project is being synchronized directly, that sounds like a bug
>> in Glance, not Keystone.
> Not sure I'm following.... In essence it is "replication". It should be
> the same. So when Glance brings the image to another region (from the
> Particular project) - it expects this project to exist.
>> > What I hear all time - "you have to replicate your database" which from
>> the
>> > devops/deployment/operations perspective is totally wrong approach.
>> DevOps is a movement [1]. Replicating the database is not pleasant,
>> no, but it is your better option. I'll repeat, though, why is your
>> LDAP backed Keystone so reliant on Keystone's DB?
>> See above - no other way to do it. Replication of the DB is not only bad
> way to deal with it - there is no guarantee that broken tables from one
> region will stay only in their own region. You have to start dealing with
> decisions like "which region is supposed to be the main one", because there
> is no "main" one. You'll start getting your regions frozen when they lose
>  connectivity to each others etc (this is about 2 regions architecture and
> there is no quorum).
> > If it is possible to avoid Galera replication over geographically
>> > distributed regions - then API calls should be used. Moreover, in case
>> of 2
>> > DCs there will be an issue to decide which region has to take over when
>> > they are isolated from each other.
>> >
>> > There is a long conversation in the comments of the review, mainly with
>> > concerns from cores (purely developer's opinions).
>> You say that as if developer opinions (the folks who have to
>> understand and maintain your desired approach) is invalid or
>> worthless. That's not the case.
> This is completely opposite from what I meant. What I say is >> concerns
> from cores (purely developer's opinions) << where the essence was about
> "there is no complaints yet from Not developers". I'm sorry if I hurt your
> feeling, but when I keep hearing "go replicate your db" instead of
> discussing real cons, this makes me hyper upset as well.
>> > Please help me to bring it to life ;)
>> Please give us more detail and convince us to help you. :)
> Hope that's enough. Thanks a lot for such extended response.
>> [1]: https://theagileadmin.com/what-is-devops/
>> --
>> Ian Cordasco
>> ____________________________________________________________
>> ______________
>> OpenStack Development Mailing List (not for usage questions)
>> Unsubscribe: OpenStack-dev-request at lists.openstack.org?subject:unsubscrib
>> e
>> http://lists.openstack.org/cgi-bin/mailman/listinfo/openstack-dev
> --
> Andrey Grebennikov
> Principal Deployment Engineer
> Mirantis Inc, Austin TX
> __________________________________________________________________________
> OpenStack Development Mailing List (not for usage questions)
> Unsubscribe: OpenStack-dev-request at lists.openstack.org?subject:unsubscribe
> http://lists.openstack.org/cgi-bin/mailman/listinfo/openstack-dev
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.openstack.org/pipermail/openstack-dev/attachments/20161205/f5c7ef40/attachment.html>

More information about the OpenStack-dev mailing list