Site icon IT Draft

[РЕШЕНО] LDAP-авторизация в PostgreSQL для FreeIPA

[РЕШЕНО] LDAP-авторизация в PostgreSQL для FreeIPA

[HowTo] FreeIPA LDAP PostgreSQL

У нас развернута служба каталогов на FreeIPA. Требуется подключить LDAP-авторизацию в PostgreSQL для пользователей FreeIPA из определенной группы

Требования:

Редактируем файл pg_hba.conf и вставляем строку подключения

$ sudo nano /etc/postgresql/14/main/pg_hba.conf
...
# Database administrative login by Unix domain socket
host    all     all     0.0.0.0/0       ldap ldapserver=freeipa.itdraft.lan ldapbasedn="cn=users,cn=accounts,dc=itdraft,dc=lan" ldapbinddn="uid=postgresql_s,cn=users,cn=accounts,dc=itdraft,dc=lan" ldapbindpasswd="passwd" ldapsearchattribute=uid
...

либо следующую строку, если хотим фильтрацию по группам

Selectel — ведущий провайдер облачной инфраструктуры и услуг дата-центров

Компания занимает лидирующие позиции на рынке на рынке выделенных серверов и приватных облаков, и входит в топ-3 крупнейших операторов дата-центров в России.


host    all     all     0.0.0.0/0       ldap ldapserver=freeipa.itdraft.lan ldapbasedn="cn=users,cn=accounts,dc=itdraft,dc=lan" ldapbinddn="uid=postgresql_s,cn=users,cn=accounts,dc=itdraft,dc=lan" ldapbindpasswd="passwd" ldapsearchfilter="(&(objectClass=person)(uid=$username)(memberOf=cn=g-postgres,cn=groups,cn=accounts,dc=itdraft,dc=lan))" 

Строка подключения должна идти самой первой записью, что б отрабатывала LDAP-авторизация.
Одновременно ldapsearchattribute и ldapsearchfilter не работают, PostgreSQL не запустится.

Перезапускаем PostgreSQL

$ sudo systemctl restart postgresql

Либо перечитываем конфиг pg_hba.conf (без перезагрузки PostgreSQL)

$ sudo -u postgres psql -c "SELECT pg_reload_conf();"

Пользователь должен быть локально добавлен в PostgreSQL (можно без пароля)

$ sudo -u postgres createuser m.makarov

Проверяем

$ psql postgres -h 127.0.0.1 -U m.makarov -W
Password: 
psql (14.7 (Debian 14.7-1.pgdg110+1))
SSL connection (protocol: TLSv1.3, cipher: TLS_AES_256_GCM_SHA384, bits: 256, compression: off)
Type "help" for help.

postgres=> 
Exit mobile version