Создание system account для подключения LDAP-клиента к FreeIPA
2020-11-26
Введение
Для подключения некоторых сервисов к FreeIPA по протоколу LDAP, требуется указать учётные данные какого-либо пользователя. Для этих целей мы будем использовать специальный тип аккаунта ‘system account’.
Преимущества данного типа аккаунта в том, что у него отсутствуют все атрибуты пользователя, кроме логина и пароля. ‘System account’ не имеет возможности:
- получить kerberos-билет;
- выполнить вход на хост или сервис;
- возобладать каким-либо объектом;
- записать или изменить в LDAP какую-либо информацию.
Также на ‘system account’ не распространяются пользовательские политики. Например, политика периодической смены пароля.
Информация о “системных аккаунтах” хранится в отдельной от остальных пользователей ветке ‘cn=sysaccounts,cn=etc,dc=example,dc=org’. Для добавления ‘system account’ можно использовать обычный ldif-файл, но более удобным способом является использование sh-скрипта freeipa-sam.
Работа со скриптом freeipa-sam
Любым способом, даже через copy/paste, копируем скрипт на, например, свою рабочую машину, которая имеет доступ к FreeIPA-домену.
Запускаем скрипт ‘/bin/bash freeipa-sam.sh’ и видим:
### FreeIPA - System Account Manager ###
1.) ldapserver=
2.) domain= (ldapdomain=)
3.) binduser=
4.) bindpass=UNSET!
5.) ssl=true
Actions (conditions not yet met):
add | rm | ls | info | passwd
--- Results ---
--- End Results ---
>
Набирая цифру, соответствующую параметру, заполняем:
- Вводим адрес LDAP-сервера:
ldap.example.org
илиldap.example.org:636
, если требуется указать нестандартный порт.
- Самозаполнится, взяв имя домена из адреса сервера:
example.org
- Вводим имя своей или, если такая предусмотрена регламентом, другой учётной записи с правами администратора:
dmr
- Вводим пароль.
- Оставляем без изменений.
Результат:
### FreeIPA - System Account Manager ###
1.) ldapserver=ldap.example.org
2.) domain=example.org (ldapdomain=dc=example,dc=org)
3.) binduser=uid=dmr,cn=users,cn=accounts,dc=example,dc=org
4.) bindpass=SET!
5.) ssl=true
Actions (ready):
add | rm | ls | info | passwd
--- Results ---
--- End Results ---
>
Переходим к выполнению операций над “системными аккаунтами”:
add
— добавить ‘system account’.rm
— удалить аккаунт.ls
— вывести краткий список существующих аккаунтов.info
— вывести расширенную информацию по всем или одному из существующих аккаунтов.passwd
— изменить пароль определённого аккаунта.
Добавление аккаунта
Выполняя добавление ‘system account’, поочерёдно вводим логин и пароль. Запрос ‘password expiration date YYYYMMDD (blank for 20380119)’ оставляем незаполненным, что автоматически назначит аккаунту дату 20380119031407Z
, означающую бессрочное время действия пароля.
> add
uid of new user=binddn_test
password of new user=
password expiration date YYYYMMDD (blank for 20380119)=
По команде ls
можно убедиться в наличии созданного аккаунта:
--- Results ---
dn: uid=sudo,cn=sysaccounts,cn=etc,dc=example,dc=org
dn: uid=binddn_test,cn=sysaccounts,cn=etc,dc=example,dc=org
--- End Results ---
Командой rm binddn_test
удаляем наш тестовый аккаунт.
Через exit
завершаем работу со скриптом.
Рекомендации к именованию новых system accounts
Пример: binddn_airflow, binddn_hue, binddn_hive.
Все сервисы в отдельной Информационной Системе, подключаемые к LDAP, имеют один ‘system account’. В этом случае, при подозрении на компрометацию пароля с его последующей сменой, понадобится ввести новый пароль лишь в нескольких экземплярах сервиса, тогда как при использовании одного ‘system account’ для всех сервисов организации, объём работы по вводу нового пароля резко увеличивается.
К тому же, периодическая смена пароля, если будет введён такой регламент, может быть растянут по времени, когда пароль от ‘system account’ для каждого сервиса меняется в свой отдельный день. В этом случае, миграция производится безболезненно, потому что изменить пароль в трёх местах проще, чем одновременно в сотне мест.
Но замечу, что ничто не мешает создать новый ‘system account’ с чуть изменённым логином и уникальным паролем и переводить сервисы на его использование постепенно.
Ссылки на использованные материалы
https://www.freeipa.org/page/HowTo/LDAP#System_Accounts https://github.com/noahbliss/freeipa-sam