Hello folks,

Regarding option C, if group IDs are unique within a given cloud/context, and 
these are discoverable by clients that can then set the ACL on a secret in 
Barbican, then that seems like a viable option to me. As it is now, the user 
information provided to the ACL is the user ID information as found in 
X-User-Ids now, not user names.

To Kevin’s point though, are these group IDs unique across domains now, or in 
the future? If not the more complex tuples suggested could be used, but seem 
more error prone to configure on an ACL.

Thanks,
John

From: <Fox>, Kevin M <kevin....@pnnl.gov<mailto:kevin....@pnnl.gov>>
Reply-To: "OpenStack Development Mailing List (not for usage questions)" 
<openstack-dev@lists.openstack.org<mailto:openstack-dev@lists.openstack.org>>
Date: Thursday, June 4, 2015 at 6:01 PM
To: "OpenStack Development Mailing List (not for usage questions)" 
<openstack-dev@lists.openstack.org<mailto:openstack-dev@lists.openstack.org>>
Subject: Re: [openstack-dev] [keystone][barbican] Regarding exposing 
X-Group-xxxx in token validation

In Juno I tried adding a user in Domain A to group in Domain B. That currently 
is not supported. Would be very handy though.

We're getting a ways from the original part of the thread, so I may have lost 
some context, but I think the original question was, if barbarian can add group 
names to their resource acls.

Since two administrative domains can issue the same group name, its not safe I 
believe.

Simply ensuring the group name is associated with a user and the domain for the 
user matches the domain for the group wouldn't work because someone with 
control of their own domain can just make a
user and give them the group with the name they want and come take your 
credentials.

What may be safe is for the barbican ACL to contain the group_id if they are 
uniqueue across all domains, or take a domain_id & group_name pair for the acl.

Thanks,
Kevin

________________________________
From: Dolph Mathews [dolph.math...@gmail.com<mailto:dolph.math...@gmail.com>]
Sent: Thursday, June 04, 2015 1:41 PM
To: OpenStack Development Mailing List (not for usage questions)
Subject: Re: [openstack-dev] [keystone][barbican] Regarding exposing 
X-Group-xxxx in token validation

Problem! In writing a spec for this ( https://review.openstack.org/#/c/188564/ 
), I remembered that groups are domain-specific entities, which complicates the 
problem of providing X-Group-Names via middleware.

The problem is that we can't simply expose X-Group-Names to underlying services 
without either A) making a well-documented assumption about the ONE owning 
domain scope of ALL included groups, B) passing significantly more data to 
underlying services than just a list of names (a domain scope for every group), 
C) passing only globally-unique group IDs (services would then have to retrieve 
additional details about each from from keystone if they so cared).

Option A) More specifically, keystone could opt to enumerate the groups that 
belong to the same domain as the user. In this case, it'd probably make more 
sense from an API perspective if the "groups" enumeration were part of the 
"user" resources in the token response body (the "user" object already has a 
containing domain ID. That means that IF a user were to be assigned a group 
membership in another domain (assuming we didn't move to disallowing that 
behavior at some point), then it would have to be excluded from this list. If 
that were true, then I'd also follow that X-Group-Names become 
X-User-Group-Names, so that it might be more clear that they belong to the 
X-User-Domain-*.

Option B) This is probably the most complex solution, but also the most 
explicit. I have no idea how this interface would look in terms of headers 
using current conventions. If we're going to break conventions, then I'd want 
to pass a id+domain_id+name for each group reference. So, rather than including 
a list of names AND a list of IDs, we'd have some terribly encoded list of 
group objects (I'm not sure what the HTTP convention is on this sort of use 
case, and hoping someone can illustrate a better solution given the 
representation below):

  X-Groups: 
id%3D123%2Cdomain_id%3D456%2Cname%3Dabc,id%3D789%2Cdomain_id%3D357%2Cname%3Ddef

Option C) Federated tokens would actually require solution (C) today because 
they only include group IDs, not names. But the group enumeration in federated 
tokens was also only intended to be consumed by keystone, so that's not really 
an issue for that one use case. But option (C) would mean there are no 
X-Group-Names passed to services, just X-Group-Ids. I'm guessing this won't 
provide the user experience that Barbican is looking for?


