[Openstack] Keystone Design Session - Fine Grained Access Control

2013-04-02 Thread Joe Savak
I'd like to propose a design session on Fine Grained Access Control for the 
summit.

Session info: http://summit.openstack.org/cfp/edit/99
Blueprint: https://blueprints.launchpad.net/keystone/+spec/fine-grain

Details:

 a large implementation, there can be many users each having some level of 
access to a shared pool of resources. Not all users need that much access 
though and there are cases where access must be restricted further. V3 
introduces policies and that works for restricting access to certain 
capabilities (only a user with the role admin or group foo can create 
server in nova, etc). Policies bloat up though if they need to get down the 
resource level (only joe can delete server ABC).

This blue print (which will be expanded upon) introduces the concept of a 
resource group in an attempt to provide highly-available, easily modifiable 
fine grained access control to OpenStack services.

1. The v3 core spec doesn't allow for fine-grained access control. You can 
force it into policy blobs, but that isn't scalable or transparent enough
2. Identity shouldn't act as a CMDB, keeping track and storing references to 
all resources
3. Having a configurable group that represents resources across services is 
easier to maintain in identity
4. Token scope has layers (all optional), and
 a. Service endpoints the token has access to
 b. Which roles the token is scoped to
 c. Which policies the token is scoped to
5. Likewise, policies should have scope:
 a. Which resource groups the policies apply to
6. Services should make a call available to introspect which servers, files, 
etc make up that resource group



Looking forward to your comments  the discussion!

Thanks,

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


Re: [Openstack] Keystone Design Session - Fine Grained Access Control

2013-04-02 Thread Joe Savak
Hi Jay,

  See my comments below  thanks for the feedback. :)



What is the difference between a resource group and a group?



A group in keystone is a collection of users. This aids in role assignments and 
makes a logical collection of users possible.

A resource group in the context of keystone is an identifier of a distributed 
restriction that can be assigned to policies and users.



For example: Policy x defines that user joe can perform the capability 
deleteServers. That policy is tied to a resource group called prod-servers.

Hitting up nova in a GET /resource-group/prod-servers will yield all the 
resources (with respect to that service) that comprise that resource group. 
Those are the servers that joe may delete.



Do your scalability concerns revolve around having a single policy BLOB for the 
service and the corresponding single record, multi-writer data access pattern 
that would mean? If you had a policy BLOB per group, would that assuage those 
concerns? Meaning... a compromise between having a REST API that would 
essentially operate on single resources and the existing API that changes all 
policies in one call?



The proposed solution above helps distribute the real load of a fine-grained 
access control solution out to the services that would know more about the 
resources.



Thanks,

joe



-Original Message-
From: openstack-bounces+joe.savak=rackspace@lists.launchpad.net 
[mailto:openstack-bounces+joe.savak=rackspace@lists.launchpad.net] On 
Behalf Of Jay Pipes
Sent: Tuesday, April 02, 2013 9:58 AM
To: openstack@lists.launchpad.net
Subject: Re: [Openstack] Keystone Design Session - Fine Grained Access Control



On 04/02/2013 09:51 AM, Joe Savak wrote:

 I'd like to propose a design session on Fine Grained Access Control

 for the summit.



 Session info: http://summit.openstack.org/cfp/edit/99



 Blueprint:

 https://blueprints.launchpad.net/keystone/+spec/fine-grain



 Details:



 a large implementation, there can be many users each having some level

 of access to a shared pool of resources. Not all users need that much

 access though and there are cases where access must be restricted

 further. V3 introduces policies and that works for restricting access

 to certain capabilities (only a user with the role admin or group

 foo can create server in nova, etc). Policies bloat up though if

 they need to get down the resource level (only joe can delete server

 ABC).



Once you go down this super-fine-grained route and start managing privileges in 
this manner, it definitely complicates things. :)



 This blue print (which will be expanded upon) introduces the concept

 of a resource group in an attempt to provide highly-available,

 easily modifiable fine grained access control to OpenStack services.



What is the difference between a resource group and a group?



 1. The v3 core spec doesn't allow for fine-grained access control.

 You can force it into policy blobs, but that isn't scalable or

 transparent enough



Do your scalability concerns revolve around having a single policy BLOB for the 
service and the corresponding single record, multi-writer data access pattern 
that would mean? If you had a policy BLOB per group, would that assuage those 
concerns? Meaning... a compromise between having a REST API that would 
essentially operate on single resources and the existing API that changes all 
policies in one call?



Best,

-jay



___

Mailing list: https://launchpad.net/~openstack

Post to : 
openstack@lists.launchpad.netmailto: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


Re: [Openstack] [openstack-dev] Fwd: [keystone] Tokens representing authorization to projects/tenants in the Keystone V3 API

2012-11-14 Thread Joe Savak
Hi Joe,
If I'm working across multiple tenants, I'd prefer one token that I can 
securely handle that proves access rights to the tenants I'm working with. 
Handling multiple tokens increases the complexity of clients needing to provide 
multi-tenancy access to an authenticated identity. It also adds more calls to 
keystone. 

Again, I think that having the keystone reference implementation restrict 
tokens to 1 tenant is fine. We shouldn't have such arbitrary restrictions in 
the API contract though. It needs to be extensible and flexible to allow for 
the all sorts of use cases that are likely to occur.

Thanks,
joe

-Original Message-
From: heckj [mailto:he...@mac.com] 
Sent: Tuesday, November 13, 2012 3:59 PM
To: Joe Savak
Cc: OpenStack Development Mailing List; openstack@lists.launchpad.net 
(openstack@lists.launchpad.net)
Subject: Re: [Openstack] [openstack-dev] Fwd: [keystone] Tokens representing 
authorization to projects/tenants in the Keystone V3 API

Hey Joe:

