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.
pgls/README.md
2023-08-22 14:46:36 +06:00

94 lines
5.0 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

# Использование разрешений LDAP в PostgreSQL
* http://github.com/fruworg/pgls
## Описание:
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:
* под Windows: http://rubyinstaller.org
* на Debian/Ubuntu: `apt-get install ruby libpq-dev`.
### Установка gem:
```
gem install pgls
```
### Установка из Git:
```sh
git clone https://github.com/fruworg/pgls.git
cd pgls
gem install bundler
bundle install
bundle exec rake install
```
## Использование:
Создать файл конфигурации на основе
[config/sample-config.yaml](https://github.com/fruworg/pgls/blob/master/config/sample-config.yaml)
или еще лучше
[config/sample-config2.yaml](https://github.com/fruworg/pgls/blob/master/config/sample-config2.yaml).
Запустить в тестовом режиме:
```sh
pgls -c my_config.yaml -vv -t
```
Запуск в режиме модификации:
```sh
pgls -c my_config.yaml -vv
```
Рекомендуется не предоставлять права синхронизируемым пользователям на сервере PostgreSQL, а предоставлять права группам.
Это связано с тем, что операторы `DROP USER`, вызываемые при уходе пользователя, в противном случае терпят неудачу из-за наличия зависимых объектов.
Оператор `DROP GROUP` также не работает при наличии зависимых объектов, но группы, как правило, более стабильны и удаляются редко.
## Тестирование:
В каталоге `test` находится небольшой тестовый набор, который работает с внутренним LDAP-сервером и сервером PostgreSQL. Убедитесь, что команды `pg_ctl`, `initdb` и `psql` находятся в `PATH` следующим образом:
```sh
cd pgls
установить пакет
PATH=$PATH:/usr/lib/postgresql/10/bin/ bundle exec rake test
```
## Проблемы:
* В настоящее время нет возможности установить определенные атрибуты пользователя в PG на основе индивидуальных атрибутов в LDAP (срок действия и т.д.).
## Лицензия
Гем доступен с открытым исходным кодом на условиях [MIT License](https://opensource.org/licenses/MIT).