Как настроить keystone с помощью Active Directory при использовании root DN (dc=example,dc=com) в качестве user_tree_dn?¶
Окружение¶
Red Hat OpenStack Enterprise Linux Platform 7.0
Red Hat OpenStack Platform 8.0
Red Hat OpenStack Platform 9.0
Проблема¶
При использовании серверной части LDAP и подключении к Active Directory с несколькими контроллерами домена попытка использовать root DN ( dc=example,dc=com ) в качестве user_tree_dn (или tenant/role_tree_dn) завершается ошибкой:
"Authorization Failed: Unable to communicate with identity service: {"error":
{"message": "An unexpected error prevented the server from fulfilling your
request. {'info': '000004DC: LdapErr: DSID-0C0906E8, comment: In order to
perform this operation a successful bind must be completed on the connection.,
data 0, v1db1', 'desc': 'Operations error'}", "code": 500, "title": "Internal
Server Error"}}. (HTTP 500)".
Решение¶
Это связано с тем, что python-ldap отслеживает все ссылки с анонимным доступом, который по умолчанию отключен в AD из соображений безопасности.
Вы можете отключить использование отсылок в /etc/openldap/ldap.conf
, добавив:
REFERRALS off
Вы также можете исправить это в разделе [ldap]
файла /etc/keystone/keystone.conf
или файла /etc/keystone/domains/keystone.<your_domain>.conf
.:
# Override the system's default referral chasing behavior for
# queries. (boolean value)
chase_referrals=false
Первопричина¶
Объяснение ссылок LDAP:
При подключении к серверу Windows Active Directory и наличии множества контроллеров домена в домене AD Keystone делает DNS-запрос на domain.org и DomainDnsZones.domain.org, затем выбирает случайный контроллер домена и привязывается к нему:
:https://bugs.launchpad.net/keystone/+bug/1234319 :https://bugs.launchpad.net/keystone/+bug/1233365
Шаги диагностики¶
- Используйте Wireshark для захвата трафика и анализа запросов на привязку.
- Проверьте файл
/var/log/keystone/keystone.log
.