Currently a user scoped token doesn't include a service catalog - mostly 
because I think the service catalog generally requires tenant_id's to 
interpolate into the values to provide it. That doesn't mean we can't put 
in/include service catalog endpoints where that value doesn't need to be 
determined.

I'm also questioning the value of providing a token scoped to all tenants 
associated with a user - that seems to have the same value as just using a user 
token. 

In fact, even if we allow some arbitrary set of tenants to be scoped into a 
token along with a user, what on earth should be in the service catalog? 
Endpoints relevant to every possible tenant?

This just seems to be a potential explosion of data that is poorly scoped from 
a security perspective.

-joe

On Nov 13, 2012, at 1:42 PM, Joe Savak joe.sa...@rackspace.com wrote:
 Will user-scoped token include the full service catalog? 
 
 Also, I thought the consensus was to allow the API contract to be flexible on 
 how many tenants we can scope the token to. The ref impl can enforce 1 
 tenant-scoped token. Are we diverging from this?
 
 Thanks,
 joe
 
 -Original Message-
 From: openstack-bounces+joe.savak=rackspace@lists.launchpad.net 
 [mailto:openstack-bounces+joe.savak=rackspace@lists.launchpad.net] On 
 Behalf Of heckj
 Sent: Tuesday, November 13, 2012 1:34 PM
 To: OpenStack Development Mailing List
 Cc: openstack@lists.launchpad.net (openstack@lists.launchpad.net)
 Subject: Re: [Openstack] [openstack-dev] Fwd: [keystone] Tokens representing 
 authorization to projects/tenants in the Keystone V3 API
 
 
 On Nov 13, 2012, at 11:01 AM, Jorge Williams jorge.willi...@rackspace.com 
 wrote:
 On Nov 13, 2012, at 11:35 AM, heckj wrote:
 So maintaining a token scoped to just the user, and a mechanism to scope it 
 to a tenant sound like all goodness. We can absolutely keep the API such 
 that it can provide either. 
 
 Right now, our auth_token middleware implicitly requires a tenant in that 
 scoping to work. If someone wanted to support a token scoped to just a user 
 for the services, they'd need a different middleware there. Keystone as a 
 service *doesn't* use the auth_token middleware, so with the V3 API we can 
 make it provide services appropriately based on a token scoped only to the 
 user.
 
 All that in place, allow a token to be indeterminate scoped to multiple 
 tenants is fraught with security flaws, and if we continue to provide 
 unscoped tokens, that should obviate the need for token scoped to multiple 
 tenants. 
 
 I'm not sure I'm following you there.  I don't see how unscoped tokens 
 obviate the need to scope to multiple tenants, these may be driven by  
 different concerns. 
 
 Again, I think we need to have some flexibility in how we scope tokens. The 
 API should be flexible enough to support different models -- I think that 
 scoping a token to multiple tenants is useful in cases such as delegation -- 
 where a single identity may be issued revokable access to a set of resources 
 in multiple projects.
 
 The consensus from the folks weighing in on this from a security perspective 
 seems to be that it's kosher to restrict tokens further (the least privilege 
 thing). Broadening the scope to multiple tenants or sets of tenants doesn't 
 appear to follow those best practices. If you wanted to accept a less-scoped 
 token than the scoped to single tenant, you can accept and use a user-scoped 
 token, at least by my read.
 
 -joe
 
 
 
 ___
 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


Re: [Openstack] [openstack-dev] Fwd: [keystone] Tokens representing authorization to projects/tenants in the Keystone V3 API

2012-11-13 Thread Joe Savak
Will user-scoped token include the full service catalog? 

Also, I thought the consensus was to allow the API contract to be flexible on 
how many tenants we can scope the token to. The ref impl can enforce 1 
tenant-scoped token. Are we diverging from this?

Thanks,
joe

-Original Message-
From: openstack-bounces+joe.savak=rackspace@lists.launchpad.net 
[mailto:openstack-bounces+joe.savak=rackspace@lists.launchpad.net] On 
Behalf Of heckj
Sent: Tuesday, November 13, 2012 1:34 PM
To: OpenStack Development Mailing List
Cc: openstack@lists.launchpad.net (openstack@lists.launchpad.net)
Subject: Re: [Openstack] [openstack-dev] Fwd: [keystone] Tokens representing 
authorization to projects/tenants in the Keystone V3 API


On Nov 13, 2012, at 11:01 AM, Jorge Williams jorge.willi...@rackspace.com 
wrote:
 On Nov 13, 2012, at 11:35 AM, heckj wrote:
 So maintaining a token scoped to just the user, and a mechanism to scope it 
 to a tenant sound like all goodness. We can absolutely keep the API such 
 that it can provide either. 
 
 Right now, our auth_token middleware implicitly requires a tenant in that 
 scoping to work. If someone wanted to support a token scoped to just a user 
 for the services, they'd need a different middleware there. Keystone as a 
 service *doesn't* use the auth_token middleware, so with the V3 API we can 
 make it provide services appropriately based on a token scoped only to the 
 user.
 
 All that in place, allow a token to be indeterminate scoped to multiple 
 tenants is fraught with security flaws, and if we continue to provide 
 unscoped tokens, that should obviate the need for token scoped to multiple 
 tenants. 
 
 I'm not sure I'm following you there.  I don't see how unscoped tokens 
 obviate the need to scope to multiple tenants, these may be driven by  
 different concerns. 
 
 Again, I think we need to have some flexibility in how we scope tokens. The 
 API should be flexible enough to support different models -- I think that 
 scoping a token to multiple tenants is useful in cases such as delegation -- 
 where a single identity may be issued revokable access to a set of resources 
 in multiple projects.

The consensus from the folks weighing in on this from a security perspective 
seems to be that it's kosher to restrict tokens further (the least privilege 
thing). Broadening the scope to multiple tenants or sets of tenants doesn't 
appear to follow those best practices. If you wanted to accept a less-scoped 
token than the scoped to single tenant, you can accept and use a user-scoped 
token, at least by my read.

