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-09 17:36:22 +06:00
.github/workflows CI: Add Github actions 2022-12-02 12:02:51 +01:00
config Create krb5-cfg.yml 2023-08-04 19:34:57 +06:00
exe Update and rename pg_ldap_sync to pgls 2023-08-09 17:22:48 +06:00
lib Rename version.rb to version.rb 2023-08-09 17:30:05 +06:00
test Rename test_pg_ldap_sync.rb to test_pgls.rb 2023-08-09 17:36:22 +06: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 2023-08-09 17:35:50 +06:00
pgls.gemspec Update and rename pg-ldap-sync.gemspec to pgls.gemspec 2023-08-09 17:26:16 +06:00
Rakefile Add "temp" dir to "rake clean" 2022-11-30 13:15:09 +01:00
README.md Update README.md 2023-08-09 17:32:02 +06:00

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

ОПИСАНИЕ:

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

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

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

ВОЗМОЖНОСТИ:

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

ТРЕБОВАНИЯ:

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

УСТАНОВКА:

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

Установка из Git:

  git clone https://github.com/fruworg/pgls.git
  cd pgls
  gem install bundler
  bundle install
  bundle exec rake install

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

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

Запустить в тестовом режиме:

  pgls -c my_config.yaml -vv -t

Запуск в режиме модификации:

  pgls -c my_config.yaml -vv

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

ТЕСТ:

В каталоге test находится небольшой тестовый набор, который работает с внутренним LDAP-сервером и сервером PostgreSQL. Убедитесь, что команды pg_ctl, initdb и psql находятся в PATH следующим образом:

  cd pgls
  установить пакет
  PATH=$PATH:/usr/lib/postgresql/10/bin/ bundle exec rake test

ПРОБЛЕМЫ:

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

ЛИЦЕНЗИЯ

Гем доступен с открытым исходным кодом на условиях MIT License.