[openstack-dev] [Keystone] Proposed change to token re--issue

Adam Young ayoung at redhat.com
Wed Feb 20 15:01:21 UTC 2013


On 02/18/2013 01:56 PM, Ali, Haneef wrote:
>
> Hi Adam,
>
> Do you have request/response for the following steps based on V3 token 
> structure?
>
> <!--
>
> 2. User B, sends a request for a token defined by this trust. User B 
> authenticates with his own credential (token or username&password of 
> user B).
>  3. Based on the defined trust user B is granted a token authorizing 
> him to have role X. User B is listed as a "trustee" in the generated 
> token (T).
>
> à
>
the V3-auth API implementation is still under review.  Take a look at:

https://github.com/openstack/identity-api/blob/master/openstack-identity-api/src/markdown/identity-api-v3.md

For the docs.

> Also, what is the token expiry time?  I believe it is lesser of 
> default token expiry time and trust duration.
>
Correct.
>
> Thanks
>
> Haneef
>
> *From:*Adam Young [mailto:ayoung at redhat.com]
> *Sent:* Monday, February 18, 2013 6:06 AM
> *To:* Alexandra Shulman-Peleg
> *Cc:* openstack-dev at lists.openstack.org
> *Subject:* Re: [openstack-dev] [Keystone] Proposed change to token 
> re--issue
>
> On 02/18/2013 08:29 AM, Alexandra Shulman-Peleg wrote:
>
>     Hi Adam,
>
>     I would like to verify my understanding of trusts and their token
>     renewal. Please read the flow below and comment whether we can
>     achieve this.  I know that there are still some missing parts at
>     the Swift side, but I would like to clarify the trusts flow before
>     addressing them.
>
>     Thank you very much,
>     Alex.
>
>     Motivation:
>     User A wants to grant user B an access to container (C). User A is
>     the owner of C.
>
>     Delegation flow:
>     1. By using the API of trusts, user A (having roles X and Y)
>     registers a "trust" to user B, granting him role X sufficient to
>     access container C.
>     2. User B, sends a request for a token defined by this trust. User
>     B authenticates with his own credential (token or
>     username&password of user B).
>     3. Based on the defined trust user B is granted a token
>     authorizing him to have role X. User B is listed as a "trustee" in
>     the generated token (T).
>     4. User B presents the token T to Swift and gains access to
>     container C.
>     5. When the token is expired, user B can renew it by repeating the
>     steps 2-3 above.
>
>
> Yes. That is exactly how it is supposed to work.
>
>
>
>
>
> From: Adam Young <ayoung at redhat.com> <mailto:ayoung at redhat.com>
> To: OpenStack Development Mailing List 
> <openstack-dev at lists.openstack.org> 
> <mailto:openstack-dev at lists.openstack.org>,
> Date: 13/02/2013 04:34 PM
> Subject: [openstack-dev] [Keystone] Proposed change to token re--issue
>
> ------------------------------------------------------------------------
>
>
>
>
> Right now, Keystone will allow you to get a token based on a previous
> token.   It does not matter if the original token is for a different
> scope, more restricted, than the second token.
>
>
> While writing the trusts implementation, I realize that carrying this
> rule forward would open up a security hole.  A user with a token based
> on a trust would be able to get a new token for any of the privileges of
> the trustor.  The whole point of trusts was to scale down the scope of
> access from a token, not to increase it.
>
> I would like to propose the following rule. It will have to apply to
> both the V2 and V3 versions of the APIs.
>
> Only an unscoped token can be used to retrieve another token.
>
>
> In order to get an unscoped token, you have to pass in userid and
> password, or one of the REMOTE_USER mechanisms.
> It is technically OK to use an unscoped token to get another token, so
> long as the time out is honored, but I am not sure if that provides any
> real benefit.
>
> I could make a one-off exception for trust tokens.  However, if we don't
> address this issue now, I suspect it will come back to haunt us later.
>
> Here is a longer rationalization.
>
> Tokens are a symetric shared secret.  If you have the token, you have
> the permissions of the user.  Thus, a token should not be spread
> around.  Ideally, tokens should contain just the minimal amount of
> permissions to accomplish the task at hand.  THat way, if they get
> intercepted, they can only be used to do minimal amounts of damage.  If
> a user has access to multiple projects (tenants), the token shoud not
> provide access to the tenants other than the one for which it is
> allocated.  Right now, due to token reissue,  a token for Project A can
> be used to get a token for Project B.
>
> In the future, we are talking about scoping tokens to domains,
> endpoints, and other containers.  Lets choose now to limit the amount of
> exposure on a single token.
>
> _______________________________________________
> OpenStack-dev mailing list
> OpenStack-dev at lists.openstack.org 
> <mailto:OpenStack-dev at lists.openstack.org>
> http://lists.openstack.org/cgi-bin/mailman/listinfo/openstack-dev
>
>
>
> _______________________________________________
> OpenStack-dev mailing list
> OpenStack-dev at lists.openstack.org
> 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/20130220/e9458271/attachment.html>


More information about the OpenStack-dev mailing list