-joe



___
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


Re: [Openstack] Fwd: [openstack-dev] [keystone] Tokens representing authorization to projects/tenants in the Keystone V3 API

2012-10-23 Thread Joe Savak
Your suggestion to it optional (it being a token scoped to multiple projects). 
:)

From: Adam Young [mailto:ayo...@redhat.com]
Sent: Monday, October 22, 2012 9:57 PM
To: Jorge Williams
Cc: Joe Savak; OpenStack Development Mailing List; openstack@lists.launchpad.net
Subject: Re: [Openstack] Fwd: [openstack-dev] [keystone] Tokens representing 
authorization to projects/tenants in the Keystone V3 API

Are you guys +1 ing the original Idea, my suggestion to make it optional, the 
fact that I think we should call these sloppy tokens?

On 10/22/2012 03:40 PM, Jorge Williams wrote:
+1 here too.

At the end of the day, we'd like the identity API to be flexible enough to 
allow the token to be scoped in a manner that the deployer sees fit.  What the 
keystone implementation does by default is a different matter -- and disabling 
multiple tenant  scope by default would be fine by me.

-jOrGe W.


On Oct 21, 2012, at 11:10 AM, Joe Savak wrote:


+1. ;)

So the issue is that the v2 API contract allows a token to be scoped to 
multiple tenants. For v3, I'd like to have the same flexibility. I don't see 
security issues, as if a token were to be sniffed you can change the password 
of the account using it and use those creds to scope tokens to any tenant you 
wish.
Scope should always be kept as limited as possible. Personally, I don't feel 
like limiting the tenant list makes much difference.  THe more I think about 
it, the real benefit comes from limiting the  endpoints.






On Oct 20, 2012, at 21:07, Adam Young 
ayo...@redhat.commailto:ayo...@redhat.com wrote:
On 10/20/2012 01:50 PM, heckj wrote:
I sent this to the openstack-dev list, and thought I'd double post this onto 
the openstack list at Launchpad for additional feedback.

-joe

Begin forwarded message:
From: heckj he...@mac.commailto:he...@mac.com
Subject: [openstack-dev] [keystone] Tokens representing authorization to 
projects/tenants in the Keystone V3 API
Date: October 19, 2012 1:51:16 PM PDT
To: OpenStack Development Mailing List 
openstack-...@lists.openstack.orgmailto:openstack-...@lists.openstack.org
Reply-To: OpenStack Development Mailing List 
openstack-...@lists.openstack.orgmailto:openstack-...@lists.openstack.org

The topic of what a token can or can't represent for the upcoming V3 Keystone 
API  came up - and I wanted to share the conversation a bit more broadly to get 
feedback.


A bit of history:

In the V2 API, when you authenticated with just a username and password, the 
token that was provided wasn't entirely clearly defined. The reference 
implementation that Keystone used was to create what's been called an 
'unscoped' token - which was generally limited to only being able to get a list 
of possible tenants/projects and the capability of getting a token specific to 
a user  tenant/project (what's been called a scoped token)

Likewise, the reference implementation of the rest of the OpenStack projects 
all require a tenant information to be included within the token as that token 
was the identity refernce inforoamtion - and most OpenStack services were 
wanting to know the tenant associated with the token for 
authorization/ownership purposes.

Apparently Rackspace's internal implementation provided a token that was 
immediately valid for all possible tenants to which the user was associated, 
and presumably their internal implementations of openstack do whatever work is 
appropriate to discern and provide that information to the various openstack 
services.

The quandary:

In the V3 API, we started off with, and currently define the token as being 
specifically mandated to a single tenant, with a new requirement that if you 
authorize with just a username and password, a default tenant is used. If for 
some reason you have no tenant associated with the userid, the authorization is 
to be refused. If the user is associated with more than one tenant/project, 
it's possible to use the token to get a list of other tenants/projects and 
request a new token specific to one of those other tenant/projects, but the 
implementation is expected to respect and provide a default.

I would like to make default tenant a configuration option, and have it 
disabled by default.  Unscoped tokens are a very useful construct.  In the case 
where the user has many roles across a multitude of projects, it is possible to 
create huge tokens.  I would prefer unscoped tokens to remain, and to be 
associated with no tenant.  The only operation Keystone should provide with 
them is the ability to enumerate tenants, so something like Horizon can then 
request an appropriately scoped token.

I am also in favor of limiting the scope of a token to an endpoint.  Even 
more-so than tenants, scoping a token to an end point increases security.  Once 
a token has been scoped to an endpoint, it can only be used on that endpoint.  
If an endpoint gets compromised, the damage is limited to resources that 
endpoint already has access to.  This, in conjunction with pre

Re: [Openstack] Fwd: [openstack-dev] [keystone] Tokens representing authorization to projects/tenants in the Keystone V3 API

2012-10-21 Thread Joe Savak
+1. ;)

So the issue is that the v2 API contract allows a token to be scoped to 
multiple tenants. For v3, I'd like to have the same flexibility. I don't see 
security issues, as if a token were to be sniffed you can change the password 
of the account using it and use those creds to scope tokens to any tenant you 
wish.



On Oct 20, 2012, at 21:07, Adam Young 
ayo...@redhat.commailto:ayo...@redhat.com wrote:

On 10/20/2012 01:50 PM, heckj wrote:
I sent this to the openstack-dev list, and thought I'd double post this onto 
the openstack list at Launchpad for additional feedback.

-joe

Begin forwarded message:
From: heckj he...@mac.commailto:he...@mac.com
Subject: [openstack-dev] [keystone] Tokens representing authorization to 
projects/tenants in the Keystone V3 API
Date: October 19, 2012 1:51:16 PM PDT
To: OpenStack Development Mailing List 
openstack-...@lists.openstack.orgmailto:openstack-...@lists.openstack.org
Reply-To: OpenStack Development Mailing List 
openstack-...@lists.openstack.orgmailto:openstack-...@lists.openstack.org

