On 11/18/2015 08:42 AM, Raildo Mascena wrote:

ii) Our restriction of “all domain names must be unique” means that one reseller could “squat” on a domain name and prevent anyone else from having a domain of that name. This is absolutely true. In reality, however, reseller arrangements will be contractual, so if a cloud provider was really concerned about this, they could legislate against this in the contract with the reseller (e.g. "All the domains you create must be suffixed with your reseller name”). In addition, if we believe that federation will become the dominant auth model, then the physical name of the domain becomes less important.
This is the crux of the matter, and I think the case where we have to address things.

If all customers are in a domain called "customers" and under there we crete a domain called "IBM" and then the IBM admins create a domain named "HP" they have effectively blocked HP from becoming client of our cloud.


The fact that a domain name is global and in a flat namespace means that we cannot enforce it using the scoped RBAC model. To put it another way, when a user using a role scoped to a parent domain cretes a child domain in a flat namespace, information leaks out of the scope, and effectively breaks scoped RBAC.

HTTP solves this very elegantly, and I think we should follow suite. If every domain name in a Keystone server can be represented with a unique, nestable URL, we can maintain the scope without polluting the global namespace.

if all customers go into the "customer" domain, then IBM is is "customer/IBM" and if they create a domain underneath them called HP, we can happily take HP's money and give them customer/HP, because the IBM domain gets named customers/IBM/HP.

The thing keeping us from implementing this today is the fact that domain names can be any string. If we provide a config option, say domain_strict_url, then we can enforce that only domains with names that don't have any of the reserved HTTP characters in them can be used as domain names. If this value gets set, and a domain is named "adam@THISROCKS!?!?!?" that domain would be disabled. This would allow deployers to "opt in" to the approach, and to deal with any domains that were improperly named prior to enabling nested domains.

This same patterns can be extended to project names, but we could not mix and match domains and projects, unless we strictly enforce domain-is-a-project.


__________________________________________________________________________
OpenStack Development Mailing List (not for usage questions)
Unsubscribe: [email protected]?subject:unsubscribe
http://lists.openstack.org/cgi-bin/mailman/listinfo/openstack-dev

Reply via email to