Use LDAP permissions in PostgreSQL
This repository has been archived on 2023-12-11. You can view files and clone it, but cannot push or open issues or pull requests.
Go to file
2023-08-03 17:39:36 +06:00
.github/workflows CI: Add Github actions 2022-12-02 12:02:51 +01:00
config Merge branch 'master' of https://github.com/larskanis/pg-ldap-sync 2023-07-26 15:08:50 +05:00
exe Update pg_ldap_sync 2023-08-02 17:24:52 +06:00
lib Update version.rb 2023-08-03 17:29:57 +06:00
test Re-add support for attribute ranges 2022-12-01 15:27:40 +01:00
.autotest Sync roles works, sync membership not yet 2011-05-18 15:45:08 +02:00
.gitignore Move from Hoe to Bundler 2018-02-06 21:56:53 +01:00
.travis.yml CI: Update ruby and PostgreSQL versions 2022-01-17 14:04:15 +01:00
appveyor.yml CI: Update ruby and PostgreSQL versions 2022-01-17 14:04:15 +01:00
CHANGELOG.md Prepare release 0.5.0 2023-02-03 19:55:21 +01:00
Gemfile Update Gemfile 2023-07-27 12:42:45 +06:00
LICENSE.txt Move from Hoe to Bundler 2018-02-06 21:56:53 +01:00
Manifest.txt Update Manifest.txt 2011-07-13 15:00:31 +02:00
pg-ldap-sync.gemspec Update pg-ldap-sync.gemspec 2023-08-03 17:28:33 +06:00
Rakefile Add "temp" dir to "rake clean" 2022-11-30 13:15:09 +01:00
README.md Update README.md 2023-08-03 17:39:36 +06:00

Использование разрешений LDAP в PostgreSQL

ОПИСАНИЕ:

LDAP часто используется для централизованного управления пользователями и ролями в корпоративной среде. PostgreSQL предлагает различные методы аутентификации, такие как LDAP, SSPI, GSSAPI или SSL. Однако при любом методе пользователь должен уже существовать в базе данных, прежде чем аутентификация может быть использована. В настоящее время не существует прямой авторизации пользователей базы данных по LDAP. Поэтому роли и членство приходится администрировать дважды.

Данная программа позволяет решить эту проблему путем синхронизации пользователей, групп и их членства из LDAP в PostgreSQL. Доступ к LDAP используется только для чтения. Для синхронизации пользователей и групп pg_ldap_sync выдает соответствующие команды CREATE ROLE, DROP ROLE, GRANT и REVOKE.

Она предназначена для запуска в качестве cron-задания.

FEATURES:

  • Создание, удаление пользователей и групп, а также изменения в членстве синхронизируются из LDAP в PostgreSQL.
  • Поддерживаются вложенные группы/роли
  • Настраивается в конфигурационном файле YAML
  • Возможность использования Active Directory в качестве LDAP-сервера
  • Установка области видимости рассматриваемых пользователей/групп на стороне LDAP и PG
  • Тестовый режим, не вносящий никаких изменений в СУБД
  • Соединения между LDAP и PG могут быть защищены с помощью SSL/TLS
  • NTLM и Kerberos аутентификация на LDAP-сервере

ТРЕБОВАНИЯ:

  • Ruby-2.0+
  • LDAP-v3-сервер
  • PostgreSQL-сервер v9.0+

УСТАНОВКА:

Установить Ruby:

Установите pg-ldap-sync и необходимые зависимости: ``sh gem install pg-ldap-sync


### Установка из Git:
``sh
  git clone https://github.com/fruworg/pg-ldap-sync.git
  cd pg-ldap-sync
  gem install bundler
  bundle install
  bundle exec rake install

ИСПОЛЬЗОВАНИЕ:

Создать файл конфигурации на основе config/sample-config.yaml или еще лучше config/sample-config2.yaml.

Запустить в тестовом режиме: ``sh pg_ldap_sync -c my_config.yaml -vv -t

Запуск в режиме модификации:
``sh
  pg_ldap_sync -c my_config.yaml -vv

Рекомендуется не предоставлять права синхронизируемым пользователям на сервере PostgreSQL, а предоставлять права группам. Это связано с тем, что операторы DROP USER, вызываемые при уходе пользователя, в противном случае терпят неудачу из-за наличия зависимых объектов. Оператор DROP GROUP также не работает при наличии зависимых объектов, но группы, как правило, более стабильны и удаляются редко.

ТЕСТ:

В каталоге test находится небольшой тестовый набор, который работает с внутренним LDAP-сервером и сервером PostgreSQL. Убедитесь, что команды pg_ctl, initdb и psql находятся в PATH следующим образом: ``sh cd pg-ldap-sync установить пакет PATH=$PATH:/usr/lib/postgresql/10/bin/ bundle exec rake test


## ISSUES:

* В настоящее время нет возможности установить определенные атрибуты пользователя в PG на основе индивидуальных атрибутов в LDAP (срок действия и т.д.).


## Лицензия

Гем доступен с открытым исходным кодом на условиях [MIT License](https://opensource.org/licenses/MIT).