Are there any documented examples out there of how to use roles? I still have a 
hard time building a mental model of how the system works. In particular:

 Do I need to create a new role for every user-tenant pair? Or can I reuse the 
same role? 

Where are the semantics of roles specified?  What I mean is, what determines 
what a role allows a user to do with a specific service? The examples I see 
always create a magical "admin" role, but how does, say, nova, know that this 
role is associated with admin privileges? Is it because the label is "admin"? 
What if I want to create a role that allows users in a tenant to have regular 
access to nova, but not to swift? How do I do that? Do I need to create a 
"novaUser" role? Where do I describe what a "novaUser" role means? In nova? In 
keystone? How?

Pointer to an example here would be really helpful, would love to add this to 
the docs.


Take care,

Lorin
--
Lorin Hochstein
Lead Architect - Cloud Services
Nimbis Services, Inc.
www.nimbisservices.com





On May 10, 2012, at 3:50 AM, Dolph Mathews wrote:

> +1
> 
> The second "way to accomplish this" is exactly what keystone currently 
> supports (explicit role grants), which didn't change between diablo and essex 
> at all.
> 
> The first method (using global unscopedness) was dropped because its just as 
> confusing as you describe it.
> 
> -Dolph Mathews
> 
> On May 10, 2012, at 2:35 AM, Joseph Heck <he...@mac.com> wrote:
> 
>> Guang,
>> 
>> I think you need to re-read the code. The association between a user and 
>> tenant is what the role represents, and its inaccurate to assert that a user 
>> is aligned only with a single tenant ever, that is not the case. 
>> 
>> A role is no longer global, specifically to avoid the tremendous confusion 
>> and inaccuracy of implementation about how to apply a role that relates a 
>> tenant and user along with a potential "global" role concept that was in the 
>> earliest implementations of Keystone. The current implementation is simpler 
>> and far more specific and clear in it's implementation.
>> 
>> -joe
>> 
>> On May 9, 2012, at 10:22 PM, Yee, Guang wrote:
>>> I think this use case underscores one of the key differences between the 
>>> fat Keystone (Diablo - E3) and KSL (Essex final).  In fat Keystone, users 
>>> and tenants are loosely coupled. They are bind together by role 
>>> assignments. In KSL, users and tenants are tightly coupled, and IMHO very 
>>> inflexible. Maybe the following example would further clarify this …
>>>  
>>> Suppose you have tenants Dodgers, Giants, and Brewers, user Bud Selid, 
>>> roles Commissioner and Minority Owner, and service MLB. And you want Bud 
>>> Selid to have the Commissioner role for Dodgers, Giants, and Brewers, but 
>>> Minority Owner role for Brewers only.
>>>  
>>> In fat Keystone, there a couple of ways you can accomplish this.
>>>  
>>> 1)      Make Commissioner a “global role” (unscoped) and assign it to user 
>>> Bud Selid. Assign the Minority Owner role to Bud Selid for tenant Brewers 
>>> by creating a role reference. When Bud Selid tries to access MLB with his 
>>> unscoped token, MLB will get his Commissioner role back from Keystone. When 
>>> Bud Selid tries to access MLB with his token scoped to Brewers, MLB will 
>>> get both his Commissioner and Minority Owner roles back from Keystone. When 
>>> Bud Selid tries to acess MLB with his token scoped to Giants or Dodgers, 
>>> MLB will only get his Commissioner role back from Keystone.
>>> 2)      Assign the Commissioner role to Bud Selid to tenants Giants, 
>>> Dodgers, and Brewers individually by creating the respective role 
>>> references. Assign the Minority Owner role to Bud Selid for tenant Brewers 
>>> by creating another role reference. In this scenario, Bud Selid will always 
>>> need a scoped token to access MLB.
>>>  
>>> In KSL, there really aren’t any effective ways to accomplish the same 
>>> thing. Global roles are no longer supported.  A given user must assign to 
>>> exactly one tenant. I suppose you can have Bud Selid under the “Default 
>>> Tenant”, and assign both Commissioner and Minority Owner roles to him. But 
>>> there are two major side effects.
>>>  
>>> 1)      Bud Selid must access MLB with the token scoped to the “Default 
>>> Tenant” in order for MLB to recognize him as Commissioner. Which means he 
>>> IS ALSO the Minority Owner for Dodgers, Giants, and Brewers. J
>>> 2)      If Bud Selid tries to access MLB with the token scoped to either 
>>> Giants, Dodgers, or Brewers, his a NOBODY. J
>>>  
>>> The upcoming Domains blueprint (to be implemented for Folsom), which offers 
>>> true multitenancy, should support these types of use cases.
>>>  
>>> https://blueprints.launchpad.net/keystone/+spec/keystone-domains
>>>  
>>> With Domains, you can create a MLB domain with tenants Dodgers, Giants, and 
>>> Brewers. And have Bud Selid under the MLB domain. Notice that users will no 
>>> longer be assigned to tenants. They will be under a domain. Create roles 
>>> Commissioner and Minority Owner in the MLB domain. Assign the Commissioner 
>>> role to Bud Selid, and the Minority Owner role scoped to Brewers. Suppose 
>>> you have another domain NFL, Bud Selid will not be able to access any 
>>> tenants in the NFL domain, unless the NFL domain administrator explicitly 
>>> assign NFL roles to Bud Selid.
>>>  
>>>  
>>> Guang
>>>  
>>>  
>>>  
>>>  
>>> From: openstack-bounces+guang.yee=hp....@lists.launchpad.net 
>>> [mailto:openstack-bounces+guang.yee=hp....@lists.launchpad.net] On Behalf 
>>> Of Dolph Mathews
>>> Sent: Wednesday, May 09, 2012 4:34 PM
>>> To: Joshua Harlow
>>> Cc: openstack
>>> Subject: Re: [Openstack] Keystone client, user belongs to many tenants?
>>>  
>>> The user create command is actually creating discrete users, each with a 
>>> "default tenant" reference.
>>>  
>>> While that's fine for a lot of simple use cases, it doesn't directly 
>>> support a user accessing multiple tenants at all.
>>>  
>>> Instead, create a role, and grant that role to a user-tenant pair, creating 
>>> an explicit relationship between the two. Using default tenants is optional 
>>> with this method, but will affect how users must auth.
>>> 
>>> -Dolph Mathews
>>> 
>>> On May 9, 2012, at 3:46 PM, Joshua Harlow <harlo...@yahoo-inc.com> wrote:
>>> 
>>> A question,
>>> 
>>> I am using anvil to setup the keystone roles/users/tenants.
>>> 
>>> It seems like the python keystone  client has the following command:
>>> 
>>> client.users.create
>>> 
>>> Which seems to take in the following:
>>> 
>>> create(self, name, password, email, tenant_id=None, enabled=True):
>>> 
>>> I would assume a user name can be used in multiple tenants but when I am 
>>> trying to create a user that spans tenants and it seems like it borks.
>>> 
>>> ClientException: Conflict occurred attempting to store user. 
>>> (IntegrityError) (1062, "Duplicate entry 'admin' for key 'name'") 'INSERT 
>>> INTO user (id, name, extra) VALUES (%s, %s, %s)' 
>>> ('3e14a9c1fd404c7e81c0dba8bd640575', 'admin', '{"password": 
>>> "$6$rounds=40000$yX5fL51OyGKjuPjr$8yv.S3GpqsKeaHv4GjNY4YW2vvykWzrEV7RX.qJpyy3CjmyXrZMRRJifEzfa7xv1l.NzoggQBXUAESn3Oqm0x/",
>>>  "enabled": true, "email": "ad...@example.com", "tenantId": 
>>> "d1506184877a449a91fc6adcb553ad97"}') (HTTP 409)
>>> 
>>> Is this supposed to happen? Is the client supposed to send back this much 
>>> info also (hashed password??) :-P
>>> 
>>> Any ideas?
>>> _______________________________________________
>>> Mailing list: https://launchpad.net/~openstack
>>> Post to     : openstack@lists.launchpad.net
>>> Unsubscribe : https://launchpad.net/~openstack
>>> More help   : https://help.launchpad.net/ListHelp
>>> _______________________________________________
>>> Mailing list: https://launchpad.net/~openstack
>>> Post to     : openstack@lists.launchpad.net
>>> Unsubscribe : https://launchpad.net/~openstack
>>> More help   : https://help.launchpad.net/ListHelp
>> 
> _______________________________________________
> Mailing list: https://launchpad.net/~openstack
> Post to     : openstack@lists.launchpad.net
> Unsubscribe : https://launchpad.net/~openstack
> More help   : https://help.launchpad.net/ListHelp

_______________________________________________
Mailing list: https://launchpad.net/~openstack
Post to     : openstack@lists.launchpad.net
Unsubscribe : https://launchpad.net/~openstack
More help   : https://help.launchpad.net/ListHelp

Reply via email to