The topic of what a token can or can't represent for the upcoming V3 Keystone 
API  came up - and I wanted to share the conversation a bit more broadly to get 
feedback.


A bit of history:

In the V2 API, when you authenticated with just a username and password, the 
token that was provided wasn't entirely clearly defined. The reference 
implementation that Keystone used was to create what's been called an 
'unscoped' token - which was generally limited to only being able to get a list 
of possible tenants/projects and the capability of getting a token specific to 
a user  tenant/project (what's been called a scoped token)

Likewise, the reference implementation of the rest of the OpenStack projects 
all require a tenant information to be included within the token as that token 
was the identity refernce inforoamtion - and most OpenStack services were 
wanting to know the tenant associated with the token for 
authorization/ownership purposes.

Apparently Rackspace's internal implementation provided a token that was 
immediately valid for all possible tenants to which the user was associated, 
and presumably their internal implementations of openstack do whatever work is 
appropriate to discern and provide that information to the various openstack 
services.

The quandary:

In the V3 API, we started off with, and currently define the token as being 
specifically mandated to a single tenant, with a new requirement that if you 
authorize with just a username and password, a default tenant is used. If for 
some reason you have no tenant associated with the userid, the authorization is 
to be refused. If the user is associated with more than one tenant/project, 
it's possible to use the token to get a list of other tenants/projects and 
request a new token specific to one of those other tenant/projects, but the 
implementation is expected to respect and provide a default.

I would like to make default tenant a configuration option, and have it 
disabled by default.  Unscoped tokens are a very useful construct.  In the case 
where the user has many roles across a multitude of projects, it is possible to 
create huge tokens.  I would prefer unscoped tokens to remain, and to be 
associated with no tenant.  The only operation Keystone should provide with 
them is the ability to enumerate tenants, so something like Horizon can then 
request an appropriately scoped token.

I am also in favor of limiting the scope of a token to an endpoint.  Even 
more-so than tenants, scoping a token to an end point increases security.  Once 
a token has been scoped to an endpoint, it can only be used on that endpoint.  
If an endpoint gets compromised, the damage is limited to resources that 
endpoint already has access to.  This, in conjunction with pre-auths, could 
allow a user to perform an action with a minimum of risk in a public cloud 
environment.



A few folks from Rackspace touched on this at the very tail end of the V3 API 
review session on Thursday, bringing up that they had an issue with the token 
being scoped to a single tenant. Since this has significant implications to 
both security and a potential user experience flow, I wanted to bring the issue 
up across the broader community for discussion.

The request outstanding:

Rackspace folks are requesting that the token not be limited to a single 
tenant/project, but instead provides a list of potential tenants against which 
the token should be considered valid.
I would like the world to know that we are affectionately calling such tokens 
sloppy tokens and Joe Savak has adopted the nickname of Sloppy Joe for 
championing them.  Allowing it as an option is fine, but I would not recommend 
that this become the norm, or that we enable this feature by default.

Brief (maybe shoddy) analysis:

This would potentially imply changes to what gets passed as a part of the 
authentication reference in the context passed using auth_token

[Openstack] (no subject)

2012-10-16 Thread Joe Savak

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


[Openstack] REPOSE - at 3:40/Wednesday in Maggie (OpenStack summit)

2012-10-16 Thread Joe Savak
Come learn about Repose - Restful HTTP proxy service helping with rate limiting 
and client authentication
http://openrepose.org/

Introducing Repose:
http://www.rackspace.com/blog/introducing-repose-the-restful-proxy-service-engine/

A more technical look at Repose:
http://devops.rackspace.com/459/rate-limiting-with-repose-the-restful-proxy-service-engine


3:40pm on Wednesday at the OpenStack Summit in the Maggie Room
___
Mailing list: https://launchpad.net/~openstack
Post to : openstack@lists.launchpad.net
Unsubscribe : https://launchpad.net/~openstack
More help   : https://help.launchpad.net/ListHelp


Re: [Openstack] [Keystone] What exactly are we modeling with endpoints?

2012-04-25 Thread Joe Savak
Is it reasonable to have a service without any endpoints?

There are no use cases today that I know of that would need a service 
represented in the service catalog without endpoints. Since the future is vague 
though and each implementation could be different, I don't think we should 
require a service to have an endpoint.

Same with 3 duplicate endpoints - a use case could come up and the core 
contract should be flexible enough with these things.

From: Joseph Heck [mailto:he...@me.com]
Sent: Wednesday, April 25, 2012 11:47 AM
To: Nguyen, Liem Manh
Cc: Joe Savak; openstack@lists.launchpad.net (openstack@lists.launchpad.net); 
Adam Gandelman
Subject: Re: [Openstack] [Keystone] What exactly are we modeling with endpoints?

This isn't about parsing the data structure - it's about what a service 
represents so that we can model it appropriately. So what does the service 
here represent? the collection of all possible services of that type? That's 
what your example would seem to indicate.

In your example, the service is a pretty simple structure - just having a type 
(driven by convention and API spec) and human readable name, and each service 
is expected to have 1 to N endpoints.

Is it reasonable to have a service without any endpoints? Regardless of 
reasonable, is it allowable?

What does an endpoint represent? The API's URI point, clearly. Is there a 
uniqueness constraint of any kind on endpoints? Is it allowable (if strange) to 
list 3 duplicate endpoints with exactly the same metadata on it?

-joe

On Apr 25, 2012, at 9:37 AM, Nguyen, Liem Manh wrote:
I would like to keep the service type  and name under the service and not the 
endpoint, too.  Make it easier to parse for a given service.

One thing is that I am not sure if we need the metadata tag... In the Keystone 
XSD, we have the construct anyAttribute namespace=##other 
processContents=lax/, which allows any additional, implementation-specific 
attribute to be added.  Those that do not support the specific attribute can 
simply ignore it.   A couple of benefits I can see with not using the metadata 
tag, and just use the custom element directly like this:  
http://paste.openstack.org/show/13832/, which the anyAttribute supports, are:

* Simplier parsing, one level less.
* If that attribute becomes a core attribute later, no need to change 
the parser.

Liem

From: 
openstack-bounces+liem_m_nguyen=hp@lists.launchpad.netmailto:openstack-bounces+liem_m_nguyen=hp@lists.launchpad.net
 
[mailto:openstack-bounces+liem_m_nguyen=hp@lists.launchpad.netmailto:hp@lists.launchpad.net]
 On Behalf Of Joe Savak
Sent: Tuesday, April 24, 2012 1:04 PM
To: Joseph Heck; 
openstack@lists.launchpad.netmailto:openstack@lists.launchpad.net 
(openstack@lists.launchpad.netmailto:openstack@lists.launchpad.net)
Cc: Adam Gandelman
Subject: Re: [Openstack] [Keystone] What exactly are we modeling with endpoints?

Having endpoints under the service construct is supposed to make it easier to 
programmatically find the endpoint(s) you are interested in.

For example - as nova client I can parse the service catalog and identity nova 
by service-type compute in order to get the public, internal, and admin 
endpoints for nova.

By having service type  name as attributes under the endpoint, I'll have a 
harder time doing that (having to dive into each endpoint construct to identify 
the ones with service-type compute).
Maybe it would be better to have each endpoint have its own construct inside of 
a service.

So instead of http://paste.openstack.org/show/13678/
Maybe http://paste.openstack.org/show/13682/


From: 
openstack-bounces+joe.savak=rackspace@lists.launchpad.netmailto:openstack-bounces+joe.savak=rackspace@lists.launchpad.net
 
[mailto:openstack-bounces+joe.savak=rackspace@lists.launchpad.netmailto:rackspace@lists.launchpad.net]
 On Behalf Of Joseph Heck
Sent: Friday, April 20, 2012 4:16 PM
To: openstack@lists.launchpad.netmailto:openstack@lists.launchpad.net 
(openstack@lists.launchpad.netmailto:openstack@lists.launchpad.net)
Cc: Adam Gandelman
Subject: [Openstack] [Keystone] What exactly are we modeling with endpoints?

While I've been roaming about the summit and conference, I've been trying to 
figure out exactly what we're modeling with the current service and 
endpoints that are in the API today. After talking with a number of folks, 
it's getting clearer that how it's being used is very installation specific.

I'd like to simplify this aspect of the API if at all possible, especially with 
a lot of the good ideas around describing the relationships between endpoints 
and and their installation.

The use cases I'm hearing actively in use are:

* (Horizon/UI/client) To indicate to a user where they can go to access their 
data
* (Glance, Nova, Keystone client) to find the endpoint relevant to uploading 
images (current client implementations appear to assume there is only one image 
endpoint)

The use case to indicate

Re: [Openstack] [Keystone] What exactly are we modeling with endpoints?

2012-04-24 Thread Joe Savak
Having endpoints under the service construct is supposed to make it easier to 
programmatically find the endpoint(s) you are interested in.

For example - as nova client I can parse the service catalog and identity nova 
by service-type compute in order to get the public, internal, and admin 
endpoints for nova.

By having service type  name as attributes under the endpoint, I'll have a 
harder time doing that (having to dive into each endpoint construct to identify 
the ones with service-type compute).
Maybe it would be better to have each endpoint have its own construct inside of 
a service.

So instead of http://paste.openstack.org/show/13678/
Maybe http://paste.openstack.org/show/13682/


From: openstack-bounces+joe.savak=rackspace@lists.launchpad.net 
[mailto:openstack-bounces+joe.savak=rackspace@lists.launchpad.net] On 
Behalf Of Joseph Heck
Sent: Friday, April 20, 2012 4:16 PM
To: openstack@lists.launchpad.net (openstack@lists.launchpad.net)
Cc: Adam Gandelman
Subject: [Openstack] [Keystone] What exactly are we modeling with endpoints?

While I've been roaming about the summit and conference, I've been trying to 
figure out exactly what we're modeling with the current service and 
endpoints that are in the API today. After talking with a number of folks, 
it's getting clearer that how it's being used is very installation specific.

I'd like to simplify this aspect of the API if at all possible, especially with 
a lot of the good ideas around describing the relationships between endpoints 
and and their installation.

The use cases I'm hearing actively in use are:

* (Horizon/UI/client) To indicate to a user where they can go to access their 
data
* (Glance, Nova, Keystone client) to find the endpoint relevant to uploading 
images (current client implementations appear to assume there is only one image 
endpoint)

The use case to indicate a geographic location for a datacenter or cloud is 
not consistent - some implementations I've learned of have that feature (and 
use Region for that sort of information), and others are load balancing a 
single endpoint to deploy to multiple datacenters and geographic regions from a 
single endpoint.

