external_authorize. Установка соединения с LDAP-хранилищем
В исходном дистрибутиве установлено по умолчанию: нет.
Связанные компоненты: отсутствуют.
Схема размещения:
ext.
Разработано СУБД Pangolin.
В СУБД Pangolin реализован механизм внешней авторизации через LDAP. Существует функция roles_is_member_of, которая вызывается при составлении списка ролей, в которые входит current_user. В данную функцию добавлен хук, который получает role_id и возвращает список дополнительных Oid ролей. Эти роли также добавляются в список, формируемый функцией roles_is_member_of.
Сам хук реализован в рамках расширения external_authorize. Оно устанавливает соединение с LDAP-хранилищем, находит в нем узел, соответствующий авторизуемой роли, и загружает из него имена ролей (из атрибута, заданного в конфигурационном файле внешней авторизации). Далее эти имена ролей преобразуются в Oid и возвращаются из хука в виде списка.
Расширение external_authorize располагается в папке contrib.
Доработка
Доработка не проводилась.
Ограничения
Расширение позволяет централизованно сделать пользователя суперпользователем, поэтому требуется обратить на это внимание, при настройке LDAP, чтобы не выдать лишние привилегии.
Установка
-
Добавьте значения
external_authorizeв настроечный параметрshared_preload_librariesв конфигурационном файлеpostgresql.conf.shared_preload_libraries = '... , external_authorize' -
Добавьте параметр
external_authorize.filenameвpostgresql.conf. В качестве значения укажите путь до файла с конфигурационным файлом внешней авторизации. Путь указывается относительно каталога$PGDATA:external_authorize.filename = 'external_authorize.conf' -
Выполните перезагрузку СУБД:
pg_ctl reload
pg_ctl restart
Отключение
Для того чтобы отключить функциональность расширения, исключите расширение из параметра shared_preload_libraries, затем выполните перезагрузку СУБД (restart).
Настройка
Конфигурационные параметры
| Имя параметра | Допустимые значения | Значение по умолчанию | Установка параметра | Описание параметра |
|---|---|---|---|---|
external_authorize.filename | Путь к файлу в каталоге PGDATA | external_authorize.conf | Требуется перезагрузка Pangolin | Путь к конфигурационному файлу внешней авторизации |
external_authorize.ldap_network_timeout | 1-60000 мс | 500 мс | Требуется перезагрузка Pangolin | Тайм-аут подключения к LDAP-хранилищу |
external_authorize.role_mapping_filename | Путь к файлу в каталоге PGDATA | Пустая строка | Требуется перезагрузка Pangolin | Путь к файлу с описанием сопоставления имен ролей в БД и узлов в LDAP |
external_authorize.role_mapping | Набор строк — содержимое конфигурационного файла сопоставления имен | Пустая строка | В случае защищенного конфигурирования смена параметров возможна только через сервер KMS | Описание сопоставления имен ролей в БД и узлов в LDAP |
external_authorize.ldap_cache_ttl | 1-86400 сек | 1800 секунд | Требуется перезагрузка Pangolin | TTL (Time To Live, время жизни) данных в кеше содержимого LDAP |