keystoneauth middleware not domain aware (keystone v3 issue)
Affects | Status | Importance | Assigned to | Milestone | |
---|---|---|---|---|---|
OpenStack Object Storage (swift) |
Fix Released
|
Undecided
|
Alistair Coles | ||
OpenStack Security Advisory |
Won't Fix
|
Undecided
|
Unassigned | ||
openstack-manuals |
Fix Released
|
Medium
|
Anne Gentle |
Bug Description
With Keystone V3, user's in two different domains can have the same name. Swift ACLs contian the "bare" username. Example:
X-Container
This is ok with Keystone V2, where all users have unique names. However, with Keystone V3, there could be a "sally" in domain "A" and a different "sally" in domain "B". As-is, this allows information to leak to unauthorized/
Note: the solution is not to simply to continue use the v2 API in auth_token. The problem is at the Keystone server side; specifically if you allow multiple domains, user name clashes can occur. With the v2 API, auth_token does not know what the domain name is. With the V3 API auth_token, it adds X-DOMAIN-NAME and X-DOMAIN-ID to the environment. However, since keystoneauth does not look at these variables, using V3 in auth_token does not add anything.
We could extend the ACL syntax to assoicate the domain with the intended user. For example: sally@A. However, exisitng ACLs must be supported. However, swift does not know the domain associated with an account...making it difficult to map usernames in the ACL to a domain.
Even if the Swift middleware is made domain-aware, we need to warn deployers that they must not combine V3 multiple domains with V2 auth_token in the pipeline. A solution that would allow that is to have an option in Keystone to enforse unique usernames across domains. With that option, there would be no need to worry about domains when processing Swift ACLs. I'll file a Keystone bug for this suggestion.
Changed in keystone: | |
status: | New → Incomplete |
Changed in openstack-manuals: | |
assignee: | nobody → Anne Gentle (annegentle) |
Changed in swift: | |
assignee: | nobody → Alistair Coles (alistair-coles) |
Changed in openstack-manuals: | |
status: | New → Confirmed |
importance: | Undecided → Medium |
Changed in openstack-manuals: | |
status: | Confirmed → In Progress |
Changed in openstack-manuals: | |
status: | In Progress → Fix Released |
Changed in swift: | |
milestone: | none → 2.2.0-rc1 |
status: | Fix Committed → Fix Released |
Changed in swift: | |
milestone: | 2.2.0-rc1 → 2.2.0 |
I kind of felt it was going to cause trouble when reviewing the patch that was adding it https:/ /review. openstack. org/#/c/ 22820/ oh well past is past.
I think we should just disable it in a way, I am still not sure if there is a use case for *:username for even in v2, did you guys had some in HP ?
If there is use cases, I think updating Swift middleware to be domain aware when running v3 may be the way to go.