At the summit and conference, I heard a desire to expose geographic information 
with the endpoints, but that is clearly an operator specific 
implementation/deployment detail. Likewise I heard a lot of We could 
really... if additional metadata was easily available on endpoints, again in 
fairly implementation/deployment specific detail.

So looking forward towards a v.next API, what do you all think about having 
just endpoints, with everything else being attributes on those endpoints 
(including what service and type it is), with some expected conventions 
(that there are a few well defined types - such as PublicURL and InternalURL, 
and relevant names for the rest API endpoints (ec2, compute, volume, image, 
identity...)

Additional metadata can then float on the endpoints in 
deployment/implementation specific ways that don't lock in other systems to be 
deployed and implemented in the same fashion.

-joe


On Apr 20, 2012, at 1:47 PM, Lorin Hochstein wrote:
On Apr 13, 2012, at 12:34 PM, Adam Gandelman wrote:
On 04/13/2012 10:50 AM, Dolph Mathews wrote:
While $(tenant_id)s is certainly the documented syntax, it appears that the SQL 
catalog backend (and *only* the SQL catalog backend, as far as I can tell) 
explicitly supports both $(tenant_id)s and %(tenant_id)s:

https://github.com/openstack/keystone/blob/master/keystone/catalog/backends/sql.py#L163

Perhaps Adam Gandelman has some insight?

-Dolph

Dolph-

No, the same is supported in the case of templated catalog as well, which is 
what the SQL catalog was largely based off:

https://github.com/openstack/keystone/blob/master/keystone/catalog/backends/templated.py#L115

Just tested that sed -i 's/\$/%/g' /etc/keystone/default_catalog.templates 
still produces a functional service catalog when configured to use the 
templated backend.

Seeing as both are supported, perhaps it would be better for docs to be updated 
to refer to the use of % instead of $ to avoid people running into problems 
with the $() sub-shell?

The OpenStack Install and Deploy manual has some language about this (see last 
paragraph): 
http://docs.openstack.org/trunk/openstack-compute/install/content/elements-of-keystone-service-catalog-entry.html

This hasn't made its way into the admin docs yet, though.


Take care,

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



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

___
Mailing list: https://launchpad.net/~openstack
Post to : 

Re: [Openstack] Repose project?

2012-03-12 Thread Joe Savak
Hi Liem!
Jorge  team have been busy on it and have developed the resources below.

Docs:
http://openrepose.org/documentation.html
Wiki:
http://wiki.openrepose.org/display/REPOSE/Home
Code:
https://github.com/rackspace/repose


Thanks,
Joe

From: openstack-bounces+joe.savak=rackspace@lists.launchpad.net 
[mailto:openstack-bounces+joe.savak=rackspace@lists.launchpad.net] On 
Behalf Of Nguyen, Liem Manh
Sent: Monday, March 12, 2012 12:00 PM
To: openstack@lists.launchpad.net
Subject: [Openstack] Repose project?

Hello fellow stackers,

Last year, Jorge gave a presentation on the Repose (Restful Proxy Service 
Engine)...  I am just wondering what is the status of this project?  Where can 
I find more information on this?  It seems like a very good idea to help make 
APIs more consistent and promote re-use.

Thanks,
Liem
___
Mailing list: https://launchpad.net/~openstack
Post to : openstack@lists.launchpad.net
Unsubscribe : https://launchpad.net/~openstack
More help   : https://help.launchpad.net/ListHelp


[Openstack] Request for review - Keystone RBAC calls

2011-10-27 Thread Joe Savak
Hi Stackers,
Keystone has an RBAC prototype on its roadmap for e-1 and we'd 
like to get your feedback on the blueprint for it 
(https://blueprints.launchpad.net/keystone/+spec/rbac-keystone). OS-RBAC, a 
keystone extension, will allow Nova, Swift, Glance, and Dashboard to manage 
capabilities and assign capabilities to roles.  The prototype will not be the 
full implementation of it, but will include WADL, XSD, and some of the major 
calls.

Take a look and let us know your feedback.

Thanks,
Joe

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


Re: [Openstack] RBAC handled by keystone or each services ?

2011-10-06 Thread Joe Savak
Hi Kuo,
   RBAC is a hot topic at Essex right now with a few sessions to explicitly 
discuss them:

http://essexdesignsummit.sched.org/event/2610368e1c5bd0e52982777f75baafb5
http://essexdesignsummit.sched.org/event/2d4b84fe8559d6a144897a1d53adbb9e
http://essexdesignsummit.sched.org/event/6648ad6a353fd56d39d45193a69f6908

I'm sure notes will be shared about the Essex design summit soon.

In the meantime, Keystone tag 2011.03 provides the following functionality for 
roles:

1.   Core calls as defined in 
https://github.com/openstack/keystone/blob/master/keystone/content/admin/identityadminguide.pdf
 (should be fully  developed)

a.   GET /users/{user_id}/roles - returns global roles for a specific user 
(excludes tenant roles)

b.  GET /tenants/{tenantId}/users/{user_id}/roles - returns roles for a 
specific user on a specific tenant (excludes global roles)

2.   Extension calls as defined in 
https://github.com/openstack/keystone/blob/master/keystone/content/admin/OS-KSADM-admin-devguide.pdf
 (contract complete but not code complete)

a.   GET /OS-KSADM/roles - list roles

b.  POST /OS-KSADM/roles - add role

c.   GET /OS-KSADM/roles/{roleId} - get a role

d.  DELETE /OS-KSADM/roles/{roleId} - delete a role

Since the extension isn't complete yet,  you can use keystone-manage to add 
users, roles, etc for testing.

Thanks,
Joe

From: openstack-bounces+joe.savak=rackspace@lists.launchpad.net 
[mailto:openstack-bounces+joe.savak=rackspace@lists.launchpad.net] On 
Behalf Of Kuo Hugo
Sent: Wednesday, October 05, 2011 6:39 PM
To: openstack@lists.launchpad.net
Subject: [Openstack] RBAC handled by keystone or each services ?

Hello folks ,

While playing with Keystone , there's four roles named 
[Admin,Member,KeystoneAdmin,KeystoneServiceAdmin].
I'm confusing about that who handles these roles's permission / privileges  
I mean RBAC include  admin, itsec, projectmanager, netadmin, developer roles in 
NOVA but not Admin/Member .
is that handled by keystone or service itself ???

Is there any API to add Roles(also set permission / privileges)?

In my guess , the RBAC still on each service(nova / swift ) , but how NOVA 
knows the permission of Role Admin ?


--
+Hugo Kuo+
tonyt...@gmail.commailto:tonyt...@gmail.com
hugo@cloudena.commailto:hugo@cloudena.com
+886-935-004-793

www.cloudena.comhttp://www.cloudena.com
This email may include confidential information. If you received it in error, 
please delete it.
___
Mailing list: https://launchpad.net/~openstack
Post to : openstack@lists.launchpad.net
Unsubscribe : https://launchpad.net/~openstack
More help   : https://help.launchpad.net/ListHelp


Re: [Openstack] Proposal: URIs for X-Auth-Header Keystone tokens

2011-09-12 Thread Joe Savak
Mark  Bryan,
I haven't forgotten about this and included it on the keystone wiki so 
we won't lose track of it during Essex planning.
http://wiki.openstack.org/keystone

Thanks,
Joe

-Original Message-
From: openstack-bounces+joe.savak=rackspace@lists.launchpad.net 
[mailto:openstack-bounces+joe.savak=rackspace@lists.launchpad.net] On 
Behalf Of Mark Nottingham
Sent: Wednesday, September 07, 2011 2:11 AM
To: Bryan Taylor
Cc: openstack@lists.launchpad.net
Subject: Re: [Openstack] Proposal: URIs for X-Auth-Header Keystone tokens


There's been a lot of interest in a finer-grained Vary function (i.e., 
something that lets you specify the cache key on something more flexible than 
just whole headers). We're working a a spec in the background, but of course 
caches will need to support it...

Cheers,



On 05/09/2011, at 3:43 PM, Bryan Taylor wrote:

 It _would_ be useful to have Vary pick out a link by its rel, even on a
 request. Maybe the rel= part should've been considered part of the
 header:
 Link;rel=Keystone-token : blah
 
 Or maybe Vary should support matching on header values:
 Vary: Link:*;rel=keystone-token
 
 
 On 9/4/11 9:51 PM, Mark Nottingham m...@mnot.net wrote:
 
 Good point; Link makes more sense on a response.
 
 Cheers,
 
 
 On 05/09/2011, at 12:49 PM, Bryan Taylor wrote:
 
 Hmmm, I'm thinking more about this. Would using the Link: header break
 the
 ability to use the Vary header? I can't Vary on a Link header based on
 it's rel attribute.
 
 So maybe Keystone-Token is the way to go. I could see intermediaries
 doing
 the token resolution and adding headers like Keystone-User and
 Keystone-Tenant which could also be used in Vary Headers.
 
 
 On 9/4/11 8:06 PM, Bryan Taylor btay...@rackspace.com wrote:
 
 Love it. 
 
 
 Link: 
 https://keystone.server/tokens/fa8426a0-8eaf-4d22-8e13-7c1b16a9370c;
 rel=keystone-token
 
 
 Fixed: s/tenants/tokens/ (my bad).
 
 
 On 9/4/11 7:40 PM, Mark Nottingham m...@mnot.net wrote:
 
 Still getting up to speed on the finer points of keystone, but makes
 sense to me. 
 
 Is X-Auth-Token keystone-specific? If so, calling it something like
 Keystone-Token would be better (X- is falling out of favour; see
 http://tools.ietf.org/html/draft-saintandre-xdash-03). That'd also
 avoid problems with people expecting the other format.
 
 Finally, if you're going to make it a URI, best to enclose it in
 quotes -
 URIs can contain commas, which can be a delimiter in HTTP headers
 (especially if multiple tokens might be allowed).
 
 E.g.,
 Keystone-Token:
 https://keystone.server/tenants/fa8426a0-8eaf-4d22-8e13-7c1b16a9370c;
 
 Cheers,
 
 P.S. If these are going to show up in other contexts, it *might* make
 sense to define keystone-token as a link relation
 http://tools.ietf.org/html/rfc5988, giving you:
 
 Link: 
 
 https://keystone.server/tenants/fa8426a0-8eaf-4d22-8e13-7c1b16a9370c;
 rel=keystone-token
 
 
 On 04/09/2011, at 2:39 AM, Bryan Taylor wrote:
 
 I propose identifying tokens by their full keystone URI within
 X-Auth-Token header. EG: instead of
   X-Auth-Token: fa8426a0-8eaf-4d22-8e13-7c1b16a9370c
 we would do
   X-Auth-Token:
 https://keystone.server/tenants/fa8426a0-8eaf-4d22-8e13-7c1b16a9370c
 
 This has the advantage of allowing federated tokens, and allowing
 APIs
 and even resources to use the auth server in access decisions. A
 given
 service would maintain a whitelists of keystone servers. The service
 would take the request, get the token, and verify that the host of
 the
 token URI matches one from the appropriate whitelist, and then do a
 GET
 on the token per the keystone API.
 
 For example, consider rackspace. We might have 3 keystone servers:
  region1.customer.keystone
  region2.customer.keystone
  employee.keystone
 
 The management API might set it's whitelist to {employee.keystone},
 while the public APIs could whitelist all three, or maybe just the
 first
 two.
 
 This creates three ways to do remote federation.
 1) Each service could simply add remote keystone APIs to its
 whitelists. 
 2) A whitelisted keystone server return REDIRECT, which services
 implicitly trust
 3) A whitelisted keystone server could forward the request directly
 
 Items 2 and 3 might be facilitated by adding an @host string to the
 end of the token to allow the keystone implementation to map the
 token
 to its source. Eg: if the service receives a token that is not from a
 whitelisted client, such as
 
 
 https://keystone.utexas.edu/tenants/fa8426a0-8eaf-4d22-8e13-7c1b16a937
 0c
 
 then it mutate the token to hit a trusted keystone implementation:
 
 
 https://keystone.server/tenants/fa8426a0-8eaf-4d22-8e13-7c1b16a9370c@k
 ey
 s
 tone.utexas.edu
 
 The keystone.server implementation could verify the trust
 relationship
 with keystone.utexas.edu and redirect or forward back to the
 original.
 This would allow remote federations to be controlled by the trusted
 keystone servers in a way that a client can leverage with no special
 knowledge  

