Moving/disabling LDAP users break Keystone queries depending on role ID
Affects | Status | Importance | Assigned to | Milestone | |
---|---|---|---|---|---|
OpenStack Identity (keystone) |
Triaged
|
Medium
|
Kristi Nikolla |
Bug Description
- ubuntu 16.04
- keystone 2:9.2.0-ubuntu1 (mitaka)
- python-
- swift 2.7.0-0ubuntu2 (mitaka)
Hi, I got a Keystone installation with a domain using the LDAP driver to connect to AD (read-only). It's working great, and even though I don't administrate the AD the seperation hasn't been a problem until now. Primary usage is to authenticate users with Swift.
Projects and project members are more or less mapped 1:1 to specific AD groups, generated during setup. An ongoing process has been to keep this up to date with new/old employees/groups. The issue arise with the current company policy, where the user accounts of old employees is not disabled, but moved to a seperate OU. For instance:
| CN=Doe, John, OU=Users, DC=DOMAIN, DC=COM
| CN=Doe, John, OU=Former employees, DC=DOMAIN, DC=COM
Whenever this happens it seems to break the role assignment for the user. Commands such as listing users in the user's project, or looking up the user's details yields the error "Could not find resource <id>".
Does moving users in AD break the identity mapping, and thus their ID with relations stored in Keystone? Is there any possible configuration that can be done to avoid this?
--- keystone.
[ldap]
url =
user =
password =
suffix =
query_scope = sub
page_size = 500
user_tree_dn =
user_objectclass = person
user_id_attribute = sAMAccountName
user_name_attribute = sAMAccountName
user_mail_attribute = mail
user_pass_attribute =
user_enabled_
user_enabled_mask = 2
user_enabled_
user_attribute_
user_allow_create = false
user_allow_update = false
user_allow_delete = false
[identity]
driver = ldap
--- openstack_
# user's id is listed in response to listing users that belong in a project,
# and while keystone is able to find the correct username based on id, it can't find the user itself
$ openstack user list --debug --project PROJECT --long
...
REQ: curl -g -i -X GET https:/
"GET /v3/role_
RESP: [200] Content-Length: 4401 Vary: X-Auth-Token Keep-Alive: timeout=5, max=98 Server: Apache/2.4.18 (Ubuntu) Connection: Keep-Alive Date: Fri, 20 Jan 2017 13:54:19 GMT x-openstack-
RESP BODY: {"role_
...
REQ: curl -g -i -X GET https:/
"GET /v3/users/<id> HTTP/1.1" 404 89
RESP: [404] Content-Length: 89 Vary: X-Auth-Token Keep-Alive: timeout=5, max=89 Server: Apache/2.4.18 (Ubuntu) Connection: Keep-Alive Date: Fri, 20 Jan 2017 13:54:19 GMT x-openstack-
RESP BODY: {"error": {"message": "Could not find user: <username>", "code": 404, "title": "Not Found"}}
...
Could not find resource <id>
Changed in keystone: | |
milestone: | none → queens-rc1 |
Changed in keystone: | |
milestone: | queens-rc1 → queens-rc2 |
tags: | added: office-hours |
Changed in keystone: | |
status: | In Progress → Triaged |
I did some checking with other keystone developers that are a bit more familiar with keystone+LDAP integration [0]. It sounds like the short answer is that keystone doesn't support inspecting group assignment changes on the LDAP side.
We could clarify that in our LDAP documentation though.
[0] http:// eavesdrop. openstack. org/irclogs/ %23openstack- keystone/ %23openstack- keystone. 2017-01- 23.log. html#t2017- 01-23T20: 20:56