2011-05-24 00:02:32 +04:00
|
|
|
= Use LDAP permissions in PostgreSQL
|
2011-05-18 17:45:08 +04:00
|
|
|
|
2011-07-13 17:23:47 +04:00
|
|
|
* http://github.com/larskanis/pg-ldap-sync
|
2011-05-18 17:45:08 +04:00
|
|
|
|
|
|
|
== DESCRIPTION:
|
|
|
|
|
2011-07-13 23:14:04 +04:00
|
|
|
LDAP is often used for a centralized user and role management
|
2011-05-24 15:54:53 +04:00
|
|
|
in an enterprise environment. PostgreSQL offers different
|
|
|
|
authentication methods, like LDAP, SSPI, GSSAPI or SSL.
|
|
|
|
However, for any method the user must already exist in the database,
|
|
|
|
before the authentication can be used. There is currently
|
2011-07-13 23:14:04 +04:00
|
|
|
no direct authorization of database users on LDAP. So roles
|
|
|
|
and memberships has to be administered twice.
|
2011-05-24 00:02:32 +04:00
|
|
|
|
2011-07-13 16:59:55 +04:00
|
|
|
This program helps to solve the issue by synchronizing users,
|
|
|
|
groups and their memberships from LDAP to PostgreSQL.
|
2011-07-13 23:14:04 +04:00
|
|
|
Access to LDAP is used read-only. <tt>pg_ldap_sync</tt> issues proper
|
2011-07-13 16:59:55 +04:00
|
|
|
CREATE ROLE, DROP ROLE, GRANT and REVOKE commands to synchronize
|
|
|
|
users and groups.
|
|
|
|
|
2011-05-24 15:54:53 +04:00
|
|
|
It is meant to be started as a cron job.
|
2011-05-18 17:45:08 +04:00
|
|
|
|
2011-07-13 16:59:55 +04:00
|
|
|
== FEATURES:
|
2011-05-18 17:45:08 +04:00
|
|
|
|
2011-05-24 00:02:32 +04:00
|
|
|
* Configurable per YAML config file
|
2011-07-13 16:59:55 +04:00
|
|
|
* Can use Active Directory as LDAP-Server
|
|
|
|
* Nested groups/roles supported
|
2011-07-13 23:14:04 +04:00
|
|
|
* Set scope of considered users/groups on LDAP and PG side
|
2011-05-24 15:54:53 +04:00
|
|
|
* Runs with pg.gem (C-library) or postgres-pr.gem (pure Ruby)
|
2011-07-13 16:59:55 +04:00
|
|
|
* Test mode which doesn't do any changes to the DBMS
|
2011-07-13 23:14:04 +04:00
|
|
|
* Both LDAP and PG connections can be secured by SSL/TLS
|
2011-05-18 17:45:08 +04:00
|
|
|
|
|
|
|
== REQUIREMENTS:
|
|
|
|
|
2018-02-07 00:29:48 +03:00
|
|
|
* Ruby-2.0+, JRuby-1.2, Rubinius-1.2 or better
|
2011-07-14 12:15:45 +04:00
|
|
|
* LDAP-v3 server
|
2018-02-07 00:29:48 +03:00
|
|
|
* PostgreSQL-server v9.0+
|
2011-05-18 17:45:08 +04:00
|
|
|
|
|
|
|
== INSTALL:
|
|
|
|
|
2018-02-07 00:29:48 +03:00
|
|
|
Install Ruby:
|
2011-05-24 16:03:30 +04:00
|
|
|
* on Windows: http://rubyinstaller.org
|
2018-02-07 00:29:48 +03:00
|
|
|
* on Debian/Ubuntu: <tt>apt-get install ruby libpq-dev</tt>
|
2011-05-24 00:02:32 +04:00
|
|
|
|
2018-02-07 00:29:48 +03:00
|
|
|
Install pg-ldap-sync and required dependencies:
|
|
|
|
gem install pg-ldap-sync
|
2011-05-24 00:02:32 +04:00
|
|
|
|
2011-07-13 16:59:55 +04:00
|
|
|
=== Install from Git:
|
2011-05-24 00:02:32 +04:00
|
|
|
git clone https://github.com/larskanis/pg-ldap-sync.git
|
|
|
|
cd pg-ldap-sync
|
2018-02-07 00:29:48 +03:00
|
|
|
bundle
|
|
|
|
rake install
|
2011-05-24 00:02:32 +04:00
|
|
|
|
2011-07-13 16:59:55 +04:00
|
|
|
== USAGE:
|
|
|
|
|
2014-03-06 17:16:25 +04:00
|
|
|
Create a config file based on
|
|
|
|
{config/sample-config.yaml}[https://github.com/larskanis/pg-ldap-sync/blob/master/config/sample-config.yaml]
|
2016-01-13 18:45:40 +03:00
|
|
|
or even better
|
2014-03-06 17:16:25 +04:00
|
|
|
{config/sample-config2.yaml}[https://github.com/larskanis/pg-ldap-sync/blob/master/config/sample-config2.yaml]
|
|
|
|
|
2011-07-13 16:59:55 +04:00
|
|
|
Run in test-mode:
|
|
|
|
|
|
|
|
pg_ldap_sync -c my_config.yaml -vv -t
|
|
|
|
|
|
|
|
Run in modify-mode:
|
|
|
|
|
|
|
|
pg_ldap_sync -c my_config.yaml -vv
|
|
|
|
|
|
|
|
|
2011-05-24 15:54:53 +04:00
|
|
|
== TEST:
|
|
|
|
There is a small test suite in the <tt>test</tt> directory that runs
|
|
|
|
against an internal ruby-ldapserver and PostgreSQL server. Ensure gem
|
|
|
|
<tt>ruby-ldapserver</tt> is installed and <tt>pg_ctl</tt>, <tt>initdb</tt> and <tt>psql</tt>
|
|
|
|
commands are in the <tt>PATH</tt>. Then:
|
|
|
|
|
|
|
|
cd pg-ldap-sync
|
|
|
|
rake test
|
|
|
|
|
2011-07-13 16:59:55 +04:00
|
|
|
== ISSUES:
|
|
|
|
* There is currently no way to set certain user attributes in PG
|
|
|
|
based on individual attributes in LDAP (expiration date etc.)
|
|
|
|
|
2011-05-18 17:45:08 +04:00
|
|
|
|
2018-02-06 23:56:53 +03:00
|
|
|
== License
|
|
|
|
|
|
|
|
The gem is available as open source under the terms of the [MIT License](https://opensource.org/licenses/MIT).
|