Re: [Openstack] API documentation move

2011-09-07 Thread Joe Savak
I like it and +1 for identity-api since it will have both authZ and authN 
capabilities.

From: openstack-bounces+joe.savak=rackspace@lists.launchpad.net 
[mailto:openstack-bounces+joe.savak=rackspace@lists.launchpad.net] On 
Behalf Of Anne Gentle
Sent: Wednesday, September 07, 2011 6:57 AM
To: openstack@lists.launchpad.net
Subject: Re: [Openstack] API documentation move

Hello again -
In yesterday's team meeting, Brian Lamar brought up a good point - why name the 
API projects after the project name, why not the product name? This makes a lot 
of sense to me. So the names for the API repos will be:

compute-api
identity-api (should this be auth-api?)
image-api
storage-api (should this be object-api?)

Let me know your feedback on this naming standard.

Thanks Jay for catching the keystone-api typo. :)

Anne
Anne Gentle
a...@openstack.orgmailto:a...@openstack.org
my bloghttp://justwriteclick.com/ | my 
bookhttp://xmlpress.net/publications/conversation-community/ | 
LinkedInhttp://www.linkedin.com/in/annegentle | 
Delicioushttp://del.icio.us/annegentle | 
Twitterhttp://twitter.com/annegentle
On Tue, Sep 6, 2011 at 1:02 PM, Anne Gentle 
a...@openstack.orgmailto:a...@openstack.org wrote:
Hi all -

