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

Morgan Fainberg morgan.fainberg at gmail.com
Tue Dec 6 01:23:20 UTC 2016

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

>> 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).
>> Maybe it was the time when I haven't yet actively participated in the
> community bringing issues.
> I personally participated in at least 5 projects within the last 2 years
> where we stored assignments/projects/roles in LDAP or AD, and All customers
> were really frustrated that the functionality is going to be removed.
> Neither of them wanted to manage OpenStack environment separately from the
> rest of their enterprise platforms.
> Even today, since almost Every production cloud is using LDAP/AD as the
> source of authentication, the major concern from the customers is that the
> assignments cannot be stored in LDAP.

I'm surprised any AD administrator let Keystone write to it. I've always
hear the inverse that AD admins never would allow keystone to write to it,
therefore it was never used for Projects or Assignments. Users were
likewise read-only when AD was involved.

I have seen normal LDAP setups work with Keystone and used in both
read/write mode (but even still the write-allowed was the extreme minority).

> > 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.op
>>>> enstack.org?subject:unsubscribe
>>>> 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.op
>>> enstack.org?subject:unsubscribe
>>> http://lists.openstack.org/cgi-bin/mailman/listinfo/openstack-dev
>> ____________________________________________________________
>> ______________
>> 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/1e8a9fce/attachment.html>

More information about the OpenStack-dev mailing list