I'm leaning towards solution (A), but curious if that'll work for Barbican 
and/or if anyone has an idea that I'm overlooking.


On Thu, Jun 4, 2015 at 8:18 AM, Dolph Mathews 
<dolph.math...@gmail.com<mailto:dolph.math...@gmail.com>> wrote:
To clarify: we already have to include the groups produced as a result of 
federation mapping **in the payload** of Fernet tokens so that scoped tokens 
can be created later:

  
https://github.com/openstack/keystone/blob/a637ebcbc4a92687d3e80a50cbe88df3b13c79e6/keystone/token/providers/fernet/token_formatters.py#L523

These are OpenStack group IDs, so it's up to the deployer to keep those under 
control to keep Fernet token sizes down. It's the only place in the current 
Fernet implementation that's (somewhat alarmingly) unbounded in the real world.

But we do **not** have a use case to add groups to *all* Fernet payloads: only 
to token creation & validation responses.


On Thu, Jun 4, 2015 at 2:36 AM, Morgan Fainberg 
<morgan.fainb...@gmail.com<mailto:morgan.fainb...@gmail.com>> wrote:
For Fernet, the groups would only be populated on validate as Dolph outlined. 
They would not be added to the core payload. We do not want to expand the 
payload in this manner.

--Morgan

Sent via mobile

On Jun 3, 2015, at 21:51, Lance Bragstad 
<lbrags...@gmail.com<mailto:lbrags...@gmail.com>> wrote:

I feel if we allowed group ids to be an attribute of the Fernet's core payload, 
we continue to open up the possibility for tokens to be greater than the 
initial "acceptable" size limit for a Fernet token (which I believe was 255 
bytes?). With this, I think we need to provide guidance on the number of group 
ids allowed within the token before that size limit is compromised.

We've landed patches recently that allow for id strings to be included in the 
Fernet payload [0], regardless of being uuid format (which can be converted to 
bytes before packing to save space, this is harder for us to do with non-uuid 
format id strings). This can also cause the Fernet token size to grow. If we 
plan to include more information in the Fernet token payload I think we should 
determine if the original acceptable size limit still applies and regardless of 
what that size limit is provide some sort of "best practices" for helping 
deployments keep their token size as small as possible.


Keeping the tokens user (and developer) friendly was a big plus in the design 
of Fernet, and providing resource for deployments to maintain that would be 
helpful.


[0] 
https://review.openstack.org/#/q/status:merged+project:openstack/keystone+branch:master+topic:bug/1459382,n,z

On Wed, Jun 3, 2015 at 10:19 PM, Steve Martinelli 
<steve...@ca.ibm.com<mailto:steve...@ca.ibm.com>> wrote:
Dozens to hundreds of roles or endpoints could cause an issue now :)

But yeah, groups are much more likely to number in the dozens than roles or 
endpoints. But I think the Fernet token size is so small that it could probably 
handle this (since it does so now for the federated workflow).

Thanks,

Steve Martinelli
OpenStack Keystone Core



From:        "Fox, Kevin M" <kevin....@pnnl.gov<mailto:kevin....@pnnl.gov>>
To:        "OpenStack Development Mailing List (not for usage questions)" 
<openstack-dev@lists.openstack.org<mailto:openstack-dev@lists.openstack.org>>
Date:        06/03/2015 11:14 PM
Subject:        Re: [openstack-dev] [keystone][barbican] Regarding        
exposing        X-Group-xxxx in token validation
________________________________



Will dozens to a hundred groups or so on one user cause issues? :)

Thanks,
Kevin

________________________________
From: Morgan Fainberg
Sent: Wednesday, June 03, 2015 7:23:22 PM
To: OpenStack Development Mailing List (not for usage questions)
Subject: Re: [openstack-dev] [keystone][barbican] Regarding exposing 
X-Group-xxxx in token validation

In general I am of the opinion with the move to Fernet there is no good reason 
we should avoid adding the group information into the token.

