Настройка поддержки LDAP

Особенности интеграции Microsoft Active Directory с OpenStack

  1. Пользователь, который используется для подключения в OpenStack Keystone до AD по протоколу LDAP должен:
    • обладать правами на чтение информации из каталога AD и смену пароля, которые можно выставить с помощью делегирования на OU;
    • иметь права администратора домена OpenStack.
  2. Необходимый протокол взаимодействия - LDAPS (порт 636). Для активации LDAPS в AD можно воспользоваться статьей;
  3. При передачи пароль должен быть в Unicode. Указывать пароль необходимо в кавычках. Подробнее - «Изменение пароля пользователя Windows Active Directory и LDS с помощью LDAP».

Дополнительно

  1. Инструкция по интеграции LDAP и OpenStack - - «Integrate Identity with LDAP» .
  2. Драйвер tnx_ldap, обеспечивающий изменение пароля в AD, устанавливается вместе с модулей TIONIX.Client (python3-tionix_client). Подробнее в разделе «Авторизация».

Настройка драйвера для работы с OpenLDAP

Для возможности смены пароля пользователя авторизованного через LDAP реализован драйвер tnx_ldap, который расширяет встроенный ldap. Драйвер корректно воспринимает ответ от сервера Active Directory, когда у пользователя выставлена принудительная смена пароля при первом входе. Также драйвер корректно сохраняет измененный пароль в Active Directory, ранее драйвер Keystone некорректно обрабатывал запросы с сервера Active Directory (был реализован под общепринятый LDAP). Теперь в данной ситуации в VDI клиенте появляется форма смены пароля. Аналогично, при подключении VDI клиента в консольном режиме, через запрос нового пароля в консоли. Если пароль не соответствует требованиям безопасности LDAP сервера, то выводится соответствующее сообщение. Аналогично если не совпадают введенные новые пароли.

Важно

Для корректной работы драйвера с OpenLDAP необходим пакет python-ldap версии 2.4.15-2.

Пример конфигурационного файла для OpenLDAP:

[identity]
driver = tnx_ldap

[ldap]
url = ldap://10.35.129.67:389
user = cn=admin,dc=test,dc=loc
password = ******
suffix = dc=test,dc=loc
use_dumb_member = False
allow_subtree_delete = False

user_tree_dn = ou=Users,dc=test,dc=loc
user_objectclass = person

group_tree_dn = ou=Groups,dc=test,dc=loc
group_objectclass = groupOfNames

user_allow_create = True
user_allow_update = True
user_allow_delete = True

group_allow_create = True
group_allow_update = True
group_allow_delete = True

user_id_attribute = uid
user_name_attribute = cn
user_mail_attribute = mail
user_pass_attribute = userPassword
user_filter = (&(objectClass=person)(memberOf=cn=group8,ou=Groups,dc=test,dc=loc))

group_id_attribute = cn
group_name_attribute = cn
group_member_attribute = member
group_desc_attribute = description
group_filter =

use_auth_pool = False

Примечание

Значения атрибутов для параметров user и group зависят от настроек OpenLDAP и могут отличаться от значений из примера.

Настройка драйвера для работы с Samba

Для возможности смены пароля пользователя авторизованного через LDAP реализован драйвер tnx_ldap, который расширяет встроенный ldap. Драйвер корректно воспринимает ответ от сервера Active Directory, когда у пользователя выставлена принудительная смена пароля при первом входе. Также драйвер корректно сохраняет измененный пароль в Active Directory, ранее драйвер Keystone некорректно обрабатывал запросы с сервера Active Directory (был реализован под общепринятый LDAP). Теперь в данной ситуации в VDI клиенте появляется форма смены пароля. Аналогично, при подключении VDI клиента в консольном режиме, через запрос нового пароля в консоли. Если пароль не соответствует требованиям безопасности LDAP сервера, то выводится соответствующее сообщение. Аналогично если не совпадают введенные новые пароли.

Пример конфигурационного файла для Samba:

[identity]
driver = tnx_ldap

[ldap]
url = ldap://10.35.20.130:389
user = "CN=Mitaka User,OU=users,OU=tionix,DC=tionix,DC=loc"
password = *******
suffix = dc=tionix,dc=loc
use_dumb_member = False
allow_subtree_delete = False

user_tree_dn = ou=users,ou=tionix,dc=tionix,dc=loc
user_objectclass = person

group_tree_dn = ou=groups,ou=tionix,dc=tionix,dc=loc
group_objectclass = group

user_allow_create = False
user_allow_update = True
user_allow_delete = False

group_allow_create = False
group_allow_update = False
group_allow_delete = False

user_id_attribute = cn
user_name_attribute = sAMAccountName
user_mail_attribute = mail
user_pass_attribute = unicodePwd

group_id_attribute = cn
group_name_attribute = cn
group_member_attribute =
group_desc_attribute = description
group_filter =

Примечание

Значения атрибутов для параметров user и group зависят от настроек OpenLDAP и могут отличаться от значений из примера.

Настройка маппинга полей в зависимости от сервера LDAP

В разных LDAP серверах сущности пользователя и его поля называются по-разному. Поэтому универсальной настройки нет, настраивается в зависимости от типа подключенного сервера. Примеры настройки:

[ldap]
user = dc=Manager,dc=example,dc=org
password = samplepassword
suffix = dc=example,dc=org
user_tree_dn = ou=Users,dc=example,dc=org
user_objectclass = inetOrgPerson
group_tree_dn = ou=Groups,dc=example,dc=org
group_objectclass = groupOfNames

Поля сущности пользователя и групп сопоставляются отдельно:

[ldap]
user_id_attribute      = cn
user_name_attribute    = sn
user_mail_attribute    = mail
user_pass_attribute    = userPassword
user_enabled_attribute = userAccountControl
user_enabled_mask      = 2
user_enabled_invert    = false
user_enabled_default   = 512
user_default_project_id_attribute =
user_additional_attribute_mapping =

group_id_attribute     = cn
group_name_attribute   = ou
group_member_attribute = member
group_desc_attribute   = description
group_additional_attribute_mapping =

Описывать все атрибуты необязательно, достаточно указать лишь необходимые.

Обратите внимание на разницу указание параметров в зависимости от типа сервера:

  • Windows Server AD:

    user_pass_attribute = unicodePwd
    
  • OpenLdap и Samba:

    user_pass_attribute = userPassword
    

Также важно учитывать перечень устаревших параметров:

user_allow_create = False
user_allow_update = False
user_allow_delete = False

Указывать данные параметры не нужно.