I wanted to discuss some changes to the API documentation for each project 
prior to implementation to make sure I'm not missing any crucial detail and to 
ensure you all feel you have ownership of the solution and input into it. My 
goal is to move all the OpenStack documentation into github repos. In doing so, 
I will also move all the API documentation into separate repos with a goal of 
completing the move by October 1st.

Here is my current proposal, please feel free to suggest corrections as you see 
fit.

1. Create new github repos named project-api that contain:
API documentation including existing API Dev Guides and in the case of Nova, an 
API Spec. Four new projects for now: openstack/glance-api, openstack/keystone, 
openstack/nova-api, openstack/swift-api.

2. Create connection to Gerrit for review by core devs for each project, plus 
the creation of a new group, openstack-core-doc, for reviews of all four 
projects.

3. Create a new github repo named openstack/openstack-manuals to contain sys 
admin documentation such as the Admin manuals (installation, configuration, 
administration docs).

4. Automated build/publish on Jenkins to the correct location on 
docs.openstack.orghttp://docs.openstack.org/ (or 
project.openstack.orghttp://project.openstack.org/ as appropriate), either 
/diablo or /api or /incubation depending on project's state. Also includes 
Jenkins jobs to validate the docs pre-merge, for XML validation and testing for 
missing figures.

Please give me your feedback by the end of this week so we can make the next 
moves. Ha! Move! I've also added this item for discussion at today's team 
meeting.

