PAM-аутентификация
Подключаемые модули аутентификации (Pluggable Authentication Modules, PAM) предоставляют приложениям единый интерфейс для работы с различными механизмами аутентификации. Вместо прямого взаимодействия с каждой системой аутентификации приложение обращается к PAM для проверки учетных данных пользователей. Это позволяет изменять и комбинировать методы аутентификации без необходимости вносить изменения в код приложения.
Доступом к кластеру Greengage DB можно управлять с помощью PAM, интегрируя его с внешней системой аутентификации. Распространенным вариантом является использование каталога LDAP, например сервера FreeIPA, что позволяет Greengage DB работать с существующими учетными записями организации. В этой статье описывается процесс настройки LDAP-аутентификации через PAM в Greengage DB.
Предварительные требования
Для демонстрации интеграции кластера Greengage DB с сервером FreeIPA используются следующие хосты и параметры домена IPA:
-
Мастер-хост: FQDN —
mdw.example.com, операционная система — Ubuntu. -
Хост FreeIPA: имя —
ipa.example.com, FQDN —ipa.example.com, операционная система — RHEL или CentOS. -
Область (realm):
EXAMPLE.COM.
Используйте имена хостов, полные доменные имена (FQDN) и имя области, соответствующие вашему окружению.
Разные операционные системы предоставляют разные модули аутентификации LDAP для PAM.
В этой статье описано, как настроить LDAP-аутентификацию через PAM на мастер-хосте Greengage DB, работающем на Ubuntu, с помощью пакета libpam-ldapd.
В операционных системах RHEL и CentOS для этих целей обычно используется служба sssd.
Настройка сервера 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
Установка пакета PAM для LDAP
-
Войдите на мастер-хост под пользователем с правами
sudo. -
Обновите индекс пакетов в системе:
$ sudo apt update -
Установите пакет
libpam-ldapd:$ sudo apt install libpam-ldapd -
Во время установки отображается несколько диалоговых окон настройки. Укажите следующие обязательные параметры:
-
LDAP server URI — URI LDAP-сервера, например:
ldap://ipa.example.com/. -
LDAP server search base — базовый DN для LDAP-запросов, например:
dc=example,dc=com.
Во всех остальных диалоговых окнах оставьте значения по умолчанию.
-
Настройка nslcd
Демон nslcd устанавливается вместе с пакетом libpam-ldapd и обеспечивает службы аутентификации NSS и PAM с использованием LDAP.
Настройте nslcd для подключения к вашему LDAP-серверу, чтобы PAM мог аутентифицировать пользователей Greengage DB.
-
Откройте файл конфигурации /etc/nslcd.conf для редактирования:
$ sudo vi /etc/nslcd.confПример конфигурации показан ниже:
# ... # The location at which the LDAP server(s) should be reachable. uri ldap://ipa.example.com/ # The search base that will be used for all queries. base dc=example,dc=com # ...Значения параметров
uriиbaseустанавливаются автоматически на основе информации, указанной при установкеlibpam-ldapd. -
Если вы изменили файл, сохраните изменения и перезапустите службу
nslcd:$ sudo systemctl restart nslcd
Создание файла конфигурации PAM-службы
После настройки nslcd создайте файл /etc/pam.d/greengagedb, чтобы настроить службу PAM для Greengage DB.
Это позволит выполнять аутентификацию пользователей через LDAP с использованием PAM.
-
Создайте файл /etc/pam.d/greengagedb:
$ sudo vi /etc/pam.d/greengagedb -
Добавьте в файл следующие строки:
auth required pam_ldap.so account sufficient pam_ldap.so
Сохраните и закройте файл.
Создание ролей Greengage DB
-
Переключитесь на пользователя
gpadmin:$ sudo su - gpadmin -
Создайте роль
ldap_usersв Greengage DB:$ createuser ldap_users --no-login -
Создайте пользователя
aliceи добавьте его в группуldap_users:$ createuser alice --role=ldap_usersОбратите внимание, что имя пользователя Greengage DB должно совпадать с именем пользователя FreeIPA.
Настройка Greengage DB для использования PAM-аутентификации
-
Откройте файл pg_hba.conf для редактирования:
$ vi $MASTER_DATA_DIRECTORY/pg_hba.conf -
Добавьте в файл следующую строку:
# connection-type database user address auth-method auth-options host postgres +ldap_users samenet pam pamservice=greengagedbЭта конфигурация позволяет пользователям из группы
ldap_usersполучать доступ к базе данныхpostgres, используя PAM-аутентификацию (auth-method установлен вpam). Параметрpamserviceопределяет PAM-службу, которую будет использовать Greengage DB; она была создана ранее в файле /etc/pam.d/greengagedb. -
Перезагрузите конфигурацию, чтобы применить изменения:
$ gpstop -u
Подключение к базе данных
В этом разделе описывается подключение к базе данных, защищенной PAM-аутентификацией, с использованием 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