[openstack-dev] [Keystone] Domain and Project naming

Jamie Lennox jamielennox at redhat.com
Fri Jun 5 03:13:24 UTC 2015



----- Original Message -----
> From: "Adam Young" <ayoung at redhat.com>
> To: "OpenStack Development Mailing List" <openstack-dev at lists.openstack.org>
> Sent: Thursday, 4 June, 2015 2:25:52 PM
> Subject: [openstack-dev] [Keystone] Domain and Project naming
> 
> With Hierarchical Multitenantcy, we have the issue that a project is
> currentl restricted in its naming further than it should be.  The domain
> entity enforces that all project namess under the domain domain be
> unique, but really what we should say is that all projects under a
> single parent project be unique.  However, we have, at present, an API
> which allows a user to specify the domain either name or id and project
> again, either by name or ID, but here we care only about the name.  This
> can be used either in specifying the token, or in operations ion the
> project API.
> 
> We should change projec naming to be nestable, and since we don't have a
> delimiter set, we should expect the names to be an array, where today we
> might have:
> 
>          "project": {
>              "domain": {
>                  "id": "1789d1",
>                  "name": "example.com"
>              },
>              "id": "263fd9",
>              "name": "project-x"
>          }
> 
> we should allow and expect:
> 
>          "project": {
>              "domain": {
>                  "id": "1789d1",
>                  "name": "example.com"
>              },
>              "id": "263fd9",
>              "name": [ "grandpa", "dad", "daughter"]
>          }
> 
> This will, of course, break Horizon and lots of other things, which
> means we need a reasonable way to display these paths.  The typical UI
> approach is a breadcrumb trail, and I think something where we put the
> segments of the path in the UI, each clickable, should be
> understandable: I'll defer to the UX experts if this is reasonable or not.
> 
> The alternative is that we attempt to parse the project names. Since we
> have not reserved a delimeter, we will break someone somewhere if we
> force one on people.
> 
> 
> As an alternative, we should start looking in to following DNS standards
> for naming projects and hosts.  While a domain should not be required to
> be a DNS registred domain name, we should allow for the case where a
> user wants that to be the case, and to synchronize nam,ing across
> multiple clouds.  In order to enforce this, we would have to have an
> indicator on a domain name that it has been checked with DNS;  ideally,
> the user would add a special SRV or Text record or something that
> Keystone could use to confirm that the user has oked this domain name
> being used by this cloud...or something perhaps with DNSSEC, checking
> that auser has permission to assign a specific domain name to a set of
> resources in the cloud.  If we do that, the projects under that domain
> should also be valid DNS subzones, and the hosts either  FQDNs or some
> alternate record...this would tie in Well with Designate.
> 
> Note that I am not saying "force this"  but rather "allow this" as it
> will simplify the naming when bursting from cloud to cloud:  the Domain
> and project names would then be synchronized via DNS regardless of
> hosting provider.
> 
> As an added benefit, we could provide a SRV or TEXT record (or some new
> URL type..I heard one is coming) that describes where to find the home
> Keystone server for a specified domain...it would work nicely with the
> K2K strategy.
> 
> If we go with DNS project naming, we can leave all project names in a
> flat string.
> 
> 
> Note that the DNS approach can work even if the user does not wish to
> register their own DNS.  A hosting provider (I'll pick dreamhost, cuz  I
> know they are listening)  could say the each of their tenants picks a
> user name...say that mine i admiyo,  they would then create a subdomain
> of admiyo.dreamcompute.dreamhost.com.  All of my subprojects would then
> get additional zones under that.  If I were then to burst from there to
> Bluebox, the Keystone domain name would be the one that I was assigned
> back at Dreamhost.

Back up. Is our current restrictions a problem?

Even with hierarchical projects is it a problem to say that a project name still must be unique per domain? I get that in theory you might want to be able to identify a nested project by name under other projects but that's not something we have to allow immediately.

I haven't followed the reseller case closely but in any situation where you had off control like that we are re-establishing a domain and so in a multitenancy situation each domain can still use their own project names. 

I feel like discussions around nested naming schemes and tieing domains to DNS is really premature until we have people that are actually using hierarchical projects. 




More information about the OpenStack-dev mailing list