Thanks,
Anne

This email may include confidential information. If you received it in error, 
please delete it.
___
Mailing list: https://launchpad.net/~openstack
Post to : openstack@lists.launchpad.net
Unsubscribe : https://launchpad.net/~openstack
More help   : https://help.launchpad.net/ListHelp


[Openstack] Keystone - call for blueprints (for Essex)

2011-09-07 Thread Joe Savak
Hi all,
We are hard at work getting Keystone documentation and core 
functionality in place for the Diablo release. That doesn't mean we aren't 
thinking ahead to Essex. You'll notice under the keystone wiki 
(http://wiki.openstack.org/keystone) a call for blueprints. Please peruse the 
blueprints that are out there, provide feedback, or feel free to add new ones.

As a side note, all keystone issues have been moved over to launchpad (thank 
you Monty  Dolph) and the rackspace/keystone github repo will be shut down 
(you should be referencing the openstack/keystone github repo).

Thanks  let me know if you have any questions,
Joe
This email may include confidential information. If you received it in error, 
please delete it.
___
Mailing list: https://launchpad.net/~openstack
Post to : openstack@lists.launchpad.net
Unsubscribe : https://launchpad.net/~openstack
More help   : https://help.launchpad.net/ListHelp


Re: [Openstack] Keystone and SCIM - Simple Cloud Identity Management

2011-09-06 Thread Joe Savak
I haven't heard of this before, but it sounds interesting. Possibly capable of 
providing the core (non-extension) CRUD operations for user management in 
Essex. On that note, I updated the keystone wiki 
(http://wiki.openstack.org/keystone ) with links to potential blueprints for 
Essex. I'll include SCIM as well as something to look into.

Thanks,
Joe

-Original Message-
From: openstack-bounces+joe.savak=rackspace@lists.launchpad.net 
[mailto:openstack-bounces+joe.savak=rackspace@lists.launchpad.net] On 
Behalf Of Nathan Sowatskey
Sent: Tuesday, September 06, 2011 6:09 AM
To: openstack@lists.launchpad.net
Subject: [Openstack] Keystone and SCIM - Simple Cloud Identity Management

http://forums.openstack.org/viewtopic.php?f=23t=266

Hi

Is anyone working on Keystone aware of the Simple Cloud Identity Management 
(SCIM) project? See:

http://www.simplecloud.info/

SCIM addresses user provisioning for cloud services. That might overlap with 
Keystone, or there may be another part of Openstack that addresses user 
provisioning to services.

I don't really know, so I am asking here.

Thanks

Nathan
-- 
Nathan Sowatskey (nsowa...@cisco.com) - Technical Leader, STG - +34-638-083-675


___
Mailing list: https://launchpad.net/~openstack
Post to : openstack@lists.launchpad.net
Unsubscribe : https://launchpad.net/~openstack
More help   : https://help.launchpad.net/ListHelp
This email may include confidential information. If you received it in error, 
please delete it.


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