LDAP-аутентификация
Доступ к кластеру Greengage DB можно контролировать с помощью LDAP-аутентификации. Вы можете использовать службу каталогов вашей организации, такую как Active Directory или 389 Directory Server, для аутентификации пользователей Greengage DB.
Эта статья описывает, как интегрировать ваш кластер Greengage DB со службой каталогов FreeIPA. Служба каталогов FreeIPA использует LDAP-сервер 389 DS.
Предварительные требования
Для демонстрации интеграции кластера Greengage DB с сервером FreeIPA используются следующие хосты и параметры домена IPA:
-
Мастер-хост: имя —
mdw.example.com
, FQDN —mdw.example.com
. -
Хост FreeIPA: имя —
ipa.example.com
, FQDN —ipa.example.com
, операционная система — RHEL или CentOS. -
Область (realm):
EXAMPLE.COM
.
Используйте имена хостов, полные доменные имена (FQDN) и имя области, соответствующие вашему окружению.
Настройка сервера FreeIPA
Войдите на хост FreeIPA под пользователем с правами суперпользователя:
$ ssh sampleuser@ipa.example.com
В этом примере имя пользователя — sampleuser
.
Установка библиотек FreeIPA
Для установки библиотек FreeIPA выполните следующую команду:
$ sudo yum install ipa-server
Настройка сервера FreeIPA
Выполните команду ниже, чтобы запустить настройку сервера FreeIPA в неинтерактивном режиме:
$ sudo ipa-server-install \
--unattended \
--hostname=ipa.example.com \
--domain=example.com \
--realm=EXAMPLE.COM \
--ds-password=87654321 \
--admin-password=12345678
Не рекомендуется указывать пароли в открытом виде при настройке сервера FreeIPA в неинтерактивном режиме. В качестве более безопасной альтернативы вы можете загружать пароли из переменных окружения.
Когда настройка сервера FreeIPA завершена, проверьте состояние сервисов с помощью команды ipactl status
:
$ sudo ipactl status
В частности, вывод должен показывать, что сервисы Directory
, krb5kdc
и kadmin
запущены:
Directory Service: RUNNING krb5kdc Service: RUNNING kadmin Service: RUNNING
Создание пользователя FreeIPA
Аутентификация в качестве администратора
Для выполнения административных действий автоматически создается пользователь admin
.
Выполните команду kinit
, чтобы аутентифицироваться под пользователем admin
:
$ kinit admin
Когда будет показано данное приглашение, введите пароль, заданный в параметре admin-password
во время настройки сервера FreeIPA:
Password for admin@EXAMPLE.COM:
Создание обычного пользователя
Создайте обычного пользователя FreeIPA с помощью команды ipa user-add
:
$ ipa user-add alice \
--first=Alice \
--last=Johnson \
--password
Введите пароль и нажмите Enter
, когда будут показаны эти приглашения:
Password: Enter Password again to verify:
Результат должен выглядеть следующим образом:
------------------ Added user "alice" ------------------ User login: alice First name: Alice Last name: Johnson Full name: Alice Johnson Display name: Alice Johnson Initials: AJ Home directory: /home/alice GECOS: Alice Johnson Login shell: /bin/sh Principal name: alice@EXAMPLE.COM Principal alias: alice@EXAMPLE.COM User password expiration: 20250109101949Z Email address: alice@example.com UID: 1389000001 GID: 1389000001 Password: True Member of groups: ipausers Kerberos keys available: True
Настройка мастера Greengage DB
Для настройки мастер-хоста Greengage DB войдите на него как gpadmin
:
$ ssh gpadmin@mdw.example.com
Создание ролей Greengage DB
Создайте роль ldap_users
в Greengage DB:
$ createuser ldap_users --no-login
Создайте пользователя alice
и добавьте его в группу ldap_users
:
$ createuser alice --role=ldap_users
Обратите внимание, что имя пользователя Greengage DB совпадает с именем пользователя FreeIPA.
Вы можете использовать утилиту pg-ldap-sync для автоматической синхронизации пользователей и групп LDAP с Greengage DB.
Настройка LDAP-аутентификации
-
Откройте файл pg_hba.conf для редактирования:
$ vi $MASTER_DATA_DIRECTORY/pg_hba.conf
-
Добавьте в файл следующую строку:
# connection-type database user address auth-method auth-options host postgres +ldap_users samenet ldap ldapserver=ipa.example.com ldapprefix="uid=" ldapsuffix=",cn=users,cn=accounts,dc=example,dc=com"
Эта конфигурация позволяет пользователям из группы
ldap_users
получить доступ к базе данныхpostgres
с использованием LDAP-аутентификации (auth-method установлен вldap
). Параметры LDAP-аутентификации указываются в полеauth-options
:-
ldapserver
— имя LDAP-сервера для подключения. -
ldapprefix
— строка, добавляемая перед именем пользователя при формировании DN для связывания. -
ldapsuffix
— строка, добавляемая после имени пользователя при формировании DN для связывания.
Вы можете найти все параметры LDAP-аутентификации в соответствующем разделе документации PostgreSQL: LDAP Authentication.
-
-
Перезагрузите конфигурацию с помощью
gpstop
, чтобы применить изменения:$ gpstop -u
Подключение к базе данных
В этом разделе описывается подключение к базе данных, защищенной аутентификацией LDAP, с использованием psql. Выполните описанные ниже шаги на мастер-хосте.
-
Подключитесь к базе данных
postgres
, созданной по умолчанию, под рольюalice
с помощьюpsql
:$ psql postgres -U alice -h mdw.example.com
-
Введите пароль пользователя FreeIPA
alice
и нажмитеEnter
:Password for user alice:
Результат должен выглядеть следующим образом:
psql (9.4.26) Type "help" for help. postgres=>
-
Проверьте имя текущего пользователя:
SELECT current_user;
Команда должна вернуть следующее:
current_user --------------- alice
Примеры
Ниже приведены дополнительные примеры настройки LDAP-аутентификации в файле pg_hba.conf:
-
ldapbasedn
задает корневую папку DN для начала поиска пользователя при аутентификации:# connection-type database user address auth-method auth-options host postgres +ldap_users samenet ldap ldapserver=ipa.example.com ldapbasedn="cn=users,cn=accounts,dc=example,dc=com"
-
ldapbinddn
иldapbindpasswd
задают имя и пароль пользователя, используемого для связи с LDAP-каталогом:# connection-type database user address auth-method auth-options host postgres +ldap_users samenet ldap ldapserver=ipa.example.com ldapbasedn="cn=users,cn=accounts,dc=example,dc=com" ldapbinddn="uid=admin,cn=users,cn=accounts,dc=example,dc=com" ldapbindpasswd="12345678"
-
ldaptls
включает TLS-шифрование для соединения мастера Greengage DB с LDAP-сервером:# connection-type database user address auth-method auth-options host postgres +ldap_users samenet ldap ldaptls=1 ldapserver=ipa.example.com ldapbasedn="cn=users,cn=accounts,dc=example,dc=com"
-
ldapurl
устанавливает все опции LDAP-аутентификации, используя URL:# connection-type database user address auth-method auth-options host postgres +ldap_users samenet ldap ldapurl="ldap://ipa.example.com/cn=users,cn=accounts,dc=example,dc=com?uid?sub"