--Morgan

Sent via mobile

On Jun 3, 2015, at 18:44, Dolph Mathews 
<dolph.math...@gmail.com<mailto:dolph.math...@gmail.com>> wrote:


On Wed, Jun 3, 2015 at 5:58 PM, John Wood 
<john.w...@rackspace.com<mailto:john.w...@rackspace.com>> wrote:
Hello folks,

There has been discussion about adding user group support to the per-secret 
access control list (ACL) feature in Barbican. Hence secrets could be marked as 
accessible by a group on the ACL rather than an individual user as implemented 
now.

Our understanding is that Keystone does not pass along a user’s group 
information during token validation however (such as in the form of 
X-Group-Ids/X-Group-Names headers passed along via Keystone middleware).

The pre-requisite for including that information in the form of headers would 
be adding group information to the token validation response. In the case of 
UUID, it would be pre-computed and stored in the DB at token creation time. In 
the case of PKI, it would be encoded into the PKI token and further bloat PKI 
tokens. And in the case of Fernet, it would be included at token validation 
time.

Including group information, however, would also let us efficient revoke tokens 
using token revocation events when group membership is affected in any way 
(user being removed from a group, a group being deleted, or a group-based role 
assignment being revoked). The OS-FEDERATION extension is actually already 
including groups in tokens today, as a required part of the federated workflow. 
We'd effectively be introducing that same behavior into the core Identity API 
(see the federated token example):

  
https://github.com/openstack/keystone-specs/blob/master/api/v3/identity-api-v3-os-federation-ext.rst#request-an-unscoped-os-federation-token

This would allow us to address bugs such as:

  https://bugs.launchpad.net/keystone/+bug/1268751

In the past, we shied away from including groups if only to avoid bloating the 
size of PKI tokens any further (but now we have Fernet tokens providing a 
viable alternative). Are there any other reasons not to add group information 
to the token validation response?


Would the community consider this a useful feature? Would the community 
consider adding this support to Liberty?

Thank you,
John


__________________________________________________________________________
OpenStack Development Mailing List (not for usage questions)
Unsubscribe: 
openstack-dev-requ...@lists.openstack.org?subject:unsubscribe<http://openstack-dev-requ...@lists.openstack.org?subject:unsubscribe>
http://lists.openstack.org/cgi-bin/mailman/listinfo/openstack-dev


__________________________________________________________________________
OpenStack Development Mailing List (not for usage questions)
Unsubscribe: 
openstack-dev-requ...@lists.openstack.org<mailto:openstack-dev-requ...@lists.openstack.org>?subject:unsubscribe
http://lists.openstack.org/cgi-bin/mailman/listinfo/openstack-dev__________________________________________________________________________
OpenStack Development Mailing List (not for usage questions)
Unsubscribe: 
openstack-dev-requ...@lists.openstack.org?subject:unsubscribe<http://openstack-dev-requ...@lists.openstack.org?subject:unsubscribe>
http://lists.openstack.org/cgi-bin/mailman/listinfo/openstack-dev


__________________________________________________________________________
OpenStack Development Mailing List (not for usage questions)
Unsubscribe: 
openstack-dev-requ...@lists.openstack.org?subject:unsubscribe<http://openstack-dev-requ...@lists.openstack.org?subject:unsubscribe>
http://lists.openstack.org/cgi-bin/mailman/listinfo/openstack-dev


__________________________________________________________________________
OpenStack Development Mailing List (not for usage questions)
Unsubscribe: 
openstack-dev-requ...@lists.openstack.org<mailto:openstack-dev-requ...@lists.openstack.org>?subject:unsubscribe
http://lists.openstack.org/cgi-bin/mailman/listinfo/openstack-dev

__________________________________________________________________________
OpenStack Development Mailing List (not for usage questions)
Unsubscribe: 
openstack-dev-requ...@lists.openstack.org?subject:unsubscribe<http://openstack-dev-requ...@lists.openstack.org?subject:unsubscribe>
http://lists.openstack.org/cgi-bin/mailman/listinfo/openstack-dev



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

Reply via email to