Как настроить интеграцию с Active Directory (AD)?

В данной статье рассматривается настройка интеграции с Active Directory (AD) в случае, если необходимо собирать пользователей и группы из определённого контейнера/области с рекурсивным поиском по поддереву и с одновременным использованием фильтров для пользователей и групп домена.

Примечание

Данный вариант конфигурационного файла актуален только для системы ldap. Для реализации ldaps используются токен и другие параметры. Также необходимо понимать, что параметры домена для пользователей/групп могут отличаться от указанных. Актуальные значения и параметры необходимо уточнять у Администратора Active Directory.

Пример конфигурационного файла (etc/keystone/domains/keystone.domainname.conf) для интеграции Active Directory (AD) с keystone:

[identity]
driver = ldap

[ldap]
url = ldap://IP:389 #указываем IP ldap контроллера, можно указывать несколько, через запятую
user = CN=aos, ou=test, dc=msk,dc=lan #путь до УЗ AD с правами на чтение всех пользователей
password = 'password' #пароль без кавычек
suffix = dc=msk,dc=lan #для примера домена msk.lan
use_dumb_member = False
allow_subtree_delete = False

user_tree_dn = ou=mos, dc=msk,dc=lan #пример дерева для поиска пользователей по AD, параметры зависят от содержания и конкретного домена
user_objectclass = person
user_filter = (&(objectCategory=person)(objectClass=user)(!(userAccountControl:1.2.840.113556.1.4.803:=2))) #пример фильтра для поиска по AD, позволяет применять фильтры PowerShell поиска по AD без какой-либо адаптации

group_tree_dn = ou=VDI, ou=Service, ou=group,dc=msk,dc=lan #пример дерева для поиска групп по AD, параметры зависят от содержания конкретного домена
group_objectclass = group
group_filter = (&(objectCategory=group)) #пример фильтра для поиска по AD, позволяет применять фильтры powerShell поиска по AD без какой-либо адаптации

user_allow_create = False
user_allow_update = False
user_allow_delete = False

group_allow_create = False
group_allow_update = False
group_allow_delete = False

#блок маппинга атрибутов для пользователей, настраивается в соответствии с AD
user_id_attribute      = sAMAccountName
user_name_attribute    = sAMAccountName
user_mail_attribute    = mail
user_pass_attribute    = userPassword

#блок маппинга атрибутов для групп, настраивается в соответствии с AD
group_id_attribute = cn
group_name_attribute = cn
group_member_attribute =
group_desc_attribute = description

page_size = 1000 #если потенциальный получаемый список пользователей/групп большой, могут возникать ошибки при запросах, в таких случаях параметр page_size можно регулировать в меньшую сторону
query_scope = sub #использовать этот параметр на случай рекурсивного поиска по всему поддереву

Примечание

Блок маппинга атрибутов как для пользователей, так и для групп необходимо заполнять в необходимом и достаточном количестве.

Неправильное количество объявлений может привести к ошибкам keystone при работе с некоторыми пользователями из обозреваемого контейнера. Например, у них нет какого-то из указанных атрибутов в AD, но сам пользователь в обозреваемом контейнере есть. Актуальные атрибуты уточняйте у администратора Active Directory.

После каждой редакции конфигурационного файла для применения настроек необходимо перезагружать keystone:

